各位大牛,小弟最近在做个页面,其中要做一个附带一点效果的导航栏,用到了一个Jquery插件,http://labs.makotokw.com/s/jquery/menu这个插件所需的代码结构是
<ul>
<li></li>
<li></li>
</ul>我按照这个插件的要求定义好css,然后查看页面。现在有个问题,在页面打开的时候首先显示的是没有加入css时这个<ul>的显示,也就是个最基本的无序列表。差不多0.5秒后,这个<ul>的样式变成我所定义的css,即我想要的导航栏。也就是说刚开页面的时候js是没有执行,<ul>没有加入我定义的css,在js执行后,css加入,显示正常。我试过将插件的初始化js放在document ready事件里,window load事件里,和</body>前,但都不能解决问题。并且我用的一些其他牵涉到css的插件也会有这个问题。想请教如何解决,谢谢!
<ul>
<li></li>
<li></li>
</ul>我按照这个插件的要求定义好css,然后查看页面。现在有个问题,在页面打开的时候首先显示的是没有加入css时这个<ul>的显示,也就是个最基本的无序列表。差不多0.5秒后,这个<ul>的样式变成我所定义的css,即我想要的导航栏。也就是说刚开页面的时候js是没有执行,<ul>没有加入我定义的css,在js执行后,css加入,显示正常。我试过将插件的初始化js放在document ready事件里,window load事件里,和</body>前,但都不能解决问题。并且我用的一些其他牵涉到css的插件也会有这个问题。想请教如何解决,谢谢!
//defer作用是文档加载完毕了再执行脚本,这样回避免找不到对象的问题---有点问题
setTimeout('ID.className = "Class"',499);})
正常情况下放在head标签里的JS和CSS会受到浏览器的特别优待,这些JS和CSS没下载完成之前浏览器是处于阻塞状态的,即不展现后面的内容(至于是不是继续下载这个就不清楚了)。所以当我们看到后面内容的时候就一定是JS和CSS都加载完成了的时候,所以从我们看到内容的时候起CSS就已经被应用了页面中了。如果CSS是由JS来加载的,那就没有这个优待了,也就是说如果页面后面的内容先于CSS加载完成(多数情况都会是这样),那你会先看到没有应用CSS样式的HTML,等CSS加载完成之后才能看到应用完CSS的样子。根据这个原理,把初始化JS放进document ready/window onload里面,可想而知,只会使情况更糟而已。
所以这种情况据个人所知……无解。看看别人有没有什么高招吧。
对于你遇到的问题
你可以在相关的地方自己加上页面载入js后会添加的css,就可以解决这个问题了