Javascript實(shí)現(xiàn)顏色rgb與16進(jìn)制轉(zhuǎn)換的方法
本文實(shí)例講述了Javascript實(shí)現(xiàn)顏色rgb與16進(jìn)制轉(zhuǎn)換的方法。分享給大家供大家參考。具體如下:
使用方法:
Color(12,34,56);
Color("#fff")
Color("#defdcd")
實(shí)現(xiàn)代碼:
//顏色轉(zhuǎn)換
var Color = function() {
if (!(this instanceof Color)) {
var color = new Color();
color._init.apply(color, arguments);
return color;
}
if (arguments.length) {
this._init.apply(this, arguments);
}
}
//設(shè)置get,set方法
var methods = ["red", "green", "blue", "colorValue"];
var defineSetGetMethod = function(fn, methods) {
var fnPrototype = fn.prototype;
for (var i = 0; i < methods.length; i++) {
var methodName = methods[i].charAt(0).toLocaleUpperCase() + methods[i].substring(1);
fn.prototype['set' + methodName] = new Function("value", "this." + methods[i] + "= value;");
fn.prototype['get' + methodName] = new Function("return this." + methods[i] + ";");
fn.prototype['toString'] = new Function('return "rgb("+this.red+","+this.green+","+this.blue+")";');
}
};
defineSetGetMethod(Color, methods);
//擴(kuò)展函數(shù)的實(shí)例方法
var extend = function(fn, option) {
var fnPrototype = fn.prototype;
for (var i in option) {
fnPrototype[i] = option[i];
}
};
extend(Color, {
_init : function() {
if (arguments.length == 3) {
this.red = arguments[0];
this.green = arguments[1];
this.blue = arguments[2];
this.getColorValue();
} else {
var colorValue = arguments[0].replace(/^\#{1}/, "");
if (colorValue.length == 3) {
colorValue = colorValue.replace(/(.)/g, '$1$1');
}
this.red = parseInt('0x' + colorValue.substring(0, 2), 16);
this.green = parseInt('0x' + colorValue.substring(2, 4), 16);
this.blue = parseInt('0x' + colorValue.substring(4), 16);
this.colorValue = "#" + colorValue;
}
},
getColorValue : function() {
if (this.colorValue) {
return this.colorValue;
}
var hR = this.red.toString(16);
var hG = this.green.toString(16);
var hB = this.blue.toString(16);
return this.colorValue = "#" + (this.red < 16 ? ("0" + hR) : hR) + (this.green < 16 ? ("0" + hG) : hG) + (this.blue < 16 ? ("0" + hB) : hB);
}
});
希望本文所述對大家的javascript程序設(shè)計(jì)有所幫助。
- nodejs 十六進(jìn)制字符串型數(shù)據(jù)與btye型數(shù)據(jù)相互轉(zhuǎn)換
- javascript十六進(jìn)制數(shù)字和ASCII字符之間的轉(zhuǎn)換方法
- JS中的進(jìn)制轉(zhuǎn)換以及作用
- javascript實(shí)現(xiàn)的字符串與十六進(jìn)制表示字符串相互轉(zhuǎn)換方法
- JavaScript實(shí)現(xiàn)把rgb顏色轉(zhuǎn)換成16進(jìn)制顏色的方法
- JavaScript轉(zhuǎn)換二進(jìn)制編碼為ASCII碼的方法
- 使用JavaScript進(jìn)行進(jìn)制轉(zhuǎn)換將字符串轉(zhuǎn)換為十進(jìn)制
- JavaScript常用進(jìn)制轉(zhuǎn)換及位運(yùn)算實(shí)例解析
相關(guān)文章
javascript如何在foreach循環(huán)完成之后執(zhí)行一個(gè)回調(diào)函數(shù)
forEach()是前端開發(fā)中操作數(shù)組的一種方法,主要功能是遍歷數(shù)組,其實(shí)就是 for 循環(huán)的升級版,下面這篇文章主要給大家介紹了關(guān)于javascript如何在foreach循環(huán)完成之后執(zhí)行一個(gè)回調(diào)函數(shù)的相關(guān)資料,需要的朋友可以參考下2023-11-11
uniapp開發(fā)小程序?qū)崿F(xiàn)全局懸浮按鈕的代碼
這篇文章主要介紹了uniapp開發(fā)小程序如何實(shí)現(xiàn)全局懸浮按鈕,但是在uniapp中式?jīng)]有window對象,和dom元素的,需要獲取頁面上節(jié)點(diǎn)的幾何信息,具體實(shí)例代碼詳細(xì)跟隨小編一起看看吧2022-03-03
JavaScript Event學(xué)習(xí)第五章 高級事件注冊模型
在這一章我會講解兩種高級時(shí)間注冊模型:W3C和微軟的。因?yàn)檫@兩個(gè)方法都不能跨瀏覽器,所以在現(xiàn)在看來他們的使用場合并不多。2010-02-02
javascript秒數(shù)倒計(jì)時(shí)自動(dòng)跳轉(zhuǎn)代碼
幾秒后跳轉(zhuǎn)功能,動(dòng)態(tài)生成按鈕并動(dòng)態(tài)生成8位隨機(jī)數(shù),2008-09-09
javascript下用ActiveXObject控件替換word書簽,將內(nèi)容導(dǎo)出到word后打印
由于時(shí)間比較緊,沒多的時(shí)候去學(xué)習(xí)研究上述工具包,現(xiàn)在用javascript操作ActiveXObject控件,用替換word模板中的書簽方式解決。2008-06-06

