初学DIV+CSS应该理解HTML标签的语义

css|初学

如今Web标准都被通俗的叫做“div+css”或者“层布局”。我不反对这种便宜行事的叫法。但是这样会陷入一个误区:即大量的使用div标签作为结构元素。事实上这是一种更高级的div滥用(Jeffrey Zeldman在《网站重构》一书中提到)。

HTML为我们提供了相当丰富的标签,每个标签都有它各自的含义。我认为在设计时,除了遵循HTML语法以外,应该充分利用并遵守各标签的“语义”。如标题文字应该包含在h1-h6中,大段的文字内容应该由<p>进行分段而不是<br />,列表项应该放在ul或ol或dl中,表格形式的数据应该仍然用table布局。

为什么要这样做?一个很有说服力的原因是,保证在用户去掉CSS显示的情况下,网页能够尽量有效的将内容的结构层次显示出来。如果全部用div,当去掉CSS之后,整个网页就失去了层次,只剩下一些杂乱的文字碎片。这并不符合Web标准对低配置兼容性的要求。

我下面详细的列举一下我对一些标签的语义的理解:

p br
先说个最简单的。分段要用p标签而不是用br(甚至连续两个<br />)。这个似乎不用多说。但是有时候我们不得不放弃这个原则。一个常见的例子是论坛发帖,如果我想分段,便打回车。而如此传输到后台并显示出来的,显然就是用<br />分段的。

table th
由于大力宣扬div+css的结果,似乎现在谁用table布局谁就是未开化的土著。但我认为这种观点是不正确的。table的含义是表格,因此凡是应该以表格形式出现的数据,仍然应该用table布局。简单的例子是班级同学的花名册,包括姓名学号性别等等,这明显是一个表格形式的数据,因此应该用table布局。另一个比较值得探讨的例子是,blog里面的日历导航。我曾经有见过一个blog程序,它的日历导航里的各个日期,从1号到30号全用div套好,再使用float:left样式7个一排的排出当月的日历。当我取消浏览器的CSS显示之后,日历的那部分则从1号到30号一竖排下来。我认为这是不对的。因为日历应该是一个表格形式的数据,因此仍然应该用table布局。当取消css之后,应该仍然按照一排7个的样子归成一个表格。

th则是另一个会被忽视的标签。由于CSS的万能,所有的表格单元都可以用td加一个class属性搞定。但是从语义上讲,一些表格单元应该用th标签。比如上文说到的日历表格,里面的“MON TUE WED... SUN”这些标识星期的单元,就应该用th而不是td。

h1-h6
对于h1-h6标签,从语义上讲,它们应该适用于所有标题文字。因此,一些如<div class="diary-title>的写法都是多余的,直接写成<h1>,然后直接对h1而不是.diary-title定义CSS,不是一样的效果么?当然,这个规矩我也不能定得太死,因为有时候标题部分的结构元素并不能简单的用一个h1就能解决的。但我最多用类似<h1><span></span></h1>的方法将标题的结构嵌套得更复杂,以满足表现的需要。

但这里会出现一个语义上的分歧。h1究竟该理解为一级标题呢还是理解为1号字体大小的标题。我通常理解为一级标题,一级标题下再有小标题就用h2。但是事实上回顾HTML设计之初,h1-h6后面的数字更多的被理解为控制标题文字大小的。用h3或许只是为了使用三号大小的字体,而并非它就是三级标题。否则一级标题全用h1,个个都是斗大的字,又不得不用CSS来控制字号,感觉很累赘。所以,这是一个待商榷的问题。

ul ol
凡是需要罗列条款的,都应该用ul或者ol,而不是用p。比如招聘广告里的职位需求,比如注意事项,比如操作步骤说明。此外一个流行的用法是网页的导航菜单也用ul li来列举,然后再用CSS控制其排列方式。

应该要补充的是,别忘了li里面还可以再用ul或ol,形成第二级列表。

dl dt dd
这是一组几乎被人忘记的标签,但Jeffrey Zeldman在《网站重构》中大力推崇对它们的使用。dl应该是“defining list(或是definition list?有知道的朋友请告诉我)”的全称,一个典型的用法是字典的词条。单词的名字放在dt里面,单词的解释放在dd里面。而alistapart.com网站更加高明的,将右侧栏整个定义为dl,每个单元的标题用dt,而该单元的内容则用dd。

img
img标签本身也没啥好说的。只是想老生常谈一个,即只有当确实这个元素是内容里必须的图片的时候才使用img,否则应该用CSS定义为样式。如插图,头像,表情图标,这些是内容里必须出现的图片,用img。而其他的比如标题的背景图,列表项前面的小icon,这些都不应该用img标签。

span
span如今大有和div并驾齐驱的风头。但是事实上我认为我们还是应该遵从它最初的使用。我个人的理解,span最初就是用来带class或者style属性的。它本身不具有明确的语义。因此在文本流中,我们需要对某些文字做样式上的改变,就用span括起来。比如有些字需要加红,我就用<span class="red">。

但是值得注意的是,这样又有可能犯之前h1里面提到的问题。因为有些文字的样式其实是有现成的标签的,比如<strong>、<sub>等,我们也应该适当的给它们一些机会。

a
a是控制超连接的标签。但有些特殊的情况,我们不一定喜欢用它。比如需要弹出一个小窗口。我没怎么留心,但我想有些设计师会将onclick直接定义到“播放”小图标的<img>标签里。我个人认为还是应该在img外面加一个a,然后将onclick定义到a里面,并记住在js函数最后写上return false。如果可以,该a标签的href属性也应该写上弹出窗口的URL,保证用户在禁止JS的情况下仍能够有效的打开页面。

我暂时就列出这么多。

