2015-05-19 75 views
1

我正在尝试对元素进行简单的“翻转”转换。它在Firefox中运行得非常好,但是在Chrome中我得到了一个可怕的闪烁。Css转换 - 铬闪烁

搜索并尝试很多事情后,包括将-webkit-backface-visibility: hidden;添加到过渡元素,我找不到修复程序。

任何想法?

Here's a fiddle to show what I mean

下面是我使用的代码:

$('#passwordStrength__flipper').click(function() { 
 
    $(this).toggleClass('flipped'); // for testing, click the element 
 
});
.passwordStrength { 
 
    clear: both; 
 
    width: 99%; 
 
    position: relative; 
 
    padding-bottom: 0px; 
 
    height: 240px; 
 
    /* set viewing perspective */ 
 
    -webkit-perspective: 800px; 
 
    -moz-perspective: 800px; 
 
    -ms-perspective: 800px; 
 
    -o-perspective: 800px; 
 
    perspective: 800px; 
 
} 
 
.passwordStrength #passwordStrength__flipper { 
 
    width: 100%; 
 
    height: 200px; 
 
    position: absolute; 
 
    background-color: #EAEAEA; 
 
    -webkit-border-radius: 4px; 
 
    -moz-border-radius: 4px; 
 
    border-radius: 4px; 
 
    box-sizing: border-box; 
 
    -webkit-transition: -webkit-transform 1s; 
 
    -moz-transition: -moz-transform 1s; 
 
    -ms-transition: -ms-transform 1s; 
 
    -o-transition: -o-transform 1s; 
 
    transition: transform 1s; 
 
    -webkit-transform-style: preserve-3d; 
 
    -moz-transform-style: preserve-3d; 
 
    -ms-transform-style: preserve-3d; 
 
    -o-transform-style: preserve-3d; 
 
    transform-style: preserve-3d; 
 
} 
 
.passwordStrength #passwordStrength__flipper.flipped { 
 
    -webkit-transform: rotateY(180deg); 
 
    -moz-transform: rotateY(180deg); 
 
    -ms-transform: rotateY(180deg); 
 
    -o-transform: rotateY(180deg); 
 
    transform: rotateY(180deg); 
 
} 
 
.passwordStrength #passwordStrength__flipper figure { 
 
    display: block; 
 
    height: 100%; 
 
    width: 100%; 
 
    position: absolute; 
 
    margin: 0; 
 
    -webkit-backface-visibility: hidden; 
 
    -moz-backface-visibility: hidden; 
 
    -ms-backface-visibility: hidden; 
 
    -o-backface-visibility: hidden; 
 
    backface-visibility: hidden; 
 
} 
 
.passwordStrength #passwordStrength__flipper .passwordStrength__criteriaHolder { 
 
    display: block; 
 
    padding: 6px; 
 
    -webkit-border-radius: 4px; 
 
    -moz-border-radius: 4px; 
 
    border-radius: 4px; 
 
    box-sizing: border-box; 
 
} 
 
.passwordStrength #passwordStrength__flipper .passwordStrength__criteriaHolder #passwordStrength__suggestions { 
 
    width: 100%; 
 
    margin-top: 8px; 
 
    color: #999; 
 
    position: relative; 
 
} 
 
.passwordStrength #passwordStrength__flipper .passwordStrength--success { 
 
    height: 100%; 
 
    width: 100%; 
 
    background: #00C2A2; 
 
    -webkit-border-radius: 4px; 
 
    -moz-border-radius: 4px; 
 
    border-radius: 4px; 
 
    box-sizing: border-box; 
 
    color: #fff; 
 
    text-align: center; 
 
    font-size: 16px; 
 
    padding: 14px 30px; 
 
    line-height: 26px; 
 
    -webkit-transform: rotateY(180deg); 
 
    -moz-transform: rotateY(180deg); 
 
    -ms-transform: rotateY(180deg); 
 
    -o-transform: rotateY(180deg); 
 
    transform: rotateY(180deg); 
 
} 
 
`
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div class="passwordStrength" id="password_popup_inline"> 
 
    <div id="passwordStrength__flipper"> 
 
    <figure class="passwordStrength__criteriaHolder">Click me...</figure> 
 
    <figure class="passwordStrength--success">...then click me</figure> 
 
    </div> 
 
</div>

+0

抱歉,无法重现闪烁在Chrome 43/OS X ... – janfoeh

+0

FWIW,我在OSX Mavericks 10.9.5上获得了Chrome版本42.0.2311.152(64位)的闪烁,但在更新到版本43.0.2357.65(64位)之后,闪烁消失了。 – digijim

+0

我刚刚更新,闪烁消失。哈哈,猜我不能再尝试任何更多的调试... – Serlite

回答

2

尝试增加-webkit-backface-visibility: hidden;.passwordStrength #passwordStrength__flipper.flipped

这里的小提琴:http://jsfiddle.net/4p93v6oj/1/

UPDATE:

新小提琴:http://jsfiddle.net/4p93v6oj/2/

正如其他低于所指出的,第一个解决方案不起作用,因为Click事件不会元素上注册时,背面是隐藏的。

我修改了jQuery来触发外部元件上的点击事件,如下所示:

$('.passwordStrength').click(function() { 
     $('#passwordStrength__flipper').toggleClass('flipped'); 
    }); 

然后向背面能见度.passwordStrength #passwordStrength__flipper

+0

然后点击事件不会注册在后面(翻转)股利。 – j08691

+0

我在想这个主意,但我注意到这个修复显示问题导致后续点击元素被忽略,因为背面是隐藏的。 – Serlite

+0

啊真的,对不起。从未尝试将其翻转回来。 – ns1234