グラデーションする関数

//b=最初の色(#rrggbb)、a=最後の色。 function(i){ 0〜1 の内 i の位置の色"r,g,b"を返す関数 }
// "rgb(r,g,b)" の組を渡すと "rgb(r,g,b)" で返す
function gra_rgb(b,a){ return gra(b,a,parse_rgb,build_rgb) }
// "#rrggbb" の組を渡すと "#rrggbb" で返す
function gra_hexcolor(b,a){ return gra(b,a,parse_hexcolor,build_hexcolor) }

// グラデーションする関数を作る。
function gra(b,a,parser,builder){
  var d = mop.apply(this,[b,a].map(parser));
  return function(i){ return builder([d[0](i),d[1](i),d[2](i)]); }
}

//0〜1 の間の i を与えると i=0(b[n])←→i=1(a[n])の整数配列を返す関数の行列を返す。aとbは数値行列
function mop(b,a){ return b.map(function(x,v){ var s=a[v]-x; return function(i){return Math.ceil(x+s*i) }}) }
// "rgb(r,g,b)" を [r,g,b]に
function parse_rgb(c){ var r=/rgb\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)/(c); return r&&r.shift()&&r.map(function(i){return parseInt(i)}) }
// "#rrggbb" を [r,g,b]に
function parse_hexcolor(c){ return [0,1,2].map(function(j){ return parseInt(c[j*2+1]+c[j*2+2],16) }) }
// [r,g,b] → rgb(r,g,b)
function build_rgb(c){ return "rgb("+c+")" }
// [r,g,b] → "#rrggbb"
function build_hexcolor(c){ return "#"+c.map(hex2).join("") }
// 二桁の16進数にする (0f とか)
function hex2(i){return ((i<16)?"0":"")+i.toString(16)}
// 配列に順番に f を適用して返す
Array.prototype.map=function(f){
  var ret=[];
  for(var i=0;i<this.length;i++) ret.push(f(this[i],i,this));
  return ret;
}

えーこれを使うとですね

document.write("<br>")
graF = gra_hexcolor('#FF0000','#11FFFF');

// '#FF0011' 〜 '#11FFFF'へ等間隔に16段階で変化する
for(i=0;i<16;i++){
  document.write("<font color='"+graF(i/15)+"'>■</font>")
}
// '#FF0011' 〜 '#11FFFF'へまるーく16段階で変化する
document.write("<br>")
for(i=0;i<16;i++){
  document.write("<font color='"+graF(Math.sin(i*Math.PI/15))+"'>■</font>")
}
// '#FF0011' 〜 '#11FFFF'へまるーく8段階で変化する
document.write("<br>")
for(i=0;i<8;i++){
  document.write("<font color='"+graF(Math.sin(i*Math.PI/7))+"'>■</font>")
}

function write_gra_string(c1,c2,str,f){
  var g = gra_hexcolor(c1,c2);
  for(i=0;i<str.length;i++){
    document.write("<font color='"+g(f(i,str.length-1))+"'>"+str[i]+"</font>");
  }
}
document.write("<br>")
write_gra_string('#FF0000','#11FFFF',"ようこそnazokingのホームページへ",function(i,l){ return i/l })
document.write("<br>")
write_gra_string('#11FFFF','#000000',"ようこそnazokingのホームページへ",function(i,l){ return Math.sin(i*Math.PI/l) })




nazoking
nazoking

とか作り放題なわけで、多彩な効果が柔軟に!千客万来