最后再总结一下遵循HTML标签语义的重要性。Web标准的其中一个要求是低配置的兼容性:当用户禁用图片、禁用CSS或禁用JS的时候,我们仍能够让他有效的浏览网页内容。众所周知强制alt属性就是为禁用图片时的兼容性作考虑。而正确的遵循HTML标签的语义,则是保证禁用CSS时的兼容性。只有当正确使用了HTML标签,我们的网页在“CSS裸奔”的时候,才会仍然让人看得出哪里是导航菜单,哪里是文章标题,日历表格也不会分崩离析。

时间: 2024-08-02 05:48:51

初学DIV+CSS应该理解HTML标签的语义的相关文章

div+css 如何在table标签里面建立二级菜单

问题描述 div+css 如何在table标签里面建立二级菜单 <body> <div class="ontainer"> <div class="Header" align="center"><img src="无标题.jpg" width="80%" height="160" /></div><!--定义了width为

正确理解DIV+CSS,用XHTML标签进行CSS布局

css|xhtml DIV+CSS高级布局已逐渐流行,但面对所谓DIV+CSS布局的叫法让人更为担心,不要让DIV成为Table的替代品,多层嵌套的DIV会严重影响代码的可阅读性,活用HTML为我们提供的标签吧. 什么时候应该用DIV? 虽然在这方面没有什么硬性的规定,但个人认为DIV更适用于大体框架的定位.例如我们要定义一块头部的区域,一般会这样定义一个DIV: <div id="header">这里就是头部框架里要写的内容</div> 当然,可以用class

新手入门:来理解一下所谓的DIV+CSS网页布局

css|网页 什么是标准?各位慢慢理解. 而标准的核心就是内容,表现,行为,三者分离,这一点已是共识. CSS是其中一个重要的标准,这一点大家都没有异意的. 而HTML最终是向XML发展的,大家应该也没有什么意见. 而XHTML是发展中的过渡产物,这一点大家都是知道的. 对于DIV,只是XHTML中的一个标签,是在实现标准的网站重构过程中,非常重要的一个标签.对于重构,对于楼主,可以不用DIV,而继续用你的TABLE,这是你自己的事情.但用TABLE布局的落后状况及局限性,大家都有所知晓. 到底

CSS的伪元素:标签div:before、div:after

文章简介:CSS伪元素before.after妙用:制作时尚焦点图相框 在css标签中有这样子的标签div:before.div:after,对于before.after来说有部分人是相当陌生的,那么这两个标签是什么呢?有什么用处?:befor.:after是CSS的伪元素,什么是伪元素呢?伪元素用于向某些选择器设置特殊效果.我们用CSS手册可以查询到其基本的用法: E:before/E::before 设置在对象前(依据对象树的逻辑结构)发生的内容.用来和content属性一起使用 E:aft

div css标签大全

 div css标签大全如下,CSS标签手册本站有详细介绍和教程,请登录相关页面浏览,DIV具体标签如下. DIV+CSS是网站标准(或称"WEB标准")中常用的术语之一,通常为了说明与HTML网页设计语言中的表格(table)定位方式的区别,因为XHTML网站设计标准 中,不再使用表格定位技术,而是采用DIV+CSS的方式实现各种定位. 用div盒模型结构给各部分内容划分到不同的区块,然后用css来定义盒模型的位置.大小.边框.内外边距 .排列方式等.   标签 描述 <!--

div布局-DIV + CSS设计中的DIV是指的html中的div标签吗?

问题描述 DIV + CSS设计中的DIV是指的html中的div标签吗? 在DIV+CSS设计中的DIV如果是div标签的话, 那么DIV+CSS的意思就是换行标签与层叠样式表. 这个意思好像有些别扭. 解决方案 DIV+CSS是WEB设计标准,它是一种网页的布局方法.不是指页面的div标签的. 参考:http://baike.baidu.com/link?url=lf2dUBDDlOdMJHnoAr-bUvWbZQ_JBgQr8z__vWe3mUr5XesIP_2Gf65cXxgENgzCS

DIV+CSS布局中不推荐使用的标签集合Dont Use These Tags_经验交流

做DIV+CSS页面,不推荐使用的标签代码,请尽量不要使用这些HTML标签: Do not use these html elements in html pages.  Presentational elements should not be used.  Support for some elements has been (or will be) deprecated; they should not be used.  Don't Use These Tags  Presentatio

DIV CSS网页布局实例:自定义标签布局页面

css|网页|页面 我们可以自定义标记来布局页面. 有的朋友可能有这样的疑问,自己随便定义的标记浏览器怎么能正确的认识呢? 这里我们就要用到文档的命名空间,那么命名空间又是指什么? 大家知道XML有一个很大的特点就是他的可扩展性.你可以创建你自己的标记或使用别人创建的标记,这里就存在了一个问题,即你所定义的标记和别人定义的标识有可能相同,但他们各自所表示的意义却不同. 打一个形象的比喻,比如有两个人名字都叫webjx_com,一个人在中国,一个人在外国,如果你要找他们就可以说,中国的,外国的,这

DIV+CSS页面布局中BUG解决方法

DIV+CSS布局中,出现BUG之后,可以考虑从以下几方面检查. 一.检查页面的标签是否闭合 不要小看这条,也许折腾了你两天都没有解决的 CSS BUG 问题,却仅仅源于这里.毕竟页面的模板一般都是由开发来嵌套的,而他们很容易犯此类问题. 快捷提示:可以用 Dreamweaver 打开文件检查,一般没有闭合的标签,会黄色背景高亮. 二.样式排除法 有些复杂的页面也许加载了 N 个外链 CSS 文件,那么逐个删除 CSS 文件,找到 BUG 触发的具体 CSS 文件,缩小锁定的范围. 对于刚才锁定