我有以下代码:
@color : #d14836;
.stripes span {
-webkit-background-size: 30px 30px;
-moz-background-size: 30px 30px;
background-size: 30px 30px;
background-image: -webkit-gradient(linear, left top, right bottom,
color-stop(.25, rgba(209, 72, 54, 1)), color-stop(.25, transparent),
color-stop(.5, transparent), color-stop(.5, rgba(209, 72, 54, 1)),
color-stop(.75, rgba(209, 72, 54, 1)), color-stop(.75, transparent),
to(transparent));
Run Code Online (Sandbox Code Playgroud)
我需要转换@color为rgba(209, 72, 54, 1).
所以我需要rgba(209, 72, 54, 1)在我的代码中用Less函数替换,该函数rgba()从我的@color变量生成值.
我怎么能用Less做这件事?
Ron*_*ert 337
实际上,LESS语言带有一个名为的嵌入式函数fade.传递颜色对象和绝对不透明度%(较高的值意味着透明度较低):
fade(@color, 50%); // Return @color with 50% opacity in rgba
Run Code Online (Sandbox Code Playgroud)
小智 99
如果您不需要阿尔法键,则只需使用颜色的十六进制表示即可.alpha为"1"的rgba颜色与十六进制值相同.以下是一些示例来说明:
@baseColor: #d14836;
html {
color: @baseColor;
/* color:#d14836; */
}
body {
color: rgba(red(@baseColor), green(@baseColor), blue(@baseColor), 1);
/* color:#d14836; */
}
div {
color: rgba(red(@baseColor), green(@baseColor), blue(@baseColor), 0.5);
/* rgba(209, 72, 54, 0.5); */
}
span {
color: fade(@baseColor, 50%);
/* rgba(209, 72, 54, 0.5); */
}
h3 {
color: fade(@baseColor, 100%)
/* color:#d14836; */
}
Run Code Online (Sandbox Code Playgroud)
在线测试此代码:http://lesstester.com/
hel*_*pse 12
我的混合物少了:
.background-opacity(@color, @opacity) {
@rgba-color: rgba(red(@color), green(@color), blue(@color), @opacity);
background-color: @rgba-color;
// Hack for IE8:
background: none\9; // Only Internet Explorer 8
filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d')", argb(@rgba-color),argb(@rgba-color))); // Internet Explorer 9 and down
// Problem: Filter gets applied twice in Internet Explorer 9.
// Solution:
&:not([dummy]) {
filter: progid:DXImageTransform.Microsoft.gradient(enabled='false'); // Only IE9
}
}
Run Code Online (Sandbox Code Playgroud)
试试吧.
编辑:正如在rgba背景上看到的IE过滤器替代:IE9渲染两者! 我在mixin中添加了一些行.