Javascript カラーグラデーション効果の実装コード_JavaScript スキル
以下はブロガーによるいくつかのアイデアと解決策です。これに興味がなく、jquery プラグインを直接使用したい場合は、ここをクリックしてください。
感想
各色はRGBで構成されており、各2桁は16進数です。
現在のカラーコードとターゲットのカラーコードを10進数に変換した後、その差分を利用してステップサイズを決定します。総実行回数を計算し、ステップごとに色を変えるための10進数を計算します
タイマーを使って実行します
簡単に言うと、6桁のカラーコードを2桁ごとに10進数に変換します設定されたステップ サイズ (実行回数) に従って、2 つの RGB 値のペアの差を計算し、各ステップで増加または減少する必要がある RGB 値を計算し、最終的にターゲット色の RGB 値になります。
解決する必要がある問題
6桁のカラーコードを10進数に変換
ステップサイズに応じて各ステップの増減値を計算
タイマーを使用してこの増減処理を実行
1. -桁のカラーコード 10進数です
16進数から10進数への変換については、すでに学校の教科書で取り上げられています。一の位 * 16 の 0 乗、十の位 * 16 の 1 乗などです。色はRGBで構成されており、#123456、R=12、G=34、B=56のように2桁ずつがグループになっていますが、実際にはRGB値は10進数なので、R=12としか言えません。対応する位置である場合、12 は 10 進数に変換されます: 2*1 1*16=18、34: 4*1 3*16=52、56: 6*1 5*16=96、つまり RGB=[18,52,96 ]。
これはデジタルですが、16 進数には A ~ F があるため、まず A ~ F を 10 ~ 15 に変換する必要があります。まず配列を使用して、対応する 16 進数全体を保存します。
var f=new Array();
f ['0']=0;
f['1']=1;
f['2']=2;
f['3']=3;
f[' 4']=4;
f['5']=5;
f['6']=6;
f['7']=7;
f[ '8' ]=8;
f['9']=9;
f['A']=10;
f['B']=11;
f['C ']= 12;
f['D']=13;
f['E']=14;
f['F']=15;
カラー コードでは大文字と小文字が区別されないため、最初にすべての色を大文字に変換できます
code=code.toLocaleUpperCase();/ /大文字に変換
してから 16 進数を 10 進数に変換
//code は 6 桁のカラーコードです。f07786;
var r=f[code[0]]*16 f[code[1]];
var g=f[ code[2]]*16 f[code[3]];
var b=f[code[4]]*16 f[code[5]];
変換コード全体はメソッドとして記述されます
function colorConversion(code){
var len= code.length;
var f=new Array();
f['0']=0;
f['1']=1;
f['2' ]=2 ;
f['3']=3;
f['4']=4;
f['5']=5;
f['6']= 6;
f['7']=7;
f['8']=8;
f['9']=9;
f['A']=10;
f['B']=11;
f['C']=12;
f['D']=13;
f['E']=14;
f[ 'F']=15;
code=code.toLocaleUpperCase();//大文字に変換
var s=code.substr(0,1);
if(s==' #') {
code=code.substr(1,6);
}
var r=f[code[0]]*16 f[code[1]];
var g =f[ code[2]]*16 f[code[3]];
var b=f[code[4]]*16 f[code[5]];
return [r,g, b];
}
コード内の s は、カラー コードに # 記号があるかどうかを判断するために使用され、ある場合はそれを削除し、最後に RGB 値を含む配列を返します。
増加または減少するステップ サイズを計算します
たとえば、色の変更数を 10 に設定した場合、これら 10 回の変更ごとに RGB 値の増減を計算する必要があります。現在の色の RGB 値とターゲット色の RGB 値の差の絶対値を使用し、それを 10 で割ってステップ サイズを取得しますが、この値は小数点になる可能性が高く、四捨五入できます。小数点を入力し、最後のステップで値を増減します。時間が来たら、ターゲット色の RGB 値に直接変更するだけです
var _step=10;
var _R_step=parseInt (Math.abs(_thisRGB[0]-_toRGB[0])/_step); //R
var の増加および減少ステップ サイズ _G_step=parseInt(Math.abs(_thisRGB[1]-_toRGB) [1])/ _step); //G
var _B_step=parseInt(Math.abs(_thisRGB[2]-_toRGB[2])/_step); //増加と減少B のステップ サイズ
各実行を増減します
実行回数が 10 の場合は、10 回連続して実行する必要があることを意味し、_step=1 で実行が完了します。次に、ステップ サイズを増減する場合、_step=10 の場合、増減はステップ サイズの 1 倍、つまり実行が 2 番目のステップに到達した場合に表示されます。はステップ サイズの 2 倍です。_step=1 になるまで、ステップ サイズを 9 倍増減します。ここでは、このような単純な計算を使用できます
var step=10;
var _step=step ;
//ループ内
var s=(step-_step) 1;
_step--;
次に、現在のカラー RGB 値とターゲット RGB 値が増加しているか減少しているかを判断します
var r=_step==1?_toRGB [0] :(_thisRGB[0]>_toRGB[0]?_thisRGB[0]-_R_step*s:_thisRGB[0] _R_step*s);
var g=_step==1?_toRGB[1]: (_thisRGB[ 1]>_toRGB[1]?_thisRGB[1]-_G_step*s:_thisRGB[1] _G_step*s);
var b=_step==1?_toRGB[2]:(_thisRGB[2] ]>toRGB[2]?_thisRGB[2]-_B_step*s:_thisRGB[2] _B_step*s);
最後に色を出力します
obj.css({'background-color ':' rgb(' r ',' g ',' b ')'});
ここでの出力は rgb() メソッドです。それでも 6 桁のコードを出力したい場合は、10 進数を 16 進数に変換するだけです。
最後のステップはタイマーを使用して実行することです。途中には速度と計算もありますが、ここでは説明しません。最終的な実行コード:
/*
パラメータ:
obj: ターゲット オブジェクト
thisRGB: 現在の背景色の 6 桁のコード
toRGB: ターゲットの背景色の 6 桁のコード
thisColor: 現在の文字色の 6 桁コード
toColor: 対象の文字色の 6 桁コード
step: 実行回数
speed: 実行速度
*/
function colorGradient( obj,thisRGB,toRGB,thisColor ,toColor,step,speed){
var _thisRGB=colorConversion(thisRGB); //16 進数を 10 進数に変換します
var _toRGB=colorConversion(toRGB);
if(thisColor&&toColor) {
var _thisColor=colorConversion(thisColor,1);
var _toColor=colorConversion(toColor,1);
}
var step=step?step:3;
var _step=step;
var _speed=speed?parseInt(speed/step):30; // 合計時間に基づいて各実行の速度を計算します
var _R_step=parseInt(Math.abs(_thisRGB[0]) -_toRGB[0]) /_step);
var _G_step=parseInt(Math.abs(_thisRGB[1]-_toRGB[1])/_step);
var _B_step=parseInt(Math.abs(_thisRGB[ 2]-_toRGB[2 ])/_step);
var timer=setInterval(function(){
if(_step>0){
var s=(step-_step) 1;
var r=_step==1?_toRGB[0] :(_thisRGB[0]>_toRGB[0]?_thisRGB[0]-_R_step*s:_thisRGB[0] _R_step*s); _toRGB[1]?_thisRGB[1]-_G_step*s:_thisRGB[ 1] _G_step*s);
var b=_step==1?_toRGB[2]:(_thisRGB[2]>gt; _toRGB[2]?_thisRGB[2]-_B_step*s:_thisRGB[2] _B_step* s);
obj.css({'background-color': 'rgb(' r '、' g '、' b ')'});
stos:_thiscolor [0] _r_step*s);
var cg=_step==1?_toColor[1]:(_thisColor[1]>_toColor[1]?_thisColor[1]-_G_step*s:_thisColor[1 ] _G_step*s);
var cb=_step==1?_toColor[2]:(_thisColor[2]>_toColor[2]?_thisColor[2]-_B_step*s:_thisColor[2] _B_step*s );
obj.css({ 'color':'rgb(' cr ',' cg ',' ' cb ')'});
clearInterval(timer);
return true;
}
},_speed);
}
この方法は非常に単純ですが、特にオブジェクトのグループが連続的に実行される場合、グラデーションの滑らかさは平均的です。私が言えるのは、これは非常に不器用で愚かな方法であるということです。巨匠たちは皆、トゥイーンアルゴリズムを使用しています
。
これを使用するには、jquery の animate を直接使用するだけです。現在の色を指定する必要はありません。プログラムは自動的に現在の色を取得しますが、スタイルで背景を設定する必要があります。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











