将css 中的16进制颜色, 转化为 rgb格式
对dojo/_base/Color模块的注解。 源地址 https://github.com/robinxiong/dojo/blob/master/_base/Color.js
function fromHex(color){
/*
summary:
将css的属性值,转变为rgb格式的对像
"#fff" -> 0xfff
长度为4, 一个字符占用代表一个属性, 0x10 == 16(2的4次方,即1后面4个0) === 1 0000, 那么一个f 为 1111
占位符为 mask = 1111, 用于占住后四位(&用于保留后四位的值), 其他高位清零
每一次遍历都从后四位開始,所以先获取到 b值,难后移动4位,在获取到 g, 在移动4位,获取到 r
获取b属性:
0000 1111 1111 1111 & 0000 0000 0000 1111 (这里仅仅列举出16位, 正常的是32位)
0000 0000 0000 1111 b保存到变量 c
0000 1111 1111 1111 >> 4, -> 0000 0000 1111 1111
获取g属性
0000 0000 1111 1111 & 0000 0000 0000 1111
0000 0000 0000 1111 获得到g的值,保存到变量 c
在移四位,获取r的值
"ffffff" -> 0xffffff
长度为8。每两个字符代表一个函数 0xff = 1111 1111
每次获取后8位,刚好代表颜色值
*/
var t = {},
bits = (color.length == 4) ? 4 : 8,//假设是shorthand。 #fff, 那么bits为4位, 每一位代表的个属性, 其他的为8位 每两位代表一个属性 #ffffff00
mask = (1 << bits) - 1; //表示字节占位符。 向左移4位或8位,var a = (1 << 4 ) - 1 -> 10000 - 1, a.toString(2); // 1111。或者 8位的 1111 1111
color = Number("0x" + color.substr(1)); //#ff0000 转变为16进制0xff0000;
if(isNaN(color)){
return null; // Color
}
["b", "g", "r"].forEach(function(x){
var c = color & mask;
color >>= bits;
t[x] = bits == 4 ? 17 * c : c; // 0xfff , 一个f应该代表 255, 应该当[0-255],按15等份划分,每一等份间隔 17。
所以获得的值须要乘以17, 才干表示rgb中255的值
});
t.a = 1;
return t; // Color
}
console.log(fromHex("#00f")) // {r:0, g: 0, b:255, a:1}
将css 中的16进制颜色, 转化为 rgb格式的更多相关文章
- 16进制颜色转普通RGB
做开发的会遇到很多时候UI给到的是16进制的颜色 然而很多时候我们需要把它转换成适合我们方法的RGB参数 当然通过网页转换也可以达到目的 但是我现在选择写一个分类来解决 一劳永逸~ 1.首先说下 ...
- C#中一个简单的匹配16进制颜色的正则测试
using System; using System.Text.RegularExpressions; namespace Test { class Program { //匹配16进制颜色代码的正则 ...
- iOS开发中16进制颜色(html颜色值)字符串转为UIColor
//16进制颜色(html颜色值)字符串转为UIColor +(UIColor *) hexStringToColor: (NSString *) stringToConvert { NSString ...
- iOS 直接使用16进制颜色
在做iOS开发时,一般我们会吸色,就是产品给的图我们一般会吸色,但是最近吸色时候,老大说有较大的颜色偏差,所以要求我们直接使用UI给出的额16进制颜色,你也可以搜索<RGB颜色值转换成十六进制颜 ...
- iOS 16进制颜色和UIcolor的转换
各种颜色之间的转换,会陆续更新, 实现了 16进制颜色(HEX).RGBA.HSBA.UIColor之间的 相互转换 使用示例(加号方法,类名调用) //UIColor 转 RGB.HSB RGBA ...
- C# RGB与16进制颜色转换方法
http://www.cnblogs.com/goldarch/archive/2010/08/16/1801053.html #region [颜色:16进制转成RGB] /// &l ...
- swift - 16进制颜色扩展(1.支持# 2.支持不带# , 3支持带0X)
/** * 设置16进制颜色: * 可识别类型 * 1:有# * 2:没有# * 3:含有0X */ extension UIColor{ class func hexadecimalColor(he ...
- 16进制颜色字符串转为UIColor
//16进制颜色(html颜色值)字符串转为UIColor +(UIColor *) hexStringToColor: (NSString *) stringToConvert { NSS ...
- MD5中使用16进制
MD5中使用16进制消息摘要 分类: java_secruity2012-12-28 13:11 719人阅读 评论(0) 收藏 举报 消息摘要 由于数据在计算机中的表示,最终以二进制的形式存在,所以 ...
随机推荐
- 22深入理解C指针之---通过指针传递函数
一.通过指针传递函数与通过指针传递数据的本质是一样的,区别就是此时的数据是函数指针(函数的开始的地址) 1.定义:通过函数指针将函数传入函数:通过函数返回函数指针实现函数返回函数的目标 2.特征: 1 ...
- file中的一些常用方法
1.exists();判断文件(目录)是否存在 2.mkdir();创建一级目录:mkdirs()创建多级目录 3.delete();删除文件(目录) 4.isDirectory();判断是否是一个目 ...
- Image与Base64String的互转换
public Image Base64ToImage(string base64String) { // Convert Base64 String to byte[] byte[] imageByt ...
- 转:关于使用ImageMagick和Tesseract进行简单数字图像识别
据说Tesseract可是世界排名第三的OCR神器,2010年又更新了3.0版本.Tesseract原先是HP写的,现在Open Source了. 下面介绍怎么用Tesseract配合ImageMag ...
- Markdown的css样式源码
http://www.cnblogs.com/zhangjk1993/p/5442676.html https://github.com/zhangjikai/markdown-css https:/ ...
- python--文件处理1
1. 读取文件 方法: all_the_text = open('thefile.txt').read() 但是为了安全起见还是给打开的文件对象指定一个名字,这样在完成之后可以迅速关掉,防止无 ...
- NSThread学习
使用多线程可以防止主线程阻塞.同时也可以将一个大的任务分成若干个小的任务去做. 常用方法一: 1, 首先使用 detachNewThreadSelector:toTarget:withObject: ...
- 邁向IT專家成功之路的三十則鐵律 鐵律二十:IT人證照之道-收斂
這是一個各行各業都講究專業證照的世代,彷彿證照只要比別人少一些就感覺自己遜掉了.現今IT領域的證照肯定是所有行業中最複雜的,無論是想求職升遷的還是想轉進IT跑道的,許多人由於受到媒體與廣告的影響,都不 ...
- js 字符串常用方法
数组方面 1.push:向数组尾部增加内容,返回的是新数组的长度. var arr = [1,2,3]; console.log(arr); var b = arr.push(4); console. ...
- 【iOS】UIWebView的HTML5扩展之canvas篇
先前公布大那个所谓的"HTML5"扩展严格说来还算不是"HTML5".曲曲几行JS代码就自诩为HTML5扩展多少有些标题党的嫌疑. 而相比之下,本篇的主题can ...