我想使用一些语义[X] HTML标记而不是<div>
s:<article>
,<product>
,<footer>
等等。其中一些已经呈现但是,在即将推出的HTML5中,它并未得到完全支持。
渲染时我可能面临哪些可能的缺点?使用CSS,JS?
我记得的是:IE6无法克隆它不知道的标签。
答案 0 :(得分:7)
添加以下JavaScript修复程序使自定义HTML5标记在IE中运行。事实上,他们在我尝试的其他浏览器中工作。我使用HTML5构建了我的网站,虽然它在IE6和7中看起来不太好,但它仍然有效。以下是您在模板标题中添加的代码:
<!--[if IE]> <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> <style type="text/css"> .clear { zoom: 1;display: block;} </style> <![endif]-->
使用HTML5标签可以增强对CSS的控制,因为它们具有语义特性。实际上制作网站要容易得多,因为如果正确使用标签,它们就更容易理解。
在任何地方使用div都很好,因为如果它们具有适当的ID和类,它们仍然是语义的,但使用HTML5标记,您可以更快地识别页面结构。
答案 1 :(得分:3)
问题提到'克隆',因此IE6是否可以设置自定义元素(它可以)的样式并不是真正的问题,如果IE6无法管理自定义元素(如果IE6无法管理)我不知道。)
如果想法只是为自定义元素设置样式,那么每个浏览器都可以执行此操作。因为IE6,你需要命名自定义元素,因此&lt; prefix:custom /&gt;并在HTML元素中指定名称空间,因此&lt; html xmlns:prefix =“http:// domain / path”&gt;。
要在所有浏览器中完全正确(以及Javascript选择自定义元素),您还需要提供自定义DTD,以便自定义元素的命名空间一致地工作,因此&lt;!DOCTYPE html SYSTEM“http: //domain/path/custom.dtd">然后编写DTD,遗憾的是,它不是一件容易的事,必须包含它替换的HTML DTD的完整替代品。
因此,在应用自定义DTD,指定自定义命名空间并应用自定义元素后,可以在任何浏览器中设置样式,因此&lt; style&gt;前缀\:custom {background:red;}&lt; / style&gt;。
这在所有浏览器中都能保持一致,但值得商榷。它允许使用一致的有意义的标记,这些标记由命名空间清晰描绘,并且不会因级联而污染样式,并避免使用div-itis。
然而,在涉及复杂性的网络开发方面,它有点像一个贫民窟,可能没有得到足够的回报。
答案 2 :(得分:2)
即使您使用JS使IE 6“识别”HTML5标签,您仍然会遇到问题,因为IE 6不允许嵌套此类标签。
另一方面,如果您的网页不是面向应用程序,而是纯粹用于演示,那么您也可以使用普通的旧XML和样式。它与传统的制作页面方式略有不同,但在XML术语中没有“旧”或“新”标签。
请参阅此页 - http://feeds.feedburner.com/blogspot/MKuf(Google的博客供稿) - 作为样式化XML的示例。 JS和DOM API的工作也一样。
答案 3 :(得分:2)
这并不完全与您的问题有关,但就计算机而言,<product>
并非语义。
人类可以阅读并思考“啊哈,这必须是一种产品,在这个购物网站的背景下意味着我可以购买的东西,因此并不意味着'通过乘以数量获得的数量',因为它可能在mathoverflow.com上做“。这对任何阅读代码的人来说都是非常有用的,所以它在这个意义上是语义的。
但是,就计算机解析您的页面而言,HTML(或者是人在浏览器中查看HTML页面而不是阅读代码)时,它只是一个未知标签,因此不会获得任何有用的默认样式(与<p>
标记不同,它可以获得良好的边距以使屏幕上的内容可读)或行为(与<a>
标记不同,如果您为其提供href
属性,则可以单击该标记。
当人们通过HTML5等规范同意标签的含义时,计算机只会获得语义。
答案 4 :(得分:1)
除非您正在为一组非常有限的浏览器开发,否则这听起来不错。如果它在旧版浏览器中完全有效,它将无法正常工作;我们可以期待所有常见浏览器提供良好的HTML 5支持。