hitris 2009-07-14
相信大家都知道HTML和CSS,知道HTML结构和CSS表现分离,知道HTML语义化,这些都是这几年的热门关键字。语义化的HTML在国内也是一两年前才开始被追捧的,看看现在群里谈论的HTML结构,关于HTML结构的面试题,语义化的HTML占据了很大一部分。那么为什么要使用语义化的HTML?语义化的HTML到底有什么好处呢?
HTML是提供网页文档内容的上下文结构和含义;HTML本身是没有表现的,我们看到例如<h1>是粗体,字体大小2em,加粗;<strong>是加粗的,不要认为这是HTML的表现,这些其实HTML默认的CSS样式在起作用,所以首先我们要知道HTML和页面的表现是没有关系的,这些是CSS的事情。HTML在页面中的作用就是结构和含义,通俗点说就是划分内容,这里放什么,我们放的是什么。
语义化的HTML结构首先要强调HTML结构
HTML结构是页面的骨架,一个页面就好像一幢房子,HTML结构就是钢精钢筋混泥土的墙,一幢房子如果没有钢精钢筋混泥土的墙那就是一堆费砖头,不能住人,不能办公。CSS是装饰材料,是原木地板,是大理石,是油漆,是用来装饰房子的,CSS的强大就不用多说了,CSS如果没有HTML结构那就是一堆木板,一同油漆,没有了实际使用价值。CSS完全依靠引用它的(X)HTML文档。如果你想使CSS的能力充分发挥到极致,提供一个用既干净又有结构的内容的HTML是非常必要的,“HTML是在互联网上发布超文本的通用语……HTML使用标签来对文本结构化”。
语义化的HTML结构怎么写?
HTML是一种对文本内容进行结构和意义(或者说“语义”)进行补充的方法。它会告诉我们说:“这行是一个标题,这几行组成了一个段落。这些文字是项目列表,这些文字是链接到互联网上另一个文件的超链接。”值得注意的是,不应该让HTML来告诉我们:“这些文字是蓝色的,这些文字又是红色的。这部分内容是最最靠右的一栏,这行内容是斜体字。”这些和表现相关的信息是CSS的工作。在做前端开发的时候要记住:HTML告诉我们一块内容是什么(或其意义),而不是它长的什么样子。当我们提到“语义标记”的时候,我们所说的HTML应该是完全脱离表现信息的,其中的标签应该都是语义化地定义了文档的结构。
写语义化的HTML结构其实很简单,首先掌握HTML中各个标签的语义,<div>是一个容器;<strong>是表示强调;<ul><li>是一个无序列表等等…在看到内容的时候想想用什么标签能更好的描述它,是什么就用什么标签。
语义化的HTML结构到底有什么好处?
我们知道HTML5新增的标签,比如<header>和<footer>,HTML正在朝着更加健壮的语义化的HTML结构发展,xHTML2在这点上没HTML5先进,这也是xHTML2死亡的一个原因,这一点也说明了语义化的HTML结构是HTML的发展趋势。
1.去掉或样式丢失的时候能让页面呈现清晰的结构:
HTML本身是没有表现的,我们看到例如<h1>是粗体,字体大小2em,加粗;<strong>是加粗的,不要认为这是HTML的表现,这些其实HTML默认的CSS样式在起作用,所以去掉或样式丢失的时候能让页面呈现清晰的结构不是语义化的HTML结构的优点,但是浏览器都有有默认样式,默认样式的目的也是为了更好的表达HTML的语义,可以说浏览器的默认样式和语义化的HTML结构是不可分割的。
2.屏幕阅读器(如果访客有视障)会完全根据你的标记来“读”你的网页.
例如,如果你使用的含语义的标记,屏幕阅读器就会“逐个拼出”你的单词,而不是试着去对它完整发音.
3.PDA、手机等设备可能无法像普通电脑的浏览器一样来渲染网页(通常是因为这些设备对CSS的支持较弱).
使用语义标记可以确保这些设备以一种有意义的方式来渲染网页.理想情况下,观看设备的任务是符合设备本身的条件来渲染网页.
语义标记为设备提供了所需的相关信息,就省去了你自己去考虑所有可能的显示情况(包括现有的或者将来新的设备).例如,一部手机可以选择使一段标记了标题的文字以粗体显示.而掌上电脑可能会以比较大的字体来显示.无论哪种方式一旦你对文本标记为标题,您就可以确信读取设备将根据其自身的条件来合适地显示页面.
4.搜索引擎的爬虫也依赖于标记来确定上下文和各个关键字的权重.
过去你可能还没有考虑搜索引擎的爬虫也是网站的“访客”,但现在它们他们实际上是极其宝贵的用户.没有他们的话,搜索引擎将无法索引你的网站,然后一般用户将很难过来访问.
5.你的页面是否对爬虫容易理解非常重要,因为爬虫很大程度上会忽略用于表现的标记,而只注重语义标记
因此,如果页面文件的标题被标记,而不是,那么这个页面在搜索结果的位置可能会比较靠后.除了提升易用性外,语义标记有利于正确使用CSS和JavaScript,因为其本身提供了许多“钩钩”来应用页面的样式与行为.
SEO主要还是靠你网站的内容和外部链接的。
background-color: blue;background-color: yellow;<input type="button" value="变蓝" @click="changeColorT