我有一个叠加层,应该在用户点击按钮后淡入淡出。我正在使用jQuery fadeIn和fadeOut。但是,这样做时铬的显着滞后,而在Firefox中,动画运行顺畅。
这是我的HTML:
<div class="overlay">
<div class="overlay_profile">
<div class="overlay_contents">
<div class="overlay_profile_info">
<img src="images/avatars/1.gif" />
<div class="overlay_profile_info_text_username">
Qub1
</div>
<div class="overlay_profile_info_text_other">
Level 1
</div>
</div>
</div>
</div>
<div class="overlay_close">X</div>
</div>
<div class="overlay_shadow"></div>
我的CSS:
.overlay {
display: none;
padding: 20px;
position: fixed;
top: 150px;
right: 150px;
bottom: 100px;
left: 150px;
z-index: 2;
background: #978470;
border: 3px solid #CCC;
border-radius: 20px;
box-shadow: 0 0 20px #000, inset 0 0 10px #6A5C4E;
}
.overlay_shadow {
display: none;
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 1;
background: rgba(0, 0, 0, 0.5);
}
和JavaScript:
$(document).ready(function(){
$(".menu_arrow").add(".overlay_close").add(".overlay_shadow").click(function() {
if($(".overlay").is(':visible')) {
$(".overlay").add(".overlay_shadow").fadeOut("normal");
} else {
$(".overlay").add(".overlay_shadow").fadeIn("normal");
}
});
});
有没有人知道为什么铬会滞后?这是CSS3的大量使用吗?
感谢任何帮助!
答案 0 :(得分:11)
尝试将这些规则添加到您的课程中:
{
-webkit-transform: translatez(0);
-moz-transform: translatez(0);
-ms-transform: translatez(0);
-o-transform: translatez(0);
transform: translatez(0);
}
这会强制/欺骗Chrome将CSS3操作发送到GPU,这样可以加快速度。
我想这只是因为Chrome不像Firefox那样对它转移到GPU上有点害羞。