【发布时间】:2016-07-14 20:35:19
【问题描述】:
我是 jquery ui 的新手。我最近做了一个项目,其中我有一些用于 hsla 颜色选择器的 jquery ui 滑块。我有一个最大值为 360(hsla 色调)的滑块。我想将 hsla 转换为 rgba。我在网上搜索,找到了一些将 hsla 转换为 rgba 的解决方案。但我不知道如何将它们与滑块值一起使用。所以我决定创建一个新的,我得到了将 hsla 转换为 rgba 的模式。
模式是:
当 hsla 色调值 =0 rgba 看起来像:rgba(255, 0, 0 ,1)。当 hsla 色调值 =60 时,rgba 看起来像:rgba(255, 255, 0 ,1)。这意味着,我需要将 rgba,sg(green) 值从 0 更改为 255,其中 hsla,s 色调滑块值在 0 到 60 之间。现在,我给出 hsla 值的完整列表 = rgba,s 值应该多少是:
1 = rgba(255, 4, 0 ,1)
2 = rgba(255, 9, 0 ,1)
3 = rgba(255, 13, 0 ,1)
4 = rgba(255, 17, 0 ,1)
5 = rgba(255, 21, 0 ,1)
6 = rgba(255, 26, 0 ,1)
7 = rgba(255, 30, 0 ,1)
8 = rgba(255, 34, 0 ,1)
9 = rgba(255, 38, 0 ,1)
10 = rgba(255, 43, 0 ,1)
11 = rgba(255, 47, 0 ,1)
12 = rgba(255, 51, 0 ,1)
13 = rgba(255, 55, 0 ,1)
14 = rgba(255, 60, 0 ,1)
15 = rgba(255, 64, 0 ,1)
16 = rgba(255, 68, 0 ,1)
17 = rgba(255, 72, 0 ,1)
18 = rgba(255, 77, 0 ,1)
19 = rgba(255, 81, 0 ,1)
20 = rgba(255, 85, 0 ,1)
21 = rgba(255, 89, 0 ,1)
22 = rgba(255, 94, 0 ,1)
23 = rgba(255, 98, 0 ,1)
24 = rgba(255, 102, 0 ,1)
25 = rgba(255, 106, 0 ,1)
26 = rgba(255, 110, 0 ,1)
27 = rgba(255, 115, 0 ,1)
28 = rgba(255, 119, 0 ,1)
29 = rgba(255, 123, 0 ,1)
30 = rgba(255, 128, 0 ,1)
31 = rgba(255, 132, 0 ,1)
32 = rgba(255, 136, 0 ,1)
33 = rgba(255, 140, 0 ,1)
34 = rgba(255, 145, 0 ,1)
35 = rgba(255, 149, 0 ,1)
36 = rgba(255, 153, 0 ,1)
37 = rgba(255, 157, 0 ,1)
38 = rgba(255, 162, 0 ,1)
39 = rgba(255, 166, 0 ,1)
40 = rgba(255, 170, 0 ,1)
41 = rgba(255, 174, 0 ,1)
42 = rgba(255, 179, 0 ,1)
43 = rgba(255, 183, 0 ,1)
44 = rgba(255, 187, 0 ,1)
45 = rgba(255, 191, 0 ,1)
46 = rgba(255, 195, 0 ,1)
47 = rgba(255, 200, 0 ,1)
48 = rgba(255, 204, 0 ,1)
49 = rgba(255, 208, 0 ,1)
50 = rgba(255, 213, 0 ,1)
51 = rgba(255, 217, 0 ,1)
52 = rgba(255, 221, 0 ,1)
53 = rgba(255, 225, 0 ,1)
54 = rgba(255, 229, 0 ,1)
55 = rgba(255, 234, 0 ,1)
56 = rgba(255, 238, 0 ,1)
57 = rgba(255, 242, 0 ,1)
58 = rgba(255, 247, 0 ,1)
59 = rgba(255, 251, 0 ,1)
60 = rgba(255, 255, 0 ,1)
here 我找到了我想要的。但我无法理解将 hsla 转换为 rgba 的源代码发生了什么。
这是我在 jsfiddle
$( "#range-slider" ).slider({
range:false,
min: 0,
max: 360,
value: 0,
step: 1,
slide: function( event, ui ) {
var num = ui.value;
$('.hsla-code').text("hsla(" + num + ", 100%, 50%, 1)");
if (num < 61) {
var rgba = "rgba(255, "+ num * 4 + ", 0, 1)";
$('.header').css({
background: rgba
});
$('.code').text(rgba);
} else if (num < 121) {
var nua = num - 60;
var nub = nua * 4;
var red = 255 - nub;
var rgba = "rgba("+ red +", 255, 0, 1)";
$('.header').css({
background: rgba
});
$('.code').text(rgba);
} else if (num < 181) {
var nua = num - 120;
var blue = nua * 4;
var rgba = "rgba(0, 255, " + blue + ", 1)";
$('.header').css({
background: rgba
});
$('.code').text(rgba);
} else if (num < 241) {
var nua = num - 180;
var nub = nua * 4;
var green = 255 - nub;
var rgba = "rgba(0, " + green + ", 255, 1)";
$('.header').css({
background: rgba
});
$('.code').text(rgba);
} else if (num < 301) {
var nua = num - 240;
var red = nua * 4;
var rgba = "rgba("+ red +", 0, 255, 1)";
$('.header').css({
background: rgba
});
$('.code').text(rgba);
} else if (num < 361) {
var nua = num - 300;
var nub = nua * 4;
var blue = 255 - nub;
var rgba = "rgba(255, 0, "+ blue +", 1)";
$('.header').css({
background: rgba
});
$('.code').text(rgba);
}
}
});
【问题讨论】:
-
你的小提琴似乎奏效了。目前尚不清楚什么不适合您或您想要完成什么。请进一步澄清。
-
另外,我会看看他们的来源:github.com/imathis/hsl-picker
-
这不是 rgb 的准确值。这也不是将 hsla 转换为 rgba 的正确算法,而这只是将 hsla 色调转换为 rgba。我需要正确的算法来将 hsla 转换为 rgba。
-
w3 学校也使用与 hslpicker.com 相同的算法。这是page
-
我用这样的功能帮助了某人:jsfiddle.net/Twisty/9nkc7sd6 可以轻松适应 HSLA,因为您没有使用 Alpha 通道。
标签: jquery jquery-ui uislider rgba