Less中的颜色计算溢出
来源:互联网 发布:艾可萨兽数据 编辑:程序博客网 时间:2024/05/15 15:15
less中的颜色计算溢出
问题来源:
@the-border: 1px;@base-color:#842210;#test3 { color: @base-color * 2; border-left: @the-border; border-right: @the-border * 5;}
less和css中颜色都是用6位的16进制数来表示的,所以按照16进制去计算颜色似乎是理所应当的。按照16进制来运算color的值应该是#1084420,最高位溢出舍去,那么结果应该是#084420。
然而。。实际情况呢?
#test3 { color: #ff4420; border-left: 1px; border-right: 5px;}
最后4位与我们预期相同,但是前两位却莫名其妙的变成了ff,第一位变成f还可以理解,毕竟8*2=16溢出了,但是第二位明明是4*2=8,为什么会莫名其妙变成f,这是个很有意思的问题,值得研究一下。
less和css中的颜色表示
- 6位16进制 如#084420
- 3位16进制 如#111
- rgb颜色 如rgb(255,255,255)
- rgba颜色 如rgba(255,255,255,0.5)
首先需要搞清楚的是以上四种颜色的转换
用四种方式表示同一种颜色 蓝色
//6位16进制.test{ color:#0000ff;}
//3位16进制.test{ color:#00f;}
//rgb表示.test{ color:rgb(0,0,255);}
//rgba表示.test{ color:rgba(0,0,255,1);}
从上面的例子可以看出,用6位16进制数来表示颜色的时候,其实这个并不是一个传统意义上的数,六位数组其实是以两位一组分为三组,从前到后依次表示r g b 的值,用#842210的例子来说:
#842210 中,84代表红色的值为8*16+4 =132,22代表绿色的值 2*16+4 =34,蓝色的值为 1*16 =16
那么测试一下,rgb(132,34,16)与#842210是不是一样的呢?
//less@base-color:rgb(132,34,16);#test3 { color: @base-color ;}
用在线less转换工具将其转换为css的结果
#test3 { color: #842210;}
那么最开始提出的那个问题就很好理解了
因为6位16进制的颜色代码是分组的,两位一组分别代表R G B的值,那么 G 的值通过乘法运算大于255之后进位到 R的值中就是不合理的。所以当计算的结果大于255之后当前颜色的区域值取FF
再来用加法验证下
//less@base-color:#880088;@test : #910088;#test3 { color: @base-color + @test;}
用在线LESS编译器
#test3 { color: #ff00ff;}
符合预期,那么3为16进制代表的颜色呢?
与6位的16进制原理相同,只不过用是用1个位来分别代表R G B的值罢了,这三位的计算也是分开的。
LESS在线编译器 http://tool.oschina.net/less
- Less中的颜色计算溢出
- less 颜色计算
- Less中的&
- 14.2.1 F# 中的颜色计算
- 顶点颜色在光照计算中的作用
- less 中的& and符号
- less中的函数
- Linux中的more/less
- Less中的命名空间
- Less中的循环
- Less中的合并
- Less中的Extend
- vb计算溢出问题
- char溢出计算
- 计算机中的颜色——快速计算颜色的色相值
- 计算机中的颜色V——快速计算颜色的色相值
- 计算机中的颜色VIII——快速计算颜色的偏转
- node中的Less、Sass安装
- Android——处理R文件丢失或报错问题
- 新的开始+Grad第一学期短期规划
- Gson反序列化详解
- 报表生成关键思想点:
- GridView简单封装收缩和展开
- Less中的颜色计算溢出
- 黑马程序员--Protocol 代理协议
- 【bzoj4147】 [AMPPZ2014]Euclidean Nim
- Web开发笔记
- 【Unity】UGUI如何判断鼠标或者手指是否点击到UI上
- CSS 长度单位
- <stl>将bytes上调至8的倍数
- 让DropDownlist显示ToolTip(两部分)
- xjoi10月17日noip提高组模拟题