๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
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>      

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€