我应该使用新的HTML5语义元素吗?

Dyl*_*cho 6 javascript css html5 modernizr

我正在升级我的网站,这涉及到使用新的HTML5语义元素而<nav> <header> <footer> <aside> <section>不是常规旧<div>元素的决定.

我计划支持IE7和IE8,但我知道这些版本不支持上述语义元素.我已经读过像Modernizr,Initializr和HTML5shiv这样的'插件',而且我知道旧的浏览器会支持新的元素,如果启用了JavaScript,但如果不是,我该怎么办呢?

默认情况下,<html>标记被赋予类,no-js如果启用了JavaScript,则Modernizr/Initializr将替换此类js.这一切都很好,但有一些我不确定的事情.到目前为止,涵盖的是什么?

排序

  • 如果启用了JavaScript,则Modernizr/Initializr支持IE7和IE8.
  • 使用reset.css文件,其他旧版浏览器支持这些新标记.
  • 现代浏览器都很好.

问题

  • 如果JavaScript被禁用,我应该怎么做IE8及以下?将no-js类添加到<html>标签,所以我究竟有什么可以做呢?
  • 我怎样才能<noscript>在这里利用我的优势?我不希望通过编码使页面太大.

因此,除了这些问题之外,我还想问一下,使用这些标签是否真的值得,当我可以使用<div>既支持旧浏览器的好的标签,又通过消除所需的编码来保持文件大小标签适用于旧浏览器?

谢谢你,迪伦.

got*_*itz 2

最好同时使用两者,例如

<nav>
    <div>
        <ul>
        <!-- etc -->
        </ul>
    </div>
</nav>
Run Code Online (Sandbox Code Playgroud)

如果您需要支持那些过时的浏览器,我不会做更多的事情。尽管有这些好处,但并不值得付出额外的努力。

  • @DylRicho:您需要确保“nav”的填充/边距为“0”,因为如果未加载 shiv,这就是 IE7/8 上的内容(我认为)。但问题是,在正常的 CSS 中,您始终必须设置“div”的样式,而不是“nav”。“nav”将是额外的,纯粹是为了语义。但如果你真的想支持这些*不*JavaScript 的旧浏览器(哇,这是一个很小的人口),我看不到太多选择。:-) (2认同)