【问题标题】:LESS linear gradient mixinLESS 线性梯度混合
【发布时间】:2012-10-24 13:11:27
【问题描述】:

我使用 mixin 进行线性渐变,如下所示:

.linear-gradient (@color1:#ccc, @color2:#fff, @stop1:0, @stop2:100%, @dir:top) {
    background-color: @color2;
    background: -webkit-linear-gradient(@dir, @color1 @stop1, @color2 @stop2);
    background:    -moz-linear-gradient(@dir, @color1 @stop1, @color2 @stop2);
    background:     -ms-linear-gradient(@dir, @color1 @stop1, @color2 @stop2);
    background:      -o-linear-gradient(@dir, @color1 @stop1, @color2 @stop2);
    background:         linear-gradient(@dir, @color1 @stop1, @color2 @stop2);
    filter: e(%       ("progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=%d,endColorstr=%d)", @color1, @color2));
}

到目前为止它运行良好.. 但是在 w3c 发布新的 correct direction for gradients 和 Mozilla 将 FireFox 更新到 16.0.1 之后 - 我不能使用这个 mixin,因为 FireFox 16 使用没有前缀 -moz 的线性渐变。

现在我不能使用.linear-gradient(#ffffff, #000000, 0, 100%, top),因为top - 方向不正确,现在正确的线性渐变从上到下to bottom

0deg, 90deg — 不能跨浏览器工作,因为在所有浏览器中90deg 的方向是从下到上,但在 FireFox 16 中是从右到左。

关于新路线https://hacks.mozilla.org/2012/07/aurora-16-is-out/

有什么想法吗?

【问题讨论】:

  • 似乎 LESS 不支持度数运算。否则,对于使用旧方向(但不是无前缀)的所有实现,您可以将 90deg 减去传入的度数。 -moz-linear-gradient(@degrees - 90deg, @color1 @stop1, @color2 @stop2)

标签: firefox css less


【解决方案1】:

使用局部变量并为尚不支持新方向的浏览器添加 90 度应该可以解决问题:

(只有jsFiddle对度数的操作不起作用)。

.linear-gradient(@color1:#ccc, @color2:#fff, @stop1:0, @stop2:100%, @deg:0deg) {
  @old-deg: @deg + 90deg;
  background-color: @color2;
  background: -webkit-linear-gradient(@old-deg, @color1 @stop1, @color2 @stop2);
  background:    -moz-linear-gradient(@old-deg, @color1 @stop1, @color2 @stop2);
  background:     -ms-linear-gradient(@old-deg, @color1 @stop1, @color2 @stop2);
  background:      -o-linear-gradient(@old-deg, @color1 @stop1, @color2 @stop2);
  background:         linear-gradient(@deg, @color1 @stop1, @color2 @stop2);
  filter: ~"progid:DXImageTransform.Microsoft.gradient(startColorstr='#cccccc', endColorstr='#000000')";
}

.test {
  width:100px;
  height:100px;
  .linear-gradient(#000, #ff0, 0, 100%, 0deg);
}

(请注意,我更改了 IE 行的转义语法)。

【讨论】:

  • 嗨,琼,只是想知道,OP 的旧版 ie 代码的原始版本具有 %format 值……这不可能吗?这就是为什么整行都在您的答案中被转义的原因吗? [我刚从 .less 开始] 您的答案似乎总是会为旧版呈现灰色渐变,即?
猜你喜欢
  • 2020-01-12
  • 1970-01-01
  • 2017-12-03
  • 2012-12-14
  • 1970-01-01
  • 2015-08-05
  • 2013-02-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多