正确渲染最初隐藏的HTML元素的方法

时间:2011-08-22 13:58:26

标签: javascript html css

我多年来一直在我的HTML中使用类似的东西来隐藏这些元素:

<div style="display: none"></div>

没关系,但我不能再忍受内嵌式了。

  1. 在JavaScript window.onload事件中以编程方式隐藏元素为时已晚 - 它会在屏幕上闪烁。

  2. 我可以创建CSS类'hidden',但是使用浏览器的激进加载策略(比如在Opera中),该块可能会出现一秒钟(在加载CSS之前)。

  3. 还有更好的方法吗?

6 个答案:

答案 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*/
}

希望这会有所帮助!