【问题标题】:Transition Animation: all; Weird delay on margin-right过渡动画:全部;右边距的奇怪延迟
【发布时间】:2013-10-29 04:57:59
【问题描述】:

我有一个简单的应用程序,当您单击右侧时,右侧部分进入,当您单击左侧时,左侧部分进入。它就像一个旋转木马,代码更少,动画完全基于 CSS。

现在当我点击右键时,动画是即时的。在左侧,它需要几秒钟才能开始。

HTML:

<div class="wrap">
<div class="box box1"></div>
<div class="box box2"></div>
</div>

CSS:

body{overflow:hidden}
.wrap{width:2500px;overflow:hidden}
.box{height:20px;width:20%;background:red;margin:20px 8px;float:left;

-webkit-transition: all 2s;
  transition: all 2s;
}

JS:

$(document).keyup(function (e) {
    var c = (e.keyCode ? e.keyCode : e.which);
    e.preventDefault;
    if (c == 39) {
      $(".box1").css("margin-left", "-100%");        
    }
    if (c == 37) {
      $(".box1").css("margin-left", "0");
    }
});

是否与溢出有关?是bug吗?

jsFiddle:http://jsfiddle.net/dp8VS/1/

【问题讨论】:

标签: jquery css css-transitions css-animations


【解决方案1】:

.css("margin-left", "-100%") 将其容器的.box1 的左边距设置为100%(即在这种情况下为2500px),因此转换不会被延迟,只是div 需要一段时间进入视野。

由于您的 div 使用宽度为 20%,请尝试:

$(document).keyup(function (e) {

    e.preventDefault();

    if (e.which === 39) {
        $(".box1").css("margin-left", "-20%");
    } else if (e.which === 37) {
        $(".box1").css("margin-left", "0");
    }

});

另外,jQuery 对event object 中的许多属性进行了“规范化”,所以我刚刚使用e.which 来获取关键代码。

魔法:http://jsfiddle.net/EThDb/3/

【讨论】:

  • 谢谢。不知道我是怎么错过的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-15
相关资源
最近更新 更多