๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Lect & Tip/javascript, jQuery

[javascript] ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ rgb ์ƒ‰์ƒํ‘œ ์ถœ๋ ฅํ•˜๊ธฐ html rgb์ƒ‰์ƒ ์ฝ”๋“œํ‘œ ๋งŒ๋“ค๊ธฐ

by ๋‚ฏ์„ ๊ณต๊ฐ„2 2019. 7. 12.

๋ชฉ์ฐจ

    โœˆ[javascript] ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ rgb ์ƒ‰์ƒํ‘œ ์ถœ๋ ฅํ•˜๊ธฐ html rgb์ƒ‰์ƒ ์ฝ”๋“œํ‘œ ๋งŒ๋“ค๊ธฐ

    RGB์ƒ‰์ƒ ์ฝ”๋“œ๋Š” rgb(255,255,255)๋‚˜ # FF FF FF ์™€ ๊ฐ™์ด ํ”ํžˆ ํ‘œํ˜„๋˜๋Š”๋ฐ, ์‚ฌ์‹ค์€ ์ปดํ“จํ„ฐ๋Š” 2์ง„์ˆ˜๋งŒ ์ดํ•ดํ•œ๋‹ค. 

    FF๋“  255๋“  ์‚ฌ๋žŒ์ด ๋ณด๊ธฐ ํŽธํ•˜๋ผ๊ณ  ํ‘œํ˜„ํ•œ ํ˜•์‹์ด๋‹ค. ์•„๋ฌดํŠผ ์ปดํ“จํ„ฐ๋Š” ์ด ์ฝ”๋“œ๋ฅผ ์˜ฅํ…Ÿ[Octet]๋‹จ์œ„๋กœ ๋Š์–ด์„œ ์ดํ•ดํ•œ๋‹ค. 

    ์˜ฅํ…Ÿ์ด๋ž€?

    ์˜ฅํ…Ÿ์ด๋ž€ 8๊ฐœ์˜ ํ•œ ๋ฌถ์Œ์ด๋‹ค. ๋‹ฌ๋ฆฌํ‘œํ˜„ํ•˜์ž๋ฉด ๋ฐ”์ดํŠธ์ฏค ๋˜๊ฒ ์ง€๋งŒ ์กฐ๊ธˆ์€ ๋‰˜์•™์Šค๊ฐ€ ๋‹ค๋ฅธ ๊ฐœ๋…์ด๋‹ค. 


    ์ฒซ๋ฒˆ์งธ ์˜ฅํ…Ÿ์€ R, ์ฆ‰ RED๋ฅผ ๋œปํ•˜๊ณ , 
    ๋‘๋ฒˆ์งธ ์˜ฅํ…Ÿ์€ G, ์ฆ‰ Green์„ ๋œปํ•˜๊ณ 
    ์„ธ๋ฒˆ์งธ ์˜ฅํ…Ÿ์€ B, ์ฆ‰ Blue๋ฅผ ๋œปํ•œ๋‹ค. 

    ์ด ๊ฐ ์˜ฅํ…Ÿ์—์„œ ์ด ์„ธ๊ฐ€์ง€ ์ƒ‰์ƒ์˜ ๋น›์˜ ์ •๋„๋ฅผ ํ‘œํ˜„ํ•œ๋‹ค. 

    0์ด๋ฉด ๋ถˆ์ด ๊บผ์ ธ์žˆ์œผ๋‹ˆ ์–ด๋‘์šด๊ฒƒ์ด ๋˜๊ณ , ๋ชจ๋‘ 1๋กœ ์ฑ„์›Œ์ง€๋ฉด ๊ทธ๋งŒํผ ๋ฐ์€๊ฒŒ ๋œ๋‹ค. 

    ๋”ฐ๋ผ์„œ #000000์€ ๊ฒ€์€์ƒ‰, #FFFFFF๋Š” ํฐ์ƒ‰์ด ๋œ๋‹ค. (๋ฌผ๊ฐ๊ณผ ๋ฐ˜๋Œ€๋‹ค) 

    ์•„๋ฌดํŠผ ์ด๋Ÿฌํ•œ ๊ฐœ๋…์œผ๋กœ ์šฐ๋ฆฌ๋Š” ๊ฐ ์˜ฅํ…Ÿ์˜ ๋น›์˜ ์ •๋„๋ฅผ ์กฐ์ •ํ•ด ์คŒ์œผ๋กœ์จ ์„ธ์ƒ์˜ ๋ชจ๋“  ์ƒ‰์— ๊ฐ€๊นŒ์šด ์ƒ‰์„ ํ‘œํ˜„ํ•˜๊ฒŒ ๋œ๋‹ค. 

    ๊ทธ๋ž˜๋ดค์ž 256๊ฐ€์ง€๋ผ๊ณ  ์šฐ์Šต๊ฒŒ ๋ณผ์ง€ ๋ชฐ๋ผ๋„ ์ด๊ฒŒ ๋งŒ๋งŒ์น˜ ์•Š๋‹ค. 

    256๊ฐ€์ง€ 3๊ฐ€์ง€์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” 256^3=256*256*256=16,777,216๊ฐ€์ง€์ด๋‹ค. 

    ์ด๊ฑธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๋ชจ๋‘ ํ‘œํ˜„ํ•ด๋‚ด๊ธฐ์—๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์—ฐ์‚ฐ๋ฒ”์œ„๋ฅผ ์ดˆ๊ณผํ•œ๋‹ค. 

    ๊ทธ๋Ÿฌ๋‹ˆ ์ผ๋‹จ ์›๋ฆฌ๋ฅผ ํŒŒ์•…ํ•˜๊ณ ์ž ํ‘๋ฐฑ ์ƒ‰์ƒํ‘œ๋งŒ ๋จผ์ € ๋งŒ๋“ค์–ด ๋ณด์ž. 

    <script>
    
    var r,g,b;
    
    var colorT;
    
    for(var k=0;k<256;k=k+4)
    
    {
    
    r=k.toString(16);
    
    if(r.length < 2) r = "0" + r;
    
    g=k.toString(16);
    
    if(g.length < 2) g = "0" + g;
    
    b=k.toString(16);
    
    if(b.length < 2) b = "0" + b;
    
    colorT=r+g+b;
    
    document.write("<div style=\"float:left; font-weight:bold;
    
    text-align:center; width:120px;
    
    height:20px; background-color:#"+colorT+";\">
    
    ");
    
    document.write("#"+colorT);
    
    document.write("</div>
    
    ");
    
    }
    
    </script>
    <div style="TEXT-ALIGN: center; WIDTH: 120px; FLOAT: left; HEIGHT: 20px; FONT-WEIGHT: bold">#ffffff</div>        

    ์ด ์†Œ์Šค์ƒ์—์„œ ๊ฐ€์žฅ ํ•ต์‹ฌ์€

    r=k.toString(16); if(r.length < 2) r = "0" + r;

    ์œ„์˜ ๋‘์ค„์ด๋‹ค. r์ด๋ผ๋Š” ๋ณ€์ˆ˜์— k์‹ญ์ง„์ˆ˜ ๊ฐ’์„ 16์ง„์ˆ˜๋กœ ๋ณ€ํ™˜์‹œ์ผœ์„œ ๋Œ€์ž…ํ•˜๋ผ๋Š” ๋œป์ด๋‹ค. 

    ๊ทธ๋ ‡๊ฒŒ g์™€ b๋ณ€์ˆ˜๋„ ์–ป์–ด ๋‚ด์–ด ๋ฌธ์ž์—ด๋กœ์จ ํ•ฉ์ณ์„œ rgb์ƒ‰์‚ญ์ฝ”๋“œ๋ฅผ ์–ป์–ด ๋‚ด๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ํ•ต์‹ฌ์ด๋‹ค.

    ์šฐ๋ฆฌ๋ˆˆ์€ ์€๊ทผํžˆ ์ข‹์€๋“ฏ ํ•˜์ง€๋งŒ ์‚ฌ์‹ค ๊ทธ๋‹ค์ง€ ์ข‹์ง€๋„ ๋ชปํ•˜๋‹ค. 

    256๋‹จ๊ณ„์˜ ์ƒ‰์ƒ์„ ๋ชจ๋‘ ์ถœ๋ ฅํ•ด์„œ ๋ด๋ด์•ผ ๊ทธ๋‹ค์ง€ ๋‹จ๊ณ„์„ฑ์ด ๋Š๊ปด์ง€์ง€ ๋ชปํ•˜๊ณ  ๋งˆ์น˜ ๊ทธ๋ผ๋ฐ์ด์…˜์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค. 

    ๊ทธ๋ž˜์„œ ์ผ๋ถ€๋Ÿฌ +4์”ฉ ์ฆ๊ฐ€ํ•˜๋„๋ก ํ•ด๋ดค๋‹ค. +4์”ฉ ์ฆ๊ฐ€ํ•˜๋ฉด ๋งˆ์ง€๋ง‰์— FFFFF๋ฅผ ํ‘œํ˜„ํ•˜์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— html์ฝ”๋“œ๋กœ ๋งˆ์ง€๋ง‰ ํฐ์ƒ‰์„ ์žฅ์‹ํ•ด์ฃผ์—ˆ๋‹ค. 

    ๋ˆˆ์น˜ ์ฑ˜๊ฒ ์ง€๋งŒ, R,G,B๊ฐ€ ๊ณ ๋ฃจ ์ฆ๊ฐ€ํ•ด์•ผ ๋ฌด์ฑ„์ƒ‰ ๊ณ„์—ด์˜ ์ƒ‰์ƒํ‘œ๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค. 

    ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— for๋ฌธ์„ ํ•˜๋‚˜๋งŒ ์จ๋„ ๋๋‹ค. 

    ํ•˜์ง€๋งŒ ์ „์ฒด ์นผ๋ผ๋ฅผ ํ‘œํ˜„ํ•˜๋ ค๋ฉด ์„ธ๊ฐœ์˜ ์˜ฅํ…Ÿ์ด ๋ชจ๋‘ ๊ฐ๊ฐ ๋”ฐ๋กœ ํ‘œํ˜„๋˜์–ด์•ผ ํ•œ๋‹ค. 

    ๊ทธ๋Ÿฐ rgb์ƒ‰์ƒํ‘œ๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด 3์ค‘ for๋ฌธ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. 

    ์ฒ˜์Œ์— ๊ณ„์‚ฐ์„ ํ•ด๋ณด์•˜์ง€๋งŒ, 256*256*256์˜ rgb ์ƒ‰์ƒํ‘œ ์—ฐ์‚ฐ์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ๋Š” ๋ฌด๋ฆฌ๋‹ค. 

    ๋ฌผ๋ก  ๋ฐฉ๋ฒ•์ด ์•„์ฃผ ์—†๋Š” ๊ฒƒ๋„ ์•„๋‹ˆ์ง€๋งŒ...์ด๋Ÿฐ rgb ์ƒ‰์ƒํ‘œ๋ฅผ ๋งŒ๋“ค์–ด ๋‚ด๊ธฐ๊ฐ€ ๋ฌด๋ฆฌ๋‹ค. 

    ๋งŒ๋“ค์–ด๋‚ด๋ดค์ž...์Šคํฌ๋กค ํ•˜๋‹ค๋ณด๋ฉด ํ•˜๋ฃจํ•ด๊ฐ€ ์ €๋ฌผ์ง€ ๋ชจ๋ฅธ๋‹ค.

    <script>
    
    var r,g,b;
    
    var colorT;
    
    for(var i=0;i<256;i=i++)
    
    {
    
    for(var j=0;j<256;j=j++)
    
    {
    
    for(var k=0;k<256;k=k++)
    
    {
    
    r=i.toString(16);
    
    if(r.length < 2) r = "0" + r;
    
    g=j.toString(16);
    
    if(g.length < 2) g = "0" + g;
    
    b=k.toString(16);
    
    if(b.length < 2) b = "0" + b;
    
    colorT=r+g+b;
    
    document.write("<div style=\"float:left; font-weight:bold;
    
    text-align:center; width:120px;
    
    height:20px; background-color:#"+colorT+";\">
    
    ");
    
    document.write("#"+colorT);
    
    document.write("</div>
    
    ");
    
    }
    
    }
    
    }
    
    </script>

    ์œ„์™€ ๊ฐ™์ด ์ฝ”๋”ฉํ•ด์„œ ๋Œ๋ ค๋ณด๋ฉด ์™ ๋งŒํ•˜๋ฉด ์—๋Ÿฌ๊ฐ€ ๋œฐ ๊ฒƒ์ด๋‹ค. 

    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ๋Š” ๋ฒ„๊ฒ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 

    ๊ฐ for๋ฌธ์—์„œ ๋Œ€๋žต +1์”ฉ ์ฆ๊ฐ€์‹œํ‚ฌ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ +25์ •๋„์”ฉ์€ ํ•ด์ค˜์•ผ ๊ฒจ์šฐ ์ถœ๋ ฅ๋ฌผ์ด ๋งŒ๋“ค์–ด์ง„๋‹ค. 

    ๊ทธ๊ฒƒ๋„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ฐธ์•„์ค„๋งŒํผ์˜ ์‹œ๊ฐ„์„ ์ถฉ๋ถ„ํžˆ ๋‹ค ์“ฐ๊ณ  ๋ง์ด๋‹ค. 

    ๊ทธ๋ ‡๋‹ค๊ณ  ์ผ๋ฅ ์ ์œผ๋กœ +25๋ฅผ ํ•˜๋ฉด ๊ต‰์žฅํžˆ ๋‚œํ•ดํ•œ ๊ทธ๋ฆผ์„ ๋ณด๊ฒŒ ๋ ์ˆ˜๋„ ์žˆ๋‹ค. 

    ์ ์ ˆํžˆ ์กฐ์ •์„ ํ•˜๋ฉด ์˜ˆ์œ ์ƒ‰์ƒํ‘œ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

    ๋‹ค์Œ์— ์‹œ๊ฐ„์ด ๋˜๋ฉด

     

    ์š”๋Ÿฐ ์—๋””ํ„ฐ์ƒ์— ๋†“์ด๋Š” ํŒ”๋ ›ํŠธ๋ฅผ ๊ทธ๋ฆฌ๋Š” ๋ฒ•์„ ์„ค๋ช…ํ•  ์˜ˆ์ •^^;

    <div style="WIDTH: 700px; HEIGHT: auto">
    
    <script>
    
    var r,g,b;
    
    var colorT;
    
    for(var k=0;k<256;k=k+4)
    
    {
    
    r=k.toString(16);
    
    if(r.length < 2) r = "0" + r;
    
    g=k.toString(16);
    
    if(g.length < 2) g = "0" + g;
    
    b=k.toString(16);
    
    if(b.length < 2) b = "0" + b;
    
    colorT=r+g+b;
    
    document.write("<div style=\"float:left; font-weight:bold;
    
    text-align:center; width:120px;
    
    height:20px; background-color:#"+colorT+";\">
    
    ");
    
    document.write("#"+colorT);
    
    document.write("</div>
    
    ");
    
    }
    
    </script>        
    
    <div style="TEXT-ALIGN: center; WIDTH: 120px; FLOAT: left; HEIGHT: 20px; FONT-WEIGHT: bold">#ffffff</div>        
    
       
    
    <script>
    
    var r,g,b;
    
    var colorT;
    
    for(var i=0;i<256;i=i+25)
    
    {
    
    for(var j=0;j<256;j=j+16)
    
    {
    
    for(var k=0;k<256;k=k+18)
    
    {
    
    r=i.toString(16);
    
    if(r.length < 2) r = "0" + r;
    
    g=j.toString(16);
    
    if(g.length < 2) g = "0" + g;
    
    b=k.toString(16);
    
    if(b.length < 2) b = "0" + b;
    
    colorT=r+g+b;
    
    document.write("<div style=\"float:left; font-weight:bold;
    
    text-align:center; width:120px;
    
    height:20px; background-color:#"+colorT+";\">
    
    ");
    
    document.write("#"+colorT);
    
    document.write("</div>
    
    ");
    
    }
    
    }
    
    }
    
    </script>        
    
       
    
    <script>
    
    var r,g,b;
    
    var colorT;
    
    for(var i=5;i<256;i=i+25)
    
    {
    
    for(var j=0;j<256;j=j+16)
    
    {
    
    for(var k=0;k<256;k=k+18)
    
    {
    
       
    
    r=i.toString(16);
    
    if(r.length < 2) r = "0" + r;
    
    g=j.toString(16);
    
    if(g.length < 2) g = "0" + g;
    
    b=k.toString(16);
    
    if(b.length < 2) b = "0" + b;
    
    colorT=r+g+b;
    
    document.write("<div style=\"float:left; font-weight:bold;
    
    text-align:center; width:120px;
    
    height:20px; background-color:#"+colorT+";\">
    
    ");
    
    document.write("#"+colorT);
    
    document.write("</div>
    
    ");
    
    }
    
    }
    
    }
    
    </script>        
    
    </div>      

     

    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€