|
|
请马上登录,朋友们都在花潮里等着你哦:)
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 马黑黑 于 2022-9-30 20:13 编辑
一、理解 hsl
hsl,h = hue,色相,对应于圆的角度,取值范围 0 ~ 360,不要单位。0 和 360 是红色,120 是绿色,240是蓝色,其他颜色介于这三个区间取值,有规律;s,saturation,饱和度,用百分比表示,0% 最大程度加入了灰色,色相所表示的本来颜色无效,是黑色(灰的最大值是黑),100%是色相本色自身,没有加入任何灰色;l,lightness,亮度,0% 代表黑色加入到最大,没有亮度,所以色相自身的本色不显示,是黑色,100% 代表加入最多的白色,色相本色也不能显示,是白色。
h 色相 0 ~ 360
s 饱和度 0% ~ 100%(100%为正常饱和度)
l 亮度 0% ~ 100%(50%为正常亮度)
任何色相,通过调整饱和度或亮度,都能令色相产生变化,饱和度加灰,亮度加黑白。
二、色盘载体
可以使用HTML元素的背景角向渐变,conic-gradient,来实现色盘。元素设置为圆形,将 hsl 色彩表达法的每一个色相角度表现在其中即可。conic-gradient 语法如下:
background: conick-gradient(at angle1 angle2, color1, color2, ... ,colorN);
我们可以写 360 个 color,用 hsl 表示,hsl(0, 100%, 50%), hsl(1, 100%, 50%), ..., hsl(359, 100%, 50%),色盘就出来了。我们要的都是饱和度和亮度正常的,所以只需改变色相角度。
嗯嗯,写360个色相的颜色,有点复杂哈,所以呢——
三、用 JS 写背景
用一个 for 语句吧,反正就是一次过,效率不效率不用考虑的:
let bgStr = 'conic-gradient(at center center'; //声明一个变量用于记录角向渐变字串
//for循环360次,写360个hsl颜色
for(j = 0; j <360; j ++) {
bgStr += ',hsl(' + j + ',100%,50%)'; //将每一次循环的 hsl 颜色拼接起来
}
bgStr += ')'; //角向渐变收尾
hslBox.style.background = bgStr; // 给 hslBox 元素加背景色
当然,这些JS代码需要有相应的HTML支持:
<div id="hslBox" style="margin: 50px auto; width: 300px; height: 300px; border-radius: 50%;"></div>
效果可以在楼下查看。
|
评分
-
| 参与人数 3 | 威望 +130 |
金钱 +260 |
经验 +130 |
收起
理由
|
小辣椒
| + 50 |
+ 100 |
+ 50 |
赞一个! |
红影
| + 50 |
+ 100 |
+ 50 |
赞一个! |
醉美水芙蓉
| + 30 |
+ 60 |
+ 30 |
赞一个! |
查看全部评分
|