JavaScriptでWebカラー値変換を実現_javascriptスキル
最近、ビジネス上の必要事項をこなすのに忙しく、長い間ブログを書いていませんでした。今日少し時間があったので、最近のプロジェクトのフロントエンド コードをいくつか調べて、Web カラー変換機能を見たときに、色の設定/編集要件を行うときに、さまざまなカラー値の形式が関与することが多いことに突然気づきました。交換の。そこで、この機能のこの部分をどのように実装したかを記録し、それを書き留めて、読者が意見を表明し、より多くのコミュニケーションを図れるようにすることにしました。
まず問題を見てください
質問 1. Web フロントエンド開発を行うとき、特定の DOM 要素の背景色を設定するために dom.style.backgroundColor = "#f00" をよく使用します (なぜ似ているのか? 状況の比較。 (さらに、ここでは自由に想像力を働かせてください) var bgc = dom.style.backgroundColor 特定の DOM 要素の背景色を取得するコードです。そこで質問です。下の写真を見てください:
ここでのコントラストが十分に明らかでない場合は、読み続けてみましょう:
同じ色の値は等しいはずですが、結果はそうではありません。また、これは特別なケースではなく、著者が Chrome 開発ツールと Firefox コンソールで得た結果は一貫しています。
質問 2: フロントエンドの開発作業は、多くの場合、UI デザインのドラフトを復元することから始まります。コーディング プロセス中に、次のようなデザインをよく見かけます。ボックスの背景は単色 (#f00 など) ですが、不透明度は 75% です。明らかに、この場合、半透明効果を実現できないため、dom.style.backgroundColor = "#f00" を介して単純に設定することはできません。話題を変えると、CSS3 には rgba 機能があることがわかります。つまり、dom.style.backgroundColor = "rgba(255, 0, 0, 0.75)" を通じて半透明の背景色を設定できることになります。そこで、再び質問になります。この変換は Photoshop では簡単に行えますが、JavaScript では、("#f00", 75) を rgba(255, 0, 0, 0.75) に変換するにはどうすればよいでしょうか?
次に、私がどのようにやったかを見てみましょう。
rgb(a) カラー値を 16 進カラー (hex) に変換します
彼らは全員開発者です、私たちは理解しています!コードを直接記述する方が良いですが、最も独創的なコードを次に示します:
var rgbToHex = function(rgb) {
var rRgb = /rgb((d{1,3}),(d{1,3}),(d{1,3}))/,
rRgba = /rgba((d{1,3}),(d{1,3}),(d{1,3}),([.d] ))/,
r、g、b、a、rs = rgb.replace(/s /g, "").match(rRgb),
rsa = rgb.replace(/s /g, "").match(rRgba);
If (rs) {
r = ( rs[1]).toString(16);
r = r.length == 1 ? "0" r : r;
g = ( rs[2]).toString(16);
g = g.length == 1 ? "0" g : g;
b = ( rs[3]).toString(16);
b = b.length == 1 ? "0" b : b;
return {hex: "#" r g b, alpha: 100};
else if (rsa) {
r = (rsa[1]).toString(16);
r = r.length == 1 ? "0" r : r;
g = (rsa[2]).toString(16);
g = g.length == 1 ? "0" g : g;
b = (rsa[3]).toString(16);
b = b.length == 1 ? "0" b : b;
a = (rsa[4]) * 100
return {hex: "#" r g b, alpha: Math.ceil(a)};
} else {
return {hex: rgb, alpha: 100};
}
};
なぜそれが最も独創的と言われるのでしょうか?今日コードを見直したところ、まだ進化の余地があることがわかりました。 次に、進化した (最適化された) コードを比較してみましょう。
var rgbToHex = function(rgb) {
var rRgba = /rgba?((d{1,3}),(d{1,3}),(d{1,3})(,([.d] ))?)/,
r、g、b、a、
rsa = rgb.replace(/s /g, "").match(rRgba);
If (rsa) {
r = (rsa[1]).toString(16);
r = r.length == 1 ? "0" r : r;
g = (rsa[2]).toString(16);
g = g.length == 1 ? "0" g : g;
b = (rsa[3]).toString(16);
b = b.length == 1 ? "0" b : b;
a = ( (rsa[5] ? rsa[5] : 1)) * 100
return {hex: "#" r g b, alpha: Math.ceil(a)};
} else {
return {hex: rgb, alpha: 100};
}
};
if 分岐が欠落していることは言うまでもなく、コードの量だけを見ても明らかです。次に、変換の結果が期待どおりであるかどうかを確認するために、コンソールで次のコード行を実行しました。
16 進カラー (hex) を rgba 形式に変換します
日常の開発では、カラー値を rgba フォーマットに変換する必要がある場合、最も一般的に使用するカラー値は 16 進形式 (#ff0000、#f00 など) である必要があります。それらを使用するとき、私たちはどうすればよいでしょうか?
var hexColor = /^#/.test(hex) ? hex.slice(1) : hex,
alp = hex === '透明' ? 0 : Math.ceil(al),
r、g、b;
hexColor = /^[0-9a-f]{3}|[0-9a-f]{6}$/i.test(hexColor) : 'fffff';
If (hexColor.length === 3) {
hexColor = hexColor.replace(/(w)(w)(w)/gi, '$1$1$2$2$3$3');
}
r = hexColor.slice(0, 2);
g = hexColor.slice(2, 4);
b = hexColor.slice(4, 6);
r = parseInt(r, 16);
g = parseInt(g, 16);
b = parseInt(b, 16);
戻り値 {
hex: '#' hexColor、
アルファ: アルプ、
rgba: 'rgba(' r ', ' g ', ' b ', ' (alp / 100).toFixed(2) ')'
};
};
最後に、Web ページのカラー値間の相互変換は、実際にはよくある問題ですが、もっと良い方法があると思いますので、ぜひご提案ください。一緒に進歩しましょう~~

ホット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)

ホットトピック

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

WebSocket と JavaScript を使用してオンライン予約システムを実装する方法 今日のデジタル時代では、ますます多くの企業やサービスがオンライン予約機能を提供する必要があります。効率的かつリアルタイムのオンライン予約システムを実装することが重要です。この記事では、WebSocket と JavaScript を使用してオンライン予約システムを実装する方法と、具体的なコード例を紹介します。 1. WebSocket とは何ですか? WebSocket は、単一の TCP 接続における全二重方式です。

JavaScript と WebSocket を使用してリアルタイム オンライン注文システムを実装する方法の紹介: インターネットの普及とテクノロジーの進歩に伴い、ますます多くのレストランがオンライン注文サービスを提供し始めています。リアルタイムのオンライン注文システムを実装するには、JavaScript と WebSocket テクノロジを使用できます。 WebSocket は、TCP プロトコルをベースとした全二重通信プロトコルで、クライアントとサーバー間のリアルタイム双方向通信を実現します。リアルタイムオンラインオーダーシステムにおいて、ユーザーが料理を選択して注文するとき

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

使用法: JavaScript では、insertBefore() メソッドを使用して、DOM ツリーに新しいノードを挿入します。このメソッドには、挿入される新しいノードと参照ノード (つまり、新しいノードが挿入されるノード) の 2 つのパラメータが必要です。

JavaScript で HTTP ステータス コードを取得する方法の紹介: フロントエンド開発では、バックエンド インターフェイスとの対話を処理する必要があることが多く、HTTP ステータス コードはその非常に重要な部分です。 HTTP ステータス コードを理解して取得すると、インターフェイスから返されたデータをより適切に処理できるようになります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法と、具体的なコード例を紹介します。 1. HTTP ステータス コードとは何ですか? HTTP ステータス コードとは、ブラウザがサーバーへのリクエストを開始したときに、サービスが
