javascript - 使用 jQuery 动画 CSS3 渐变位置

标签 javascript jquery css gradient

是否可以使用 jQuery 为 CSS3 渐变颜色的位置设置动画?

我想以此为动画

background: -moz-linear-gradient(top, #FF0000 0%, #FF0000 0%, #FFFFFF 0%,
   #FFFFFF 100%); /* firefox */

background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#FF0000), color-stop(0%,#FF0000),
    color-stop(0%,#FFFFFF), color-stop(100%,#FFFFFF)); /* webkit */

对此

background: -moz-linear-gradient(top, #FF0000 0%, #FF0000 50%, #FFFFFF 50%,
    #FFFFFF 100%); /* firefox */

background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#FF0000),
    color-stop(50%,#FF0000), color-stop(50%,#FFFFFF), color-stop(100%,#FFFFFF)); /* webkit */

xx 毫秒

提前致谢!

最佳答案

发挥创意..这是我如何在没有额外插件的情况下进行渐变过渡的示例..

我使用了 2 个具有不同渐变的相同 div,一个叠加在另一个之上。然后我使用 jquery 为顶部的不透明度设置动画。

一步一步来

  1. 创建一个固定大小的包装器,比如“width:200px”和“height:100px”(我使用包装器以便更容易调整其中 div 的位置)
  2. 创建 2 个与包装器大小相同的 div,它们提供不同的背景渐变,但对两者使用相同的内容,因此在视觉上唯一改变的是背景渐变。
  3. 添加“position:relative;”并调整将在顶部的 div 的位置,在本例中为“bottom:100px;”的 box2 (注意它的值与包装器和 div 的高度相同。这使得将位于顶部的 div 相对于包装器向上移动 100px 并将其自身定位在较低的 div 上方......如果不使用,这是不可能的"position:relative;"在顶部 div)
  4. 使用您喜欢的方法设置 div 的不透明度动画,我在此示例中使用 fadeToggle

HTML-----

<a href="#">Click to change gradient</a><br>
<div align="center" style="width:200px; height:100px;">
     <div style="width:200px; height:100px;" class="box1" id="box1">CONTENT BOTTOM DIV</div>
     <div style="width:200px; height:100px; position:relative;" class="box2" id="box2">CONTENT TOP DIV</div>
</div>

CSS 中的渐变-----

.box1 {
background: rgb(237,144,23); /* Old browsers */
background: -moz-linear-gradient(top,  rgba(237,144,23,1) 0%, rgba(246,230,180,1) 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(237,144,23,1)), color-stop(100%,rgba(246,230,180,1))); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top,  rgba(237,144,23,1) 0%,rgba(246,230,180,1) 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top,  rgba(237,144,23,1) 0%,rgba(246,230,180,1) 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top,  rgba(237,144,23,1) 0%,rgba(246,230,180,1) 100%); /* IE10+ */
background: linear-gradient(top,  rgba(237,144,23,1) 0%,rgba(246,230,180,1) 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ed9017', endColorstr='#f6e6b4',GradientType=0 ); /* IE6-9 */
}
.box2 {
background: rgb(246,230,180); /* Old browsers */
background: -moz-linear-gradient(top,  rgba(246,230,180,1) 0%, rgba(237,144,23,1) 100%);/* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(246,230,180,1)), color-stop(100%,rgba(237,144,23,1))); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top,  rgba(246,230,180,1) 0%,rgba(237,144,23,1) 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top,  rgba(246,230,180,1) 0%,rgba(237,144,23,1) 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top,  rgba(246,230,180,1) 0%,rgba(237,144,23,1) 100%); /* IE10+ */
background: linear-gradient(top,  rgba(246,230,180,1) 0%,rgba(237,144,23,1) 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f6e6b4', endColorstr='#ed9017',GradientType=0 ); /* IE6-9 */
}

jQuery动画----

$(document).ready(function(){ 
    $("a").click(function(){
            $("#box2").fadeToggle(100, "linear");   
    });
});  

您可以分层第三个 div,这样您就不需要通过在第一个包装器外添加第二个包装器并在内部包装器关闭后放置第三个 div 来编写相同的内容两次。

要查看此内容,请访问以下链接..

Link to example

关于javascript - 使用 jQuery 动画 CSS3 渐变位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5522513/

相关文章:

javascript - W3Schools 示例不起作用?

javascript - 弹框根据li查看信息

jquery - 当另一个背景已经显示时,将不透明度 0 设置为模态背景

javascript - 如何等到效果结束? (我看了重复的)

javascript - 单击父按钮单击时如何重置子输入的数据和 View ?

javascript - Ext-JS 快速提示图标 CSS 问题

Jquery,从函数访问变量

javascript - 处理传单 map 中的ajax请求

javascript - 航点删除类

javascript - 模拟 Electron session 以进行 Mocha/Chai 测试