在jquery中使用hide和show时不需要的"闪烁"效果

cra*_*ver 4 html jquery

当在一些div上使用jQuery"show"和"hide"时,我在Firefox中遇到了令人讨厌的"闪烁"效果.有什么想法可以发生吗?

Ste*_*hry 6

取决于闪烁的含义(如果它只在页面加载时闪烁),而不是:

$(document).ready(function(){
   $("hide").hide();
});

<div id="hide">My Hidden Text</div>
Run Code Online (Sandbox Code Playgroud)

尝试在CSS中添加display:none:

<div id="hide" style="display:none">My Hidden Text</a>
Run Code Online (Sandbox Code Playgroud)

在允许JavaScript操作之前,CSS应用于DOM,因此如果这样做,加载页面时应该没有闪烁.

另外值得注意的是,在Firefox中,当您更改窗口大小(垂直)并且当前滚动位置接近或位于窗口底部时,会出现导致窗口闪烁的错误.


dbe*_*zzi 6

闪烁来自jQuery代码的这一行,在show()方法中:

 var elem = jQuery("<" + tagName + " />").appendTo("body"); 
Run Code Online (Sandbox Code Playgroud)

它可以检测它应该用于display属性的CSS,因为不同的标签会得到不同的值(div:block,span:inline,tr:table-row等).以这种方式操作DOM会导致闪烁.

使用:

jQuery('...').css('display','block');
Run Code Online (Sandbox Code Playgroud)

这通常会做同样的事情.

  • 它仍然会导致闪烁。 (2认同)