减少混合,从数组中提取颜色并在悬停时,向该数组添加变暗
Less mixin, extract colors from array and on hover, add darken to that array
是否可以用颜色使数组变暗?像这样:
@array: @color1 @color2 @color3 @color4
.color-mix(@i) when (@i > 0) {
.myClass {
li:nth-child(@{i}) {
.background-color(extract(@array, @i));
&:hover {
// THIS IS NOT WORKING, IS THERE A RIGHT APPROACH FOR THIS?
.background-color(extract(darken(@array, 5.5%, @i)));
}
}
.color-mix(@i - 1);
}
}
// Iterate
.color-mix(4);
如果我对你的问题理解正确,是的,你可以做到。以下是您的操作方法。您的代码几乎是正确的,只是它没有尝试使提取的值变暗,而是试图提取变暗的值(这是不可能的)。
@array: #fff #00f #ff0 #f00;
.color-mix(@i) when (@i > 0) {
.myClass {
li:nth-child(@{i}) {
.background-color(extract(@array, @i));
&:hover {
.background-color(darken(extract(@array, @i), 5.5%));
}
}
}
.color-mix(@i - 1); /* I have moved it because I think it was wrongly placed */
}
// Iterate
.color-mix(4);
我建议对您的代码进行的一项改进是将 :hover
选择器也移动到 .background-color
mixin 中,如下所示。这使得它更容易阅读,因为没有将函数调用包装在另一个函数中等等。
@array: #fff #00f #ff0 #f00;
.color-mix(@i) when (@i > 0) {
.myClass {
li:nth-child(@{i}) {
.background-color(extract(@array, @i));
}
}
.color-mix(@i - 1);
}
// Iterate
.color-mix(4);
.background-color(@color){
&{
background-color: @color;
&:hover{
background-color: darken(@color, 5.5%);
}
}
}
更好的是这个 - 如果可以就避免混入:)
@array: #fff #00f #ff0 #f00;
.color-mix(@i) when (@i > 0) {
.myClass {
li:nth-child(@{i}) {
@color: extract(@array, @i);
background-color: @color;
&:hover{
background-color: darken(@color, 5.5%);
}
}
}
.color-mix(@i - 1);
}
// Iterate
.color-mix(4);
是否可以用颜色使数组变暗?像这样:
@array: @color1 @color2 @color3 @color4
.color-mix(@i) when (@i > 0) {
.myClass {
li:nth-child(@{i}) {
.background-color(extract(@array, @i));
&:hover {
// THIS IS NOT WORKING, IS THERE A RIGHT APPROACH FOR THIS?
.background-color(extract(darken(@array, 5.5%, @i)));
}
}
.color-mix(@i - 1);
}
}
// Iterate
.color-mix(4);
如果我对你的问题理解正确,是的,你可以做到。以下是您的操作方法。您的代码几乎是正确的,只是它没有尝试使提取的值变暗,而是试图提取变暗的值(这是不可能的)。
@array: #fff #00f #ff0 #f00;
.color-mix(@i) when (@i > 0) {
.myClass {
li:nth-child(@{i}) {
.background-color(extract(@array, @i));
&:hover {
.background-color(darken(extract(@array, @i), 5.5%));
}
}
}
.color-mix(@i - 1); /* I have moved it because I think it was wrongly placed */
}
// Iterate
.color-mix(4);
我建议对您的代码进行的一项改进是将 :hover
选择器也移动到 .background-color
mixin 中,如下所示。这使得它更容易阅读,因为没有将函数调用包装在另一个函数中等等。
@array: #fff #00f #ff0 #f00;
.color-mix(@i) when (@i > 0) {
.myClass {
li:nth-child(@{i}) {
.background-color(extract(@array, @i));
}
}
.color-mix(@i - 1);
}
// Iterate
.color-mix(4);
.background-color(@color){
&{
background-color: @color;
&:hover{
background-color: darken(@color, 5.5%);
}
}
}
更好的是这个 - 如果可以就避免混入:)
@array: #fff #00f #ff0 #f00;
.color-mix(@i) when (@i > 0) {
.myClass {
li:nth-child(@{i}) {
@color: extract(@array, @i);
background-color: @color;
&:hover{
background-color: darken(@color, 5.5%);
}
}
}
.color-mix(@i - 1);
}
// Iterate
.color-mix(4);