需要一些技巧,如何将十六进制颜色值转换为rgb()
Need some tips with how to convert a hexadecimal color value to a rgb() one
我刚开始阅读面向对象的JavaScript,并在练习中卡住了。
在第91页,它要求编写一个函数,将十六进制颜色转换为其等效的RGB(例如" RGB(0,0,255)")。它要求您拉入包括'#'在内的完整字符串。
读完他花在解释数据类型,循环,条件和函数的两章后,我不知道如何解析十六进制值而不作弊和使用某种字符串函数-他甚至没有在这一点上介绍。
有没有一种方法可以只使用他在书中演示的函数和方法来做这个练习?他要求javascript返回"rgb(0,255,0) "如果输入以下代码:
var a = getRGB("#00FF00");
a;
我假设您需要使用循环将十六进制值分解为r,g和b值的数组,然后将它们重新组合成字符串。如果可能的话,请不要给我整个解决方案,但任何有用的提示将非常感激。谢谢你的帮助。
我注意到你说没有任何字符串方法。以下是如何仅使用Array
方法执行第一部分…
- 使用
split()
将字符串转换为数组。 - 将
substr()
呼叫交换为slice()
呼叫。
然而,在现实世界中,您可以使用substr()
来提取字符串的部分。第一个参数是偏移量,第二个参数是要提取的字符数。
你可以使用parseInt()
来改变基数。您只需将数字(作为字符串)作为第一个参数传入,并将基数作为第二个参数传入。我选择了16
的基数,因为这些是十六进制数。
然后可以将返回值与rgb(x,x,x)
字符串部分连接起来,这样就可以了:)
你可以把鼠标移到下面查看代码(如果你卡住了)。顺便说一句,有谁知道如何制作块级代码扰流器吗?
<引用类>var getRGB = function(rgb) {Var r = rgb。substr(1、2),G = rgb。substr (3,2)B = rgb。substr (5, 2);
返回的rgb(' +方法(r, 16 ) + ',' + 方法(g, 16 ) + ',' + 方法(b, 16) + ') ';}
jsFiddle .
一旦你弄清楚了这一点,下一步可能是允许函数接受浏览器允许的RGB的短格式,即你的例子#00FF00
可以作为#0F0
传递。 一些技巧……
- 先用
rgb.length
检查字符串长度 - 改变你的
substr()
呼叫依赖于长度 - 建立你传递给
parseInt()
的字符串,使F
成为FF
。
获取输入字符串并将#替换为空,然后使用parseInt()将其解析为整数并发送16作为数字基数,现在您有一个长整数,其中前8位是蓝色值,9到16位是绿色值,17到24位是红色值。使用位移位和遮罩把它们拉出来。把它们全部放入像"rgb(r,g,b)"这样的字符串中,祝贺你,你完成了。
function parseRGB(Hex)
{
var Word = parseInt(Hex.replace(/^#/, ""), 16);
var R = Word >> 16 & 0xff;
var G = Word >> 8 & 0xff;
var B = Word & 0xff;
return "rgb(" + R + ", " + G + ", " + B + ")";
}
var c = "#00ff00";
alert(parseRGB(c));
另一个2位方法,适合使用输入字符串
function hextoRgb(hex){
if(/^#[a-fA-F0-9]{6}$/.test(hex)){
var c= '0x'+hex.substring(1);
c= [(c>> 16)&255, (c>> 8)&255, c&255];
return 'rgb('+c.join(',')+')';
}
throw 'bad hex '+hex;
}
我不会因为回答了这个问题而表扬自己,但我想我应该分享一下给作者发邮件的结果(我猜现在你可以这么做!!)他给了我一个建议,下面是我按照他的要求想出来的:
function getRGB(x){
var a =[];
a[0] = parseInt(x[1] + x[2],16);
a[1] = parseInt(x[3] + x[4],16);
a[2] = parseInt(x[5] + x[6],16);
a = "rgb(" + a[0] + "," + a[1] + "," + a[2] + ")";
return a;
}
var a = getRGB("#00FF00");,
- 将JavaScript对象转换为值数组
- 在数组中查找颜色值(以#开头的字符串)
- 如何在选择“输入颜色”后从中获取新的颜色值
- 引导颜色选择器,如何在下拉列表中设置颜色值框
- 如何为 svg 元素提供 hsl 颜色值
- 使用 Javascript 选择颜色值
- JavaScript,Regexp - 将颜色值包装在 span 中
- (Chromium) CSS 和 javascript 中的 alpha 颜色值(以 rgba 为单位)
- 转换颜色十六进制值以用于三个 JSON 文件.js
- 任何转换对象*值*的Javascript或Coffeescript“映射”函数
- 如何使用 JavaScript 获取以度为单位的 CSS 转换旋转值
- 如何在 javascript 中将关联数组转换为值的简单字符串数组
- Babel React 转换:属性值预期的字符串类型,但得到空
- 如何在javascript中从rgb字符串中提取颜色值
- JavaScript 和 jQuery 之间的背景颜色值
- 如何将 JSON 密钥转换为值
- 通过库转换颜色无法正常工作
- FireFox和IE将原始颜色值转换为RGB
- 将 RGB 颜色值转换为十进制
- 需要一些技巧,如何将十六进制颜色值转换为rgb()