【问题标题】:Why aren't these transitions working? (CSS3 / jQuery)为什么这些转换不起作用? (CSS3/jQuery)
【发布时间】:2015-09-25 15:02:21
【问题描述】:

我对 CSS3 比较陌生,我必须完成这项工作,所以请原谅可怕的代码。我要做的就是制作一个带有手风琴导航的画布外菜单(实际上,我希望它是桌面的水平导航,移动的画布外的导航,但这是另一个故事......)。 https://jsfiddle.net/StephanieQ/uk0902qx/1/ 我正在使用 jQuery 的 slideUp/Down 方法来实现这些效果,但只是没有过渡。如果我将时间指定为函数的参数,则动画会在该持续时间内犹豫不决。

$(document).ready(function(){
    $("nav h3").click(function(){
        $("nav ul ul").slideUp();
        if(!$(this).next().is(":visible"))
        {
            $(this).next().slideDown();
        }
    });
});

我确信原因很明显,但我真的看不出来。而且我也更喜欢使用 toggleClass 或类似的东西,这样它更适合我的媒体查询。任何帮助都会很棒!

(丑陋的红色框代表一个标志——额外的问题:为什么图像只是弹出而不是像其他所有东西一样过渡?)

【问题讨论】:

    标签: jquery css responsive-design css-transitions


    【解决方案1】:

    非常有趣的问题。

    您在要上下滑动的元素上定义了一堆过渡。

      -webkit-transition: .25s ease-in-out;
      -moz-transition: .25s ease-in-out;
      -o-transition: .25s ease-in-out;
      transition: .25s ease-in-out; 
    

    这不适用于 JQuery 的 slideDown() 方法,因为 slideDown 会迅速改变高度值。每次该值发生数千次变化时,CSS 都会尝试花费 0.25 秒来执行该转换。因此,每一分钟的迭代都没有发生任何事情,并且转换似乎是同时发生的。

    要解决此问题,请删除这些转换或使用 jQuery 来切换您提到的类。我采用第一种方法 - 删除 CSS 过渡。

    工作小提琴在这里:https://jsfiddle.net/uk0902qx/4/

    【讨论】:

    • 天啊,我已经尝试了 20 分钟了!我什至注释掉了 CSS 中的过渡。我的问题是我先做了顶部,测试,没有工作,注释掉nav ul ul {...}中的部分,测试,没有工作。我没想过要尝试它们都注释掉了。干得好
    • 哈哈,我也一直在努力解决它。实际上,我做的第一件事就是对 * 进行评论转换,但我没有意识到她也将转换放在 ul 本身上。无论如何,在所有元素上添加过渡对我来说似乎不是一个明智的想法(移动设备的性能方面,但也因为它的不可预测性)。
    • 啊!太感谢了!老实说,我有点自愿为我朋友的活动做一个网站,所以我正忙着把事情做好。我想如果我花时间正确地学习 CSS3 过渡而不是通过“疯狂试错”来做事,我会节省时间。所有元素的过渡都是我从教程中得到的,并没有真正理解它做了什么。再次,谢谢你!我学到了很多:)
    • 是的,如果你在做这种前端工作,至少对我来说,你与网络检查员合作得越多,你的情况就越好。希望您知道网络检查器是什么。无论如何,祝你好运。该网站看起来不错,体验非常宝贵。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    • 2011-11-02
    • 1970-01-01
    • 2011-06-22
    • 1970-01-01
    相关资源
    最近更新 更多