CSS渐变 - Less混合

6

我想知道是否可以通过在CSS代码中应用类似于lighten或darken的函数来改变Less mixin渐变的颜色?

这是Less Mixin的代码:

.css-gradient(@from: #20416A, @to: #3D69A5) {
    background-color: @to;
    background-image: -webkit-gradient(linear, left top, left bottom, from(@from),  to(@to));
    background-image: -webkit-linear-gradient(top, @from, @to);
    background-image: -moz-linear-gradient(top, @from, @to);
    background-image: -o-linear-gradient(top, @from, @to);
    background-image: -ms-linear-gradient(top, @from, @to);
    background-image: linear-gradient(top, @from, @to);
}

在Less文件中,我想要做这样的事情:

#div {
    width:100px;
    height:100px;
    .css-gradient (darken, 10%);
}

我不知道这是否可能,或者我是否应该以另一种方式完成这个任务。

我不太确定您想通过darken函数实现什么,也许您可以提供一个示例less和相应的CSS代码。这样会更清晰明了。 - topek
2个回答

15

我会这样做:

.css-gradient(darken(#20416A,10%),darken(#3D69A5,10%))
当然,你也可以这样做:
.css-gradient(@from: #20416A, @to: #3D69A5) {
    background-color: @to;
    background-image: -webkit-gradient(linear, left top, left bottom, from(@from),  to(@to));
    background-image: -webkit-linear-gradient(top, @from, @to);
    background-image: -moz-linear-gradient(top, @from, @to);
    background-image: -o-linear-gradient(top, @from, @to);
    background-image: -ms-linear-gradient(top, @from, @to);
    background-image: linear-gradient(top, @from, @to);
}
.css-gradient(darken,@amount: 10%, @from: #20416A, @to: #3D69A5){
    .css-gradient(darken(@from,@amount),darken(@to,@amount));
}

然后只需调用它:

.css-gradient(darken,10%);
或:
.css-gradient(#20416A, #3D69A5);

或者:

.css-gradient(darken,5%,#00ff00,#ff0000);

0

Less mixin:

.gradient(@dir: 0deg; @colors; @prefixes: webkit, moz, ms, o; @index: length(@prefixes)) when (@index > 0) {
    .gradient(@dir; @colors; @prefixes; (@index - 1));

    @prefix : extract(@prefixes, @index);
    @dir-old: 90 - (@dir);

    background-image: ~"-@{prefix}-linear-gradient(@{dir-old}, @{colors})";
    & when ( @index = length(@prefixes) ) {
        background-image: ~"linear-gradient(@{dir}, @{colors})";
    }
}

使用方法:.gradient(90deg, #FFAA64, #FFCD73);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接