JavaScript文字列置換法とFAQの詳細な説明 この記事では、javaScriptの文字列文字を置き換える2つの方法について説明します:内部JavaScriptコードとWebページの内部HTML。 JavaScriptコード内の文字列を交換します 最も直接的な方法は、置換()メソッドを使用することです。 str = str.replace( "find"、 "置換"); この方法は、最初の一致のみを置き換えます。すべての一致を置き換えるには、正規表現を使用して、グローバルフラグGを追加します。 str = str.replace(/fi

それで、あなたはここで、Ajaxと呼ばれるこのことについてすべてを学ぶ準備ができています。しかし、それは正確には何ですか? Ajaxという用語は、動的でインタラクティブなWebコンテンツを作成するために使用されるテクノロジーのゆるいグループ化を指します。 Ajaxという用語は、もともとJesse Jによって造られました

記事では、JavaScriptライブラリの作成、公開、および維持について説明し、計画、開発、テスト、ドキュメント、およびプロモーション戦略に焦点を当てています。

10の楽しいjQueryゲームプラグインして、あなたのウェブサイトをより魅力的にし、ユーザーの粘着性を高めます! Flashは依然としてカジュアルなWebゲームを開発するのに最適なソフトウェアですが、jQueryは驚くべき効果を生み出すこともできます。また、純粋なアクションフラッシュゲームに匹敵するものではありませんが、場合によってはブラウザで予期せぬ楽しみもできます。 jquery tic toeゲーム ゲームプログラミングの「Hello World」には、JQueryバージョンがあります。 ソースコード jQueryクレイジーワードコンポジションゲーム これは空白のゲームであり、単語の文脈を知らないために奇妙な結果を生み出すことができます。 ソースコード jquery鉱山の掃引ゲーム

このチュートリアルでは、jQueryを使用して魅惑的な視差の背景効果を作成する方法を示しています。 見事な視覚的な深さを作成するレイヤー画像を備えたヘッダーバナーを構築します。 更新されたプラグインは、jQuery 1.6.4以降で動作します。 ダウンロードしてください

この記事では、JQueryとAjaxを使用して5秒ごとにDivのコンテンツを自動的に更新する方法を示しています。 この例は、RSSフィードからの最新のブログ投稿と、最後の更新タイムスタンプを取得して表示します。 読み込み画像はオプションです

Matter.jsは、JavaScriptで書かれた2D Rigid Body Physics Engineです。このライブラリは、ブラウザで2D物理学を簡単にシミュレートするのに役立ちます。剛体を作成し、質量、面積、密度などの物理的特性を割り当てる機能など、多くの機能を提供します。また、重力摩擦など、さまざまな種類の衝突や力をシミュレートすることもできます。 Matter.jsは、すべての主流ブラウザをサポートしています。さらに、タッチを検出し、応答性が高いため、モバイルデバイスに適しています。これらの機能はすべて、物理ベースの2Dゲームまたはシミュレーションを簡単に作成できるため、エンジンの使用方法を学ぶために時間をかける価値があります。このチュートリアルでは、このライブラリのインストールや使用法を含むこのライブラリの基本を取り上げ、

この記事では、ブラウザでJavaScriptのパフォーマンスを最適化するための戦略について説明し、実行時間の短縮、ページの負荷速度への影響を最小限に抑えることに焦点を当てています。
