| 文字色 | ||||||||||||||||||||
|
|
|
||||||||||||||||||
| dec | dec | dec | ||||||||||||||||||
| rgb | ||||||||||||||||||||
|
文字色と背景色 文字の色は背景色によっても |
||||||||||||||||||||
| rgb | ||||||||||||||||||||
| dec | dec | dec | ||||||||||||||||||
|
|
|
||||||||||||||||||
| 背景色 | ||||||||||||||||||||
赤(R)、緑(G)、青(B)の強さを+-ボタンで増減します。はじめは文字は全部0、背景は全部255です。
それぞれ 0〜255 の範囲で変化します。51は255/5、17は255/15で255を等分する数です。
「RGBによる色の表し方」に文字色の変更も加えたものです。
ウェブページの色指定に実際に使うことを想定して、カラーコードを目立たせてあります。
背景色関係はbx...文字色関係はch...またはc..となっています。全部idにより場所を特定して色とテキストを入れているだけなので、プログラム自体は簡単になっています。
window.onload = function() {
init();
boxCol('red',0);
chrCol('red',0);
}
function init() {
d33 = 51;
d11 = 17;
d1 = 1;
var colorinit = 255;
rr = colorinit;
gg = colorinit;
bb = colorinit;
var chainit = 0;
crr = chainit;
cgg = chainit;
cbb = chainit;
bxsum=document.getElementById("bxsum");
bxred=document.getElementById("bxred");
bxgrn=document.getElementById("bxgrn");
bxblu=document.getElementById("bxblu");
bxhex=document.getElementById("bxhex");
chred=document.getElementById("chred");
chgrn=document.getElementById("chgrn");
chblu=document.getElementById("chblu");
chhex=document.getElementById("chhex");
}
function boxCol(col,dx) {
if ( col == 'red' ){
rr += dx;
if ( rr>255 ) rr=255;
if ( 0>rr ) rr=0;
}else if( col == 'grn' ){
gg += dx;
if ( gg>255 ) gg=255;
if ( 0>gg ) gg=0;
}else if( col == 'blu' ){
bb += dx;
if ( bb>255 ) bb=255;
if ( 0>bb ) bb=0;
}
bxred.style.background = 'rgb('+rr+','+ 0 +','+ 0 +')';
bxgrn.style.background = 'rgb('+ 0 +','+gg+','+ 0 +')';
bxblu.style.background = 'rgb('+ 0 +','+ 0 +','+bb+')';
bxred.firstChild.nodeValue = rr;
bxgrn.firstChild.nodeValue = gg;
bxblu.firstChild.nodeValue = bb;
bxred.style.color = "#fff";
bxgrn.style.color = (gg>204)?"#000":"#fff";
bxblu.style.color = "#fff";
bxhex.firstChild.nodeValue = "#"+toHex(rr)+toHex(gg)+toHex(bb);
bxsum.style.background = 'rgb('+rr+','+gg+','+bb+')';
}
function toHex(num) {
var s = ('0'+num.toString(16)).slice(-2) ;
return s;
}
function chrCol(col,dx) {
if ( col == 'red' ){
crr += dx;
if ( crr>255 ) crr=255;
if ( 0>crr ) crr=0;
}else if( col == 'grn' ){
cgg += dx;
if ( cgg>255 ) cgg=255;
if ( 0>cgg ) cgg=0;
}else if( col == 'blu' ){
cbb += dx;
if ( cbb>255 ) cbb=255;
if ( 0>cbb ) cbb=0;
}
chred.style.background = 'rgb('+crr+','+ 0 +','+ 0 +')';
chgrn.style.background = 'rgb('+ 0 +','+cgg+','+ 0 +')';
chblu.style.background = 'rgb('+ 0 +','+ 0 +','+cbb+')';
chred.firstChild.nodeValue = crr;
chgrn.firstChild.nodeValue = cgg;
chblu.firstChild.nodeValue = cbb;
chred.style.color = "#fff";
chgrn.style.color = (cgg>204)?"#000":"#fff";
chblu.style.color = "#fff";
chhex.firstChild.nodeValue = "#"+toHex(crr)+toHex(cgg)+toHex(cbb);
bxsum.style.color = 'rgb('+crr+','+cgg+','+cbb+')';
}
<table id="boxcolor">
<tr>
<td colspan="3" class="topsum">文字色</td>
</tr>
<tr>
<td class="red">
<table class="inner">
<tr>
<td class="updn" onclick="chrCol('red',d33)">+51</td>
<td class="updn" onclick="chrCol('red',d11)">+17</td>
<td class="updn" onclick="chrCol('red',d1)">+1</td>
</tr>
<tr>
<td class="updn" onclick="chrCol('red',-d33)">-51</td>
<td class="updn" onclick="chrCol('red',-d11)">-17</td>
<td class="updn" onclick="chrCol('red',-d1)">-1</td>
</tr>
</table>
</td>
<td class="grn">
<table class="inner">
<tr>
<td class="updn" onclick="chrCol('grn',d33)">+51</td>
<td class="updn" onclick="chrCol('grn',d11)">+17</td>
<td class="updn" onclick="chrCol('grn',d1)">+1</td>
</tr>
<tr>
<td class="updn" onclick="chrCol('grn',-d33)">-51</td>
<td class="updn" onclick="chrCol('grn',-d11)">-17</td>
<td class="updn" onclick="chrCol('grn',-d1)">-1</td>
</tr>
</table>
</td>
<td class="blu">
<table class="inner">
<tr>
<td class="updn" onclick="chrCol('blu',d33)">+51</td>
<td class="updn" onclick="chrCol('blu',d11)">+17</td>
<td class="updn" onclick="chrCol('blu',d1)">+1</td>
</tr>
<tr>
<td class="updn" onclick="chrCol('blu',-d33)">-51</td>
<td class="updn" onclick="chrCol('blu',-d11)">-17</td>
<td class="updn" onclick="chrCol('blu',-d1)">-1</td>
</tr>
</table>
</td>
</tr>
<tr>
<td id="chred" class="dspCol">dec</td>
<td id="chgrn" class="dspCol">dec</td>
<td id="chblu" class="dspCol">dec</td>
</tr>
<tr>
<td colspan="3" class="topsum" id="chhex">rgb</td>
</tr>
<tr>
<td colspan="3" id="bxsum" class="dspCol3">
<p><b>文字色と背景色</b></p>
<p>文字の色は背景色によっても<br>印象が異なります。<br>
色の違いだけでなく明暗差も必要です。</p>
</td>
</tr>
<tr>
<td colspan="3" class="topsum" id="bxhex">rgb</td>
</tr>
<tr>
<td id="bxred" class="dspCol">dec</td>
<td id="bxgrn" class="dspCol">dec</td>
<td id="bxblu" class="dspCol">dec</td>
</tr>
<tr>
<td class="red">
<table class="inner">
<tr>
<td class="updn" onclick="boxCol('red',d33)">+51</td>
<td class="updn" onclick="boxCol('red',d11)">+17</td>
<td class="updn" onclick="boxCol('red',d1)">+1</td>
</tr>
<tr>
<td class="updn" onclick="boxCol('red',-d33)">-51</td>
<td class="updn" onclick="boxCol('red',-d11)">-17</td>
<td class="updn" onclick="boxCol('red',-d1)">-1</td>
</tr>
</table>
</td>
<td class="grn">
<table class="inner">
<tr>
<td class="updn" onclick="boxCol('grn',d33)">+51</td>
<td class="updn" onclick="boxCol('grn',d11)">+17</td>
<td class="updn" onclick="boxCol('grn',d1)">+1</td>
</tr>
<tr>
<td class="updn" onclick="boxCol('grn',-d33)">-51</td>
<td class="updn" onclick="boxCol('grn',-d11)">-17</td>
<td class="updn" onclick="boxCol('grn',-d1)">-1</td>
</tr>
</table>
</td>
<td class="blu">
<table class="inner">
<tr>
<td class="updn" onclick="boxCol('blu',d33)">+51</td>
<td class="updn" onclick="boxCol('blu',d11)">+17</td>
<td class="updn" onclick="boxCol('blu',d1)">+1</td>
</tr>
<tr>
<td class="updn" onclick="boxCol('blu',-d33)">-51</td>
<td class="updn" onclick="boxCol('blu',-d11)">-17</td>
<td class="updn" onclick="boxCol('blu',-d1)">-1</td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="3" class="topsum">背景色</td>
</tr>
</table>
table{
margin:1% 0;
}
td {
border:solid 1px #999;
text-align:center;
font-family:monospace;
}
td.topsum{
border:solid 1px #000000;
background-color:#f0f0f0;
color:#000000;
}
td.dspCol{
width:30%;
padding:2% 0;
}
td.dspCol3{
padding:2em 1em;
}
td.red{
border:solid 1px #ff0000;
background-color: #ff9999;
}
td.grn{
border:solid 1px #009900;
background-color: #80ff80;
}
td.blu{
border:solid 1px #0000ff;
background-color: #9999ff;
}
td[onclick] {
cursor:pointer;
margin: 0;
padding: 1px 6px;
border-style: solid;
border-top-color: #f0f0f0;
border-left-color: #f0f0f0;
border-bottom-color: #666600;
border-right-color: #666600;
border-width: 1px;
color: #000000;
}
td[onclick]:hover {
background: #ffff99;
color: #ff0000;
}
td[onclick]:active {
border-style: inset;
background: #0000ff;
color: #ffffcc;
}
table.inner{
border-collapse:separate;
border-spacing: 2px;
border:none;
background-color: transparent;
}
td.updn {
font-size:90%;
vertical-align:middle;
}
table.inner{
margin:0;
padding:0;
width:100%;
}
td.btmred{
border:solid 1px #ff0000;
background-color:#ff0000;
color:#ffffff;
}
td.btmgrn{
border:solid 1px #009900;
background-color:#00ff00;
color:#000000;
}
td.btmblu{
border:solid 1px #0000ff;
background-color:#0000ff;
color:#ffffff;
}
td p {
text-align:left;
}
td b{
font-weight:bold;
font-size:140%;
}