【问题标题】:Rewrite Jquery fadeIn() to use CSS3 transitions重写 Jquery fadeIn() 以使用 CSS3 过渡
【发布时间】:2012-09-06 09:44:25
【问题描述】:

有没有办法只重写 JQuery 的 fadeIn() 和 fadeOut() 函数以在浏览器支持的情况下使用 CSS3 过渡。

我对所有其他动画都使用了 jquery 传输,我对 Jquery 的 fadeIn 和 fadeOut 功能更满意,但它们的运行效果不佳。

Here's a link to the site I'm working on

例如;

if(CSS3TransitionsAvailable){

$.fn.fadeIn() = function(this, speed, callback){

//Fade this in Using CSS3 Transistions
}

}

谢谢

【问题讨论】:

  • 看看 Zepto。它试图摆脱 jQuery 所做的所有兼容魔法(这意味着 Zepto 放弃了旧版浏览器)。 fx.js 模块使用 CSS 制作动画
  • 这很酷。但我需要尽可能多地支持旧版浏览器 :(

标签: jquery fadein css-transitions


【解决方案1】:

如果你想用 jQuery Transit 替换 jQuery 的 fadeIn 和 fadeOut 函数,你可以这样做:

$.fn.fadeOut = function(speed, callback)
{
    var transitionSpeed = typeof (speed) == "undefined" ? 1000 : speed;    
    $(this).transition({opacity: 0 }, transitionSpeed, callback);

};

$.fn.fadeIn = function(speed, callback)
{
    var transitionSpeed = typeof (speed) == "undefined" ? 1000 : speed;    
    $(this).transition({opacity: 1 }, transitionSpeed, callback);

};

$("div").on("click", function () 
{
    //Fade out for 4 seconds, then fade in for 6 seconds
    $(this).fadeOut(4000, myCallBackFunction);
});

function myCallBackFunction () 
{
        $(this).fadeIn(6000);

}

JS Fiddle Demo

它并不完美,但您可以根据自己的喜好进行调整。

【讨论】:

  • 感谢您发布此信息。 .fadeIn() 做而这段代码没有做的一件事是从 .show() 开始。如果您要将上述代码添加到已经使用 .fadeIn() 的页面,并且应用它的任何元素都已使用 .hide() 隐藏,则代码将永远不会显示这些标签。您可以通过使用 .show().css({ opacity: 0 }) 打开 .fadeIn() 来改善这一点
【解决方案2】:

看看this 插件。它可能会对你有所帮助。

【讨论】:

  • 谢谢,但它似乎与我正在使用的 Jquery Transit 插件冲突github.com/rstacruz/jquery.transit
  • 应该吗?它似乎正在这样做。我使用了浏览器检查器,它没有向淡入或淡出的元素添加任何 -webkit-transition。知道我用错了吗
  • 哦,抱歉,好像没有。我建议的插件应该与运输插件一起使用。您尝试过并遇到任何错误吗?
  • 有关如何使用所述插件来完成所述任务的详细信息可能会使这个答案至少有些用处。虽然 jquery.transit 几乎是行业标准。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-01
  • 2012-09-05
  • 2013-03-18
  • 1970-01-01
  • 2014-05-28
相关资源
最近更新 更多