css - 如何转义Less中的内置函数?

标签 css less

我有以下内容

.linear-gradient(~"to left, #83111b 0, #83111b 50%, lighten(#83111b, 5%) 50%, lighten(#83111b, 5%) 100%");

线性渐变如下

.linear-gradient(@params) {
    background-image: linear-gradient(@params);
    background-image: -webkit-linear-gradient(@params);
    background-image: -moz-linear-gradient(@params);
}

是否有可能逃脱lighten(#83111b, 5%)? 我知道我可以使用变量来存储它,但我喜欢避免这部分。

最佳答案

不,您不能在转义字符串中调用内置函数,因为这样它会被视为单个字符串,因此该函数不会被调用/计算。

令人惊讶的是,似乎不需要临时变量,并且类似下面的内容适用于这种特殊情况。 Less 编译器似乎将整个事物连接起来并将其视为单个参数。

.linear-gradient(@params) {
  background-image: linear-gradient(@params);
  background-image: -webkit-linear-gradient(@params);
  background-image: -moz-linear-gradient(@params);
}
a{
  .linear-gradient(~"to left, #83111b 0, #83111b 50%," lighten(#83111b, 5%) ~"50%," lighten(#83111b, 5%) ~"100%");
}

这个模型似乎在很多类似的情况下工作得很好,所以我认为它不会失效。事实上,由于它们是空格分隔的(而不是逗号分隔的),所以末尾额外的分号也不是必需的。 (仅当逗号分隔值应被视为单个参数时才需要分号。这是因为分号或逗号都可以用作 mixin 参数分隔符,但当存在分号时,逗号不再被视为分隔符。)


但我仍然建议执行如下操作,因为它看起来更具可读性和清晰性。

.linear-gradient(@params) {
  background-image: linear-gradient(@params);
  background-image: -webkit-linear-gradient(@params);
  background-image: -moz-linear-gradient(@params);
}

a{
  @color1: lighten(#83111b, 5%);
  .linear-gradient(~"to left, #83111b 0, #83111b 50%, @{color1} 50%, @{color1} 100%");
}

Qwertiy 建议的选项也是一个非常好的选项,但要小心 @arguments 选项,因为当同一个 mixin 有多个其他参数时,它会将所有参数连接到一个分隔的空格中值。

关于css - 如何转义Less中的内置函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36090577/

相关文章:

javascript - 使用 javascript 链接 <div> 是否可以接受?

html - border-radius + background-color == 裁剪边框

css - 更少的 CSS 编译顺序

javascript - 正在编译 less modifyVars 时加载图标

CSS:您可以将图例放置在左边框居中的字段集中吗?

html - IE8 显示错误的 CSS Sprite

javascript - jQuery 幻灯片需要时间加载

iphone - CSS div 按钮在 Iphone 或 Ipad 上不起作用

twitter-bootstrap - 在 .less 文件中使用 Twitter Bootstrap .span12 时出错

less - 限制混合值并在提供无效值时抛出异常