当有两个使用variables时,node.js减less了背景属性
我有一个问题less:
@frames_color: #faeacd; @menu_color_hex: #faeacd; @menu_color_rgba: rgba(250, 234 ,205 , 255);
less用:
.topmenu { a { background-color: @menu_color_hex; background-color: @menu_color_rgba; } }
结果在CSS:
#user_field .topmenu a { background-color: #faeacd; }
和
.topmenu { a { background-color: green; background-color: @menu_color_hex; background-color: red; background-color: @menu_color_rgba; background-color: blue; } }
结果是:
#user_field .topmenu a { background-color: green; background-color: red; background-color: #faeacd; /* value of menu_color_hex is used instead of menu_color_rgba? */ background-color: blue; }
我是无知的atm。 为什么它删除一个背景颜色属性? 它是错误还是有意的行为?
在@menu_color_rgba: rgba(250, 234 ,205 , 255)
,“255”不是有效的阿尔法值( 它仅在0-1范围内 )。
如果你不需要alpha值,那么使用rgb
会有更多的浏览器支持(例如IE8不支持 rgba)。
只是为了回答为什么它被删除:
正如上面的评论中所提到的, rgba
alpha值应该在0...1
范围内,因此255
值会被钳位到有效的1
从而导致不透明的颜色。 然后,因为@menu_color_hex
和@menu_color_rgba
具有完全相同的颜色值( rgba(250, 234, 205, 1)
#faeacd
)等于#faeacd
), #faeacd
简单地删除background-color
重复。
–
提示:如果已经有另一个颜色值,则不需要手动指定透明或备用颜色值,请使用相应的Less函数,例如:
@menu_color_safe: fade(@menu_color, 100%); // non-transparent one for old browsers @menu_color: rgba(250, 234, 205, .5);
或者相反:
@menu_color_safe: #faeacd; // non-transparent one for old browsers @menu_color: fade(@menu_color_safe, 50%);