我多年来一直在我的HTML中使用类似的东西来隐藏这些元素:
<div style="display: none"></div>
没关系,但我不能再忍受内嵌式了。
在JavaScript window.onload
事件中以编程方式隐藏元素为时已晚 - 它会在屏幕上闪烁。
我可以创建CSS类'hidden',但是使用浏览器的激进加载策略(比如在Opera中),该块可能会出现一秒钟(在加载CSS之前)。
还有更好的方法吗?
答案 0 :(得分:14)
据我所知,class="hidden"
方法是最好的,也是最常用的方法。我建议你使用class="hidden"
。
“但是使用浏览器的激进加载策略(如在Opera中),该块可能会出现一秒钟(在加载CSS之前)。”
我不使用Opera,但是如果任何浏览器在应用样式之前加载了页面,那么很多东西看起来都不对,而不仅仅是你的隐藏元素。我不知道有任何浏览器这样做。
答案 1 :(得分:6)
我最近开始使用节点对象,我越来越喜欢这种方法。这样您就不必使用隐藏的HTML元素,只需放置一个锚点:
<a name="some-anchor" id="some-anchor-id" />
然后将其替换为已创建的节点。这样您就不必担心加载时闪烁的元素,因为不会有任何元素。
答案 2 :(得分:2)
根据元素的不同,在页面加载后使用javascript生成和插入元素是可以接受的(而不是在页面加载后隐藏它)。只是一个想法,虽然它没有优雅地降低没有启用JavaScript的用户......
答案 3 :(得分:1)
如果您只有一个HTML页面,那么会显示这些元素吗?
默认情况下会向屏幕阅读器显示这些元素,这不是很好或可以访问吗?
如果你有HTML + CSS页面你不能取消隐藏这些元素,那么除了黑帽SEO技巧之外,它们没有任何意义。
如果你有一个HTML + CSS + JS页面,那么就有价值了。
启用JS时,只有它们才有价值。这意味着它们应该__在javascript中存在
使用javascript创建这些元素并将它们注入DOM中。
如果您使用HTML,HTML + CSS,HTML + CSS + JS从头开始构建您的网站,那么您会意识到它们属于您的javascript代码。欢迎阅读有关Progressive Enhancement
的更多信息答案 4 :(得分:1)
您可以在页面中定义类。它比内联更干净,但你必须在所有页面上都有这个单一的类定义。但话说回来,无论如何我都会尝试使用单个动态页脚/标题。
答案 5 :(得分:1)
您可以将隐藏的样式添加到固定位置,这将使其脱离浏览器窗口。这可能是避免在Opera中使div闪烁的解决方案。
例如:
.super_hide{
position:fixed;
top:-1000px; /* you would need to know how height the content is or put something huge*/
}
希望这会有所帮助!