页面'时停止javascript闪烁;他的内容被操纵了?

页面'时停止javascript闪烁;他的内容被操纵了?,javascript,Javascript,当我创建的站点使用javascript来操纵页面时,这种操纵发生在页面加载时,我经常会得到一种令人讨厌的闪烁效果 例如,如果我有一个手风琴,完整的内容将需要加载为html,然后一旦加载就可以用javascript包装。这意味着整个内容在一瞬间是可见的,然后随着部分内容被隐藏而“闪烁” 一种解决方案是用css隐藏任何闪烁的内容,然后用javascript显示(必要时)。问题是,对于没有javascript的用户,页面无法正常工作 有更好的办法吗? 谢谢一个很好的方法就是使用 我认为通常的做法是尽快

当我创建的站点使用javascript来操纵页面时,这种操纵发生在页面加载时,我经常会得到一种令人讨厌的闪烁效果

例如,如果我有一个手风琴,完整的内容将需要加载为html,然后一旦加载就可以用javascript包装。这意味着整个内容在一瞬间是可见的,然后随着部分内容被隐藏而“闪烁”

一种解决方案是用css隐藏任何闪烁的内容,然后用javascript显示(必要时)。问题是,对于没有javascript的用户,页面无法正常工作

有更好的办法吗?
谢谢

一个很好的方法就是使用

我认为通常的做法是尽快在body中添加一个“js”类:

<!doctype html>
...
<body>
<script>document.body.className='js';</script>

保罗·爱尔兰(Paul Irish)对此进行了验证——它基本上与您描述的方法相反,使用CSS隐藏,直到加载JS。通过添加
document.documentElement.className+='js'
总而言之,在DOM就绪之前隐藏未设置样式的内容基本上是有好处的,而且对于那些没有Javascript的用户来说也不会有问题。

如果在页面加载后更改css属性,就会出现这种闪烁现象。最好的方法是使css具有javascript操纵它的相同属性。通过这种方式,您还可以跳过浏览器中额外的回流/重绘,从而提高页面的效率。然而,一种方法是最小化javascript并在css加载行之前加载它。

没有更好的方法使用渐进增强。在某个时候,您需要加载整个页面,然后使用javascript隐藏您不想看到的内容。然而,由于javascript只能在DOM上执行,一旦它被写入,您就必须等待它被写入,然后才能隐藏它。这似乎有悖常理,但就是这样。这就是我们为操作DOM所付出的代价:-)

您使用什么事件来初始化javascript?这是上装的吗?这绝对是最好的解决方案。jQuery的ready函数等待DOM完全就绪。如果你想在一个元素上快速执行,那么我认为这是一种方法。你甚至可以在DOM完全准备好之前执行JS。Searlea的答案如下。
.js .accordion:nth-child(n+1) { display: none }