【问题标题】:CSS translate3d is scaling chaotically when hover (Chrome)悬停时 CSS translate3d 缩放混乱(Chrome)
【发布时间】:2014-07-22 17:07:28
【问题描述】:

基本上,CSS 3d 变换在悬停事件时跳跃(或无序缩放)。 要查看此故障,您需要快速进出几次(仅限 Chrome)。

Example 1
Example 2

代码尽可能简单:

<div></div>

div {
    width: 50px;
    height:50px;
    background: blue;
    -webkit-transition: -webkit-transform 0.3s ease-out,
                        background 0.3s ease-out;
}
div:hover {
    background: red;
    -webkit-transform: perspective(100px) translate3d(10px, 10px, 20px);
}

我已尝试附加 -webkit-backface-visibility: hidden;正如我在 Chrome 中相关的跳跃/闪烁问题中找到了这个解决方案,但在我的情况下它什么也没做。

有人知道这个问题吗?还是我做错了什么?

【问题讨论】:

    标签: css css-transitions css-transforms


    【解决方案1】:

    发生这种情况是因为您没有在元素的:hover 状态之前提供任何默认翻译值。只需为这些添加默认值,问题就会消失:

    示例 1

    div {
        width: 50px;
        height:50px;
        background: blue;
        -webkit-transition: -webkit-transform 0.3s ease-out,
                            background 0.3s ease-out;
        -webkit-transform: translate3d(0, 0, 0);
    }
    

    JSFiddle demo.

    示例 2

    div:nth-child(2) {
        background: rgba(0, 0, 255, .5);
        -webkit-transform: translateZ(0);
    }
    

    JSFiddle demo.

    【讨论】:

    • 我的代码也有同样的问题。你能检查第一个例子吗?它更简单
    • @Alex 您正在查看哪个示例以及您使用的是哪个浏览器?我的答案中的两个示例似乎都在 Chrome 中正常工作。
    • @Alex 请在我的回答中查看示例 1。这使用-webkit-transform: translate3d(0, 0, 0);
    • 好的,是的,现在我明白了。我对打开 jsFiddles 的标签太多感到困惑 :) 谢谢!
    猜你喜欢
    • 2020-03-13
    • 2016-02-03
    • 1970-01-01
    • 2015-09-05
    • 2012-06-23
    • 2012-02-09
    • 2018-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多