31

我想知道是否有人知道 webkit 何时会支持渐变过渡?
例如,以下代码在 Chrome 6 中不起作用(假设 grad-transition 是一个链接):

.grad-transition {
     background-image: -webkit-gradient(linear, 0 0, 0 100%, from(white), to(black));
     -webkit-transition: background-image .5s;
}
.grad-transition:hover {
     background-image: -webkit-gradient(linear, 0 0, 0 100%, from(black), to(white));
}
4

5 回答 5

50

试图做同样的事情。

截至目前,我认为不可能为渐变设置动画。

我正在使用一种解决方法。我没有为渐变设置动画,而是为背景图像使用半透明渐变,然后为背景颜色设置动画。

#button
{
    background-color: #dbdbdb;
    background-image: -webkit-gradient(linear, left top, left bottom,
    color-stop(0%, rgba(255, 255, 255, 0.9)),
    color-stop(100%, rgba(0, 0, 0, 0.6))
    );
}

#button:hover
{
   background-color: #353535;
}

我还在这里举了一些例子:http: //tylergaw.com/www/lab/css-gradient-transition-sorta/

于 2011-01-04T21:05:01.873 回答
10

您还可以使用背景位置来产生渐变正在变化的错觉,而实际上它只是被移动: http ://sapphion.com/2011/10/css3-gradient-transition-with-background-position/

于 2011-10-25T07:44:30.167 回答
2

使用一点技巧可以在渐变上进行过渡:

下面的代码会将最暗颜色的透明度设置为 0.3。悬停会将此颜色设置为另一种颜色。由于可以转换透明度,因此将产生相同的效果。

我还为 Mozilla 和 IE 添加了非过渡版本。

.menu li a {
  background-color: #ffffff; 
  background: -webkit-gradient(linear, left top, right top, from(#eeeeee), to(rgba(238, 238, 238,0.3)));

  background: linear-gradient(left,#eeeeee, #ffffff);
  background: -moz-linear-gradient(180deg,  #eeeeee,  #ffffff);
}

.menu li a:hover {
  background-color: #006613;
  -webkit-transition-property: background-color, color;
  -webkit-transition-duration: 0.3s;
  -webkit-transition-timing-function: linear;

  background: linear-gradient(left, #006613, #eeeeee);
  background: -moz-linear-gradient(180deg,  #006613,  #eeeeee);
}
于 2011-09-05T14:56:06.363 回答
1

我前段时间问过这个问题,您可以通过搜索我提出的问题来查看我得到的回复。他们告诉我,你还不能正确地做到这一点,但你可以通过在两个不同的 div 上设置渐变,然后将一个 div 淡化到另一个 div 上来创建效果。

于 2011-10-16T05:30:34.607 回答
0

我正在研究 JS lib,这使得渐变过渡成为可能:它已经可以用于线性渐变。用法:

    var button = $('#button');
    var targetGradientString = 'linear-gradient(rgb(247, 91, 52) 0%, rgb(240, 233, 93) 25%, rgb(43, 245, 12) 50%, rgb(24, 85, 240) 75%, rgb(166, 39, 230) 100%)';
    var targetElement = $('#target');
    
    button.click( function() {
        targetElement.gradientTransition(targetGradientString, 1500, 60);
    });

github 演示

于 2017-03-31T18:22:47.653 回答