【问题标题】:Chrome: CSS & JS transition not working properlyChrome:CSS 和 JS 过渡无法正常工作
【发布时间】:2016-07-06 18:57:05
【问题描述】:

我有三张图片 img1img2img3(3 张图片)。它的初始位置分别为-50% 绝对右上角和左上角。当我将位置更改为static 时,使用转换2s 它实际上需要移动到中心。

问题在进行过渡时,正在捕捉某些镀铬(在某些笔记本电脑的镀铬中)。我知道是什么导致过渡中断。

这是我的 jQuery 代码。

        $(".middle-fixed-coming-soon-top").css({"top": "0px"});
        $(".middle-fixed-coming-soon-top").one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend',  function(e) {
            $(".middle-fixed-coming-soon-top").css({"position": "static"});
            // code to execute after transition ends
        });

        $(".middle-fixed-organics-left").css({"left": "333px"});
        $(".middle-fixed-organics-left").one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend',  function(e) {
            $(".middle-fixed-organics-left").css({"position": "static"});
            $(".middle-fixed-organics-left .for-margin").css("margin-top", "auto");
            // code to execute after transition ends
        });

        $(".middle-fixed-tagline-right").css({"right": "333px"});
        $(".middle-fixed-tagline-right").one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend',  function(e) {
            $(".middle-fixed-tagline-right").css({"position": "static"});
            $(".middle-fixed-tagline-right .for-margin").css("margin-top", "auto");
            // code to execute after transition ends
        });

我是 jQuery 的新手。任何人都可以帮忙吗?提前致谢。

编辑
当我第二次或更多次重新加载时会发生这种情况。

【问题讨论】:

  • 在哪个版本不工作?
  • 因为你的过渡使用绝对像素,这意味着过渡效果很好,但只能在一个精确的屏幕宽度 - 1360px
  • 我是Version 51.0.2704.79 Built on Ubuntu 14.04

标签: javascript jquery html css google-chrome


【解决方案1】:

我注意到的最重要的事情是您正在将一个元素从 position: absolute 切换到 position: static。这意味着它从不影响周围的内容转变为将其他一切都排除在外。我会使用相对而不是绝对,并完全取出静态开关。从那里,您应该只需要重新调整左/上定位。下面的代码应该处理所有的 JS 端,只是 CSS 需要 position: absolute 来切换到 position: relative。

        $(".middle-fixed-coming-soon-top").css({"top": "0px"});
        $(".middle-fixed-coming-soon-top").one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend',  function(e) {
            // code to execute after transition ends
        });

        $(".middle-fixed-left").css({"left": "0px"});
        $(".middle-fixed-left").one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend',  function(e) {
            $(".middle-fixed-left .for-margin").css("margin-top", "auto");
            // code to execute after transition ends
        });

        $(".middle-fixed-tagline-right").css({"right": "0px"});
        $(".middle-fixed-tagline-right").one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend',  function(e) {
            $(".middle-fixed-tagline-right .for-margin").css("margin-top", "auto");
            // code to execute after transition ends
        });

【讨论】:

  • 那为什么它只在私人标签中有效而在普通标签中无效?有点奇怪。我也清除了缓存。所以我需要把所有东西都转换成相对的???
  • 如果你只是删除 css({"position": "static"});从您的 JS 中更改 .middle-fixed-coming-soon-top、.middle-fixed-triesta-organics-left 和 .middle-fixed-tagline-right 从位置:绝对到位置:相对,它应该修复跳转.但是您需要稍微调整 JS 中结束状态的左/上位置以进行补偿。
  • 我刚刚编辑了您发布的代码以处理位置更改,将其换入并在您的 CSS 中进行绝对到相对修复应该可以处理任何屏幕尺寸。
  • 谢谢,我已经做出改变,但我仍然看到滞后。
  • 里面好像有东西根据你的屏幕尺寸为左/右动画设置不同的值
猜你喜欢
  • 2014-11-29
  • 2016-02-05
  • 1970-01-01
  • 2020-10-29
  • 1970-01-01
  • 2020-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多