【问题标题】:Google Chrome Strange Css3 Transition Bug谷歌浏览器奇怪的 Css3 转换错误
【发布时间】:2013-12-07 09:47:15
【问题描述】:

我在 Google Chrome 中遇到了一个非常奇怪的错误。

Fiddle

这是我的代码

<div id="wrapper">
    <div class="trans">

    </div>
</div>

body {
    background:green;
    overflow: hidden;
}

.trans {
    width: 155550px;
    height: 200px;
    background: #000;
    position: relative;
    -webkit-transition-property:-webkit-transform, left, top;
    -webkit-transition-duration:0.600s;
    -webkit-transform:translate3d(0px,0,0);
    -webkit-transition-timing-function:ease-in-out;

}
#wrapper:hover .trans {
        -webkit-transform:translate3d(-155550px,0,0);
}

当您将鼠标悬停在包装 div 上并转换时,背景会闪烁以显示透明区域。该错误的任何解决方案?我在 Win8 上使用最新版本的谷歌浏览器

谢谢

更新: 这就是我要为想知道我实际在做什么的用户实现的目标

http://jsfiddle.net/vpdpX/

【问题讨论】:

  • 想要的效果是什么?我不一定确定 translate3d 是否合适
  • 你的 div 怎么这么宽?
  • @ExtPro 当幻灯片移动透明背景出现时,我在滑块中遇到了这个问题,我不想要那个背景轻弹
  • @Hushme 我仍然不确定您期望/尝试的具体行为是什么?
  • @screenmutt 我知道它的宽度,但你知道,我们需要有这么多幻灯片的滑块中的那种可怕的宽度

标签: css google-chrome webkit css-transitions


【解决方案1】:

这与您使用 div 的宽度有关。

我将采用您实际希望 div 为页面宽度的 100% 的值,在这种情况下它可以工作。

jsFiddle

.trans {
    width: 100%;
    height: 200px;
    background: #000;
    position: relative;
    -webkit-transition-property:-webkit-transform, left, top;
    -webkit-transition-duration:0.600s;
    -webkit-transform:translate3d(0px,0,0);
    -webkit-transition-timing-function:ease-in-out;     
}

#wrapper:hover .trans {
        -webkit-transform:translate3d(-100%,0,0);
}

编辑

要实现这一点,我建议您在屏幕外动态添加和删除幻灯片,这样您就不会遇到这个问题。

【讨论】:

  • 我想要像素宽度,我在滑块中使用它,里面有很多幻灯片
  • 你可以尝试给 silde 容器一个 white-space:nowrapt 和 display:inline-block 给幻灯片。那么你应该可以使用宽度 100%
  • 你打算如何停止其他图像?
  • 我有缩略图库,当您单击最后一张幻灯片缩略图时,它将转到带有该动画的相关幻灯片
  • 这有点像javascript。为什么不在javascript中做整个滑块?已经有很多不错的了。
【解决方案2】:

首先,我会重新评估您正在尝试做的事情以及您尝试实施它的方式。鉴于所提供的信息很难提供太多帮助 - 但是您的 div 的宽度过大 - 任何应用于折叠的动画几乎肯定不会正确地这样做。

也就是说,您使用了错误的动画类型和错误的属性——您只需要在宽度上添加一个过渡,然后在悬停时更改宽度。这适用于大小合理的 div 您只会遇到 div 155550px 宽的问题

See fiddle

CSS

body {
    background:green;
    overflow: hidden;
}

.trans {
    width: 100%;
    height: 200px;
    background: #000;
    position: relative;
    transition: width 1s;
    -moz-transition: width 1s; /* Firefox 4 */
    -webkit-transition: width 1s; /* Safari and Chrome */
    -o-transition: width 1s; /* Opera */

}
#wrapper:hover .trans {
    width:0px;
}

【讨论】:

  • 我想要大宽度的过渡
  • 打我到错误的过渡。我现在只是在更新我的。
  • 考虑一些宽度为 300px 的 div 并且它们是对齐的,你想在悬停时显示最后一个 div
  • @Hushme 如果您可以使用实际示例更新您的代码,这可能会有所帮助?否则我们有点在黑暗中开枪
  • @幻灯片垂直对齐,当您悬停包装器时,包装器具有元素的总宽度 translate3d(todivposition,0,0)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-03
  • 1970-01-01
  • 2012-07-15
  • 1970-01-01
  • 2011-10-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多