看了文章Using HTML5 semantic elements today,做了一点翻译
原文地址:
http://www.nczonline.net/blog/2011/03/22/using-html5-semantic-elements-today/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+nczonline+%28NCZOnline+-+The+Official+Web+Site+of+Nicholas+C.+Zakas%29&utm_content=Google+Reader
现在使用html5标签对于不同的浏览器大致会遇到
三个不同的问题[size=large][/size]:
(1)HTML5标签被认为是错误的,然后被完全忽略,创建DOM的时候就不管HTML5标签
(2)HTML5标签被认为是错误的但是DOM节点也会创建,只是用占位符来表示。比如section也会在DOM中被创建,但是没有任何的样式style
(3)HTML5标签被识别并且创建了DOM节点(在大多数例子中,都被看做是block元素)。
例如:
<div class="outer">
<section>
<h1>title</h1>
<p>text</p>
</section>
</div>
在浏览器:Firefox 3.6和Safai 4 中认为div有一个不知道的子元素section,section被作为inline元素在dom中创建。h1 和 p元素作为section的子 元素。因为section在DOM中,所以给他定义style是可以的。
在IE中,认为section是错误的,所以section被忽略了,h1和p作为div的子元素。就相当于:
<div class="outer">
<h1>title</h1>
<p>text</p>
</div>
解决的方法大概有三种:
1、JavaScript shims
在IE中,如果是在js中用document.createElement()动态创建元素,浏览器就会认识这个元素并且允许样式。
shims技术就是利用这种方法,在js中创建元素,比如document.createElement("section"),确保HTML5的元素能够被正确的识别。同时,shims技术还设置HTML5的元素的display:block,以确保其他浏览器也能正确的渲染。
原文作者不喜欢这种方式,因为它打破了一个web应用的原则:JavaScript不应用依赖于布局。这个原则主要是为了让web应用的代码能更好的管理。
2、Namaspace hack
IE浏览器的另外一种识别不支持的元素的方法。用XML格式的名称空间,在元素前面带上名称空间的前缀,例如:
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:html5="http://www.w3.org/html5/">
<body>
<html5:section>
<!-- content -->
</html5:section>
</body>
</html>
html5这个前缀只是一种,并不是官方的,你也可以采用其他的前缀,比如"foo".
在写样式的时候:
html5\:section {
display: block;
}
这也不是我喜欢的方法,因为我不喜欢在文件中看到满篇的名字空间元素。
3、"Bulletproof" technique
我第一次接触到这种技术是在YUIConf2010上,Tantek Çelik的发言。Tantek建议在html5的块元素里面使用div,然后在div中使用html5元素标签作为class属性。例如:
<section><div class="section">
<!-- content -->
</div></section>
这种方法确保了文档流能够被正常的渲染。在HTML5的块元素中使用块元素在不同浏览器中的不同解释:
(1)一个简单的块元素(<ie9)
(2)一个位于inline元素中的块元素(ff3.6 safai 4等)
(3)一个位于块元素中的块元素(ie9, ff4,safari 5等)
所有上面的三种情况都会被正常渲染。
Tantek指出的唯一一个例外的情况,就是hgroup,建议的写法是:
<div class="hgroup"><hgroup>
<!-- content -->
</hgroup></div>
样式的写法:
.section {
color: blue;
}
以上三种都不是完美的方法,不过作者还是比较喜欢用bulletproof方法。
分享到:
相关推荐
语义化标签是HTML5中引入的一系列新特性,旨在提高网页内容的可读性和可访问性,同时优化搜索引擎优化(SEO)。这些标签为开发者提供了更精确的方式来描述页面内容,使得浏览器、屏幕阅读器和搜索引擎能更好地理解...
【语义化HTML标签和属性】是Web开发中不可或缺的一部分,它强调了使用具有明确含义的HTML元素来构建页面内容,以实现结构和表现的分离。这种做法有助于提高页面的可读性和可访问性,同时对搜索引擎优化(SEO)极其有利...
HTML语义化标签是网页开发中的重要概念,它关乎到网页内容的结构和可读性,对于搜索引擎优化(SEO)以及无障碍访问(Web Accessibility)都起着关键作用。语义化标签是那些能够明确表达其内容含义的标签,而不是仅仅...
13-html5新增的语义标签.html
HTML:HTML5语义化标签解析.docx
HTML5的语义化标签是Web开发领域的一大进步,它为网页内容提供了更明确的结构和语义。在HTML5之前,开发者主要依赖`<div>`标签来组织页面结构,但这些`<div>`标签本身并没有传达任何特定的含义。语义化标签的引入...
HTML5的引入带来了许多革新,其中之一就是语义化标签的使用。这些标签旨在增强网页的结构,提高可读性,并使搜索引擎更容易理解页面内容。在HTML5之前,开发者普遍使用`<div>`标签来组织页面结构,但这些`<div>`并...
在 HTML 5 中,HTML 标签被分为两类:结构性标签和语义化标签。结构性标签用来定义网页的基本结构,如 `<html>`、`<head>`、`<body>` 等。语义化标签用来定义网页的内容,如 `<h1>`、`<p>`、`<img>` 等。 HTML ...
HTML5新增的语义标签.ppt
HTML5是现代网页开发的标准,它引入了许多新特性,其中包括对语义化标签的强调。语义化标签在HTML5中的重要性不言而喻,它们不仅有助于提高代码的可读性和可维护性,还对搜索引擎优化(SEO)以及无障碍访问(Web ...
你现在可以在meta 标签中使用”charset”:<meta charset=”utf-8″ /> 脚本和链接无需type <link rel="stylesheet" href="path/to/stylesheet.css" /> [removed][removed] 更加语义化的新增标签 比如...
在这个"Web-前端html+css从入门到精通 124 HTML5新语义化标签(2)"的学习资源中,我们将深入探讨HTML5中的新语义化标签,这些标签是提升网页可读性、可访问性和SEO优化的关键元素。 首先,我们要理解什么是HTML5的...
通过研究这个源代码,我们可以学习如何在实际项目中正确使用这些语义标签,以提升用户体验和搜索引擎的友好度。 此外,语义化HTML也有助于页面的长期维护和更新。当开发人员接手已有的代码时,清晰的语义结构能让...
HTML5 是一种重要的前端技术,它为Web开发者提供了许多新的特性和改进,其中包括语义化标签的引入。这些标签的设计目的是增强...作为Web前端开发者,熟练掌握和使用这些HTML5语义化标签是提升网页质量和专业性的关键。
另外,`data-*`自定义属性允许开发者存储非语义化的数据,而`aria-*`属性则有助于无障碍访问,确保残障人士也能顺利使用网站。 总结起来,HTML5元素周期表是学习和掌握HTML5的一个直观工具,它将复杂的HTML元素体系...
HTML5语义化标签是为了增强网页内容的结构和可读性,它们的引入是为了更好地描述网页内容的意义和功能,而非仅仅关注视觉样式。在没有CSS的情况下,语义化标签可以帮助浏览器、屏幕阅读器以及搜索引擎更好地理解和...
本教程聚焦于HTML5中的新语义化标签,这些标签在构建更具有可读性、可维护性和无障碍性的网页中起到关键作用。让我们深入探讨一下这些新标签。 在HTML4时代,我们通常使用和标签来组织网页内容,但这些标签并没有...
语义化标签.html
简单说下你理解的语义化,怎样来保证你写的符合语义化?HTML5语义化标签了解下?