1.常用的语义标签
article -- 定义页面独立的内容区域
aside -- 定义侧边栏内容
header -- 定义了文档的头部区域
section -- 定义文档中的区块
nav -- 定义导航栏
footer -- 定义 section 或 document 的页脚
2.兼容性
IE8及IE8以下版本中,新元素不能作为父节点包裹子元素,并且不能应用CSS样式。让CSS 样式应用在未知元素上只需执行 document.createElement(elementName) 即可实现。
所以解决办法就是:用js创建这些标签元素,并为其设置css样式
演示:用IE8及IE8以下版本运行下面的代码
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Test</title> </head> <body> <header>我是header</header> <footer>我是footer</footer> <article>我是article</article> <aside>我是aside</aside> <section>我是section</section> <nav>我是nav</nav> </body> </html>
渲染结果如下:
新的标签无法识别,需要用js创建这些标签元素,且js代码必须在Dom渲染之前运行!!!
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Test</title> <script> document.createElement('header'); document.createElement('footer'); document.createElement('article'); document.createElement('aside'); document.createElement('section'); document.createElement('nav'); </script> </head> <body> <header>我是header</header> <footer>我是footer</footer> <article>我是article</article> <aside>我是aside</aside> <section>我是section</section> <nav>我是nav</nav> </body> </html>
这样ie8就可以正常识别新的语义标签了,但是默认渲染为行内元素,需要再为其设置css样式为块级元素
<style> article,aside,header,section,nav,footer{ display:block; } </style>
这样IE8也可以正常展示新的语义标签了
3.第三方插件 html5shiv.js
H5那么多的新标签,如果每个都要通过这种方法去生产的话,是不是太麻烦了呢
所以,我们现在介绍第三种方式,直接借用前辈大牛封装好的js库 --- html5shiv.js
使用方法:直接引入标签即可(js代码必须在Dom渲染之前运行!!!)
<head> <meta charset="UTF-8"> <title>Test</title> <script src="https://cdn.bootcss.com/html5shiv/r29/html5.js"></script> </head>
4.自定义标签
在高级浏览器中,默认能识别自定义标签,只是默认将其渲染为行内元素。
可以自己给这些自定义标签设置css属性
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Test</title> <style> yyy{ display: block; } </style> </head> <body> <xxx>我是xxx标签的文本</xxx> <xxx>我是xxx标签的文本</xxx> <yyy>我是yyy标签的文本</yyy> <yyy>我是yyy标签的文本</yyy> </body> <script> // 获取第2个xxx标签 var xxx = document.getElementsByTagName("xxx")[1] // 尝试操作样式 xxx.style.color = "red" </script> </html>
渲染结果: