JavaScript
テキスト動的グレースケール化2015/06/23
テキストの色をグレースケールで動的に変化させてみた
dynamic-grayscale-2.jsを読み込むと、dynamic-grayscale-2クラスの付いたタグ要素のテキストの色を一定時間ごとに変化させる
輝度の増減にはcos関数を利用
$(function(){
// 初期化
var dgss = $(".dynamic-grayscale-2"); // dynamic-grayscale-2クラスの要素を取得
var spans = []; // span要素群を初期化
for (var i = 0; i < dgss.length; i++) { // dynamic-grayscale-2クラスの要素ごとに
var str = $(dgss[i]).text(); // テキストを取得
$(dgss[i]).text(""); // テキストを削除
spans[i] = []; // span要素群を作成
for (var j = 0; j < str.length; j++) { // テキストを1文字ずつ
var span = $("<span>"); // span要素を作成
span.text(str[j]); // テキストを設定
$(dgss[i]).append(span); // span要素を追加
spans[i][j] = span; // spansに格納
}
}
var cvt = Math.PI/180; // ラジアン変換器
var angle = 180; // 角度を初期化
// 以下を0.1秒ごとに実行
(function(){
for(var i=0; i<spans.length; i++){ // dynamic-grayscale-2クラスの要素ごとに
for(var j=0; j<spans[i].length; j++){ // span要素ごとに
var lightness = Math.floor((Math.cos((j*9+angle)*cvt)+1)*50); // 輝度を作成
$(spans[i][j]).css("color","hsl(0,0%," + lightness + "%)"); // 色を更新
}
}
angle += angle < 0 ? 360 : -20; // 角度を更新
setTimeout(arguments.callee, 100); // 0.1秒ごとに実行
})();
});