dudo博客

    页面中header部分一般位于最上端(有时根据需要也会位于某一侧,不管它在页面中的位置如何,在XHTML代码中它总是优于其它元素先加载),内容主要包括网站名称(Logo,次级标题可能是网站的一句口号等)和网站的导航部分。在推行Web标准的现代网络中,Web中对于header的代码结构似乎已经趋于稳定化。下面是一个典型的header代码结构:

<div id="header">
	<h1>dudo 博客</h1>
	<ul>
		<li>首页</li>
		<li>CSS</li>
		<li>XHTML</li>
		<li>JavaScript</li>
	</ul>
</div>

这段代码我们可以通过添加CSS代码来实现多种布局样式。

    之所以说是典型的布局方式,因为它既够简洁又有语义。<h1></h1>说明了标签内容在页面中的作用和重要层次,<ul>、<li>无序列表列出了站内的所有主要内容分类,并通过<li>标签说明它们是同级相邻的,等等,诸如此类。

    但是我们要考虑考虑。导航(也就是我们的menu)在页面应该处于什么样的位置呢?和普通文本相比,它们肯定会处于更高级的位置之上。或者这么说,导航(menu)应该和网站标题的关系更加亲密一些。在我们上面的代码结构中,我们看不出menu和<h>之间的关系来,或者说这些<ul>、<li>标签与<h1>的关系和footer中的<ul>、<li>与<h1>的关系没有任何区别。

    因此我们要换一个方式来表达这个语义。我们很容易就会想到使用<dl>、<dt>、<dd>。<dl>来定义一个列表,<dt><dd>说明附属关系。因此上面的header部分我们可以这样来写:

<div id="header">
	<dl>
		<dt>dudo 博客</dt>
		<dd>首页</dd>
		<dd>CSS</dd>
		<dd>XHTML</dd>
		<dd>JavaScript</dd>
	</dl>
</div>

如果你还有其它的内容要在header中出现,则可以配合<ul>、<li>一起使用:

<div id="header">
	<dl>
		<dt>dudo 博客</dt>
		<dd id="siteMenu">
			<ul>
				<li>首页</li>
				<li>CSS</li>
				<li>XHTML</li>
				<li>JavaScript</li>
			</ul>
		</dd>
		<dd id="userMenu">
			<ul>
				<li>加入收藏</li>
				<li>设为首页</li>
				<li>Engling Version</div>
			</ul>
		</dd>
	</dl>
</div>

这段代码似乎更加饱满一点。我们只从代码就能看出标题与导航的关系,就是<dt>、<dl>的关系。

    这似乎有一个问题:<h1></h1>没有了!是的,我们为了表达标题和导航(menu)之间的关系放弃了<h1>的使用。这里,我对是否要在网站标题中使用<h1>持怀疑态度。以我的观点,<h1>不应该出现在页面内容的外围。而我们经常这么去使用(我也经常去这样使用)是为了提高你的“网站标题”在页面中的重要程度。如果对于首页来说可以这么做的话,那么对于子页面来说,页面的内容才是最重要的。有人这么去理解<h1>的使用:网站标题处于最高层次,所以它应该使用<h1>,而页面中的所有需要使用标题的地方都应该使用<h2>、<h3>等等。按这种说法,<h1>似乎只能在一个页面中出现一次。首先,W3C对于<h>标题的规定中没有这一条,其次,导航(menu)要比文章标题级别要高(因为网站的目录就是:网站——分类(用menu来表示)——文章)所以导航应该用二级标题<h2>,充其量文章的标题也只能用个<h3>。这无疑是一种过度语义化,我们根据自己的理解赋予了标签不具有的含义。

    要想突出标题的重要,只用一个方法足够:在<head>中指定<title>…<title>的内容即可。因此,个人建议,在<header>中的设计代码结构使用<dl>、<dt>、<dd>要比使用<h1>和<ul>更具语义。如果你觉得网站的标题部分就应该用<h1>来表示,那么可以在<dt>中嵌套<h1>,合理的语义表达而增加标签并不和代码简洁原则冲突。那么上面的代码

<div id="header">
	<dl>
		<dt>
			<h1>dudo 博客</h1>
		</dt>
		<dd id="siteMenu">
			<ul>
				<li>首页</li>
				<li>CSS</li>
				<li>XHTML</li>
				<li>JavaScript</li>
			</ul>
		</dd>
		<dd id="userMenu">
			<ul>
				<li>加入收藏</li>
				<li>设为首页</li>
				<li>Engling Version</div>
			</ul>
		</dd>
	</dl>
</div>

感谢大家的留言,的确在<dt>中嵌套<h1>的方法不可取,这一点是我没有考虑周全,所以使用最终方法应该选择代码三。当然,很多人不支持这种想法,在这里我只是提出一个建议,希望可以抛砖引玉,一起交流。

友情提醒:本文纯属一家之言,水平有限,谬误难免,所以您在转载此文时一定要注明出自www.dudo.org 以免替我挨拍。



共有(13)条评论

Ghost 发表于 2008-6-07 at 22:41 #1楼

很好,大家都重视语义,但你使用dl来表示导航,就让我有点意外了。
dl应该是“定义列表”吧,也就是说用于名词的解释,难道说二级菜单是对站点的解释?[reply=dudo,2009-04-25 09:30 PM]dl恰恰能说明菜单(其实不是菜单,而是网站的分类目录)和网站(标题)之间的关系。昨天看到蓝色理想有人在分析Adobe.com的网站,它的header也是这样设计的,如果没记错的话在此之前的Macromedia.com似乎也使用过

来处理header内的Menu[/reply]

[回复]


robben 发表于 2008-6-07 at 23:29 #2楼

首先先不管dl在这里的用法是否正确,dt里面出现h1是不正确的dt里面是不允许出现block级元素.
dl是定义列表,dd都是对dt进行描述,但我认为您的这种用法中dd没有对dt进行描述的行为。[reply=dudo,2009-04-25 09:30 PM]我认识网站的目录分类就是对网站的一种描述~所以我才会觉得可能使用

能够体现出这种关系来。[/reply]

[回复]


9517 发表于 2008-6-08 at 09:40 #3楼

独立博客站长QQ群 42794552 百度HI群 1048239 欢迎加入

独立博客站长论坛 http://www.iblogformoney.com.cn/

[回复]


lijing0033 发表于 2008-6-08 at 14:38 #4楼

语义化应当在结构清晰的基础上,过于“语义化”会让代码显得有些罗嗦

[回复]


happy 发表于 2008-6-08 at 20:23 #5楼

端午快乐啊

[回复]


忘忧草 发表于 2008-6-09 at 12:11 #6楼

博主,DT里是只允许放置inline元素的
放H1就违规咯

[回复]


忘忧草 发表于 2008-6-09 at 12:13 #7楼

dl dt dd的一个典型用法是faq
对于在这里的用法,我个人也觉得不是特别妥当

[回复]


lin1605 发表于 2008-6-09 at 13:10 #8楼

学习了[lol]

[回复]


Tyrone 发表于 2008-6-09 at 13:57 #9楼

dt里h1
网站菜单用dl
呵呵,没法接受

[回复]


盛传 发表于 2008-6-09 at 15:34 #10楼

过份追求语义会消耗太多的东西。简洁而有语义,这是一个网站建设者应该考虑与平衡的。

例四比例一多了多少字节?如果是个大网站,会浪费多少带宽、浪费用户的多少等待时间、电费?这一切都是为了该死的标准?[wink]

[回复]


锐风 发表于 2008-6-16 at 09:54 #11楼

[quote=盛传]过份追求语义会消耗太多的东西。简洁而有语义,这是一个网站建设者应该考虑与平衡的。

例四比例一多了多少字节?如果是个大网站,会浪费多少带宽、浪费用户的多少等待时间、电费?这一切都是为了该死的标准?
同意观点.

[回复]


阿超 发表于 2008-7-28 at 02:50 #12楼

我想在普通网页中实现用

怎样实现,请教一下。
如果加入

的话,字体很大,但是又不能用CSS。

[回复]


长春网站制作 发表于 2011-11-17 at 16:35 #13楼

用css给可以给文字加样式

[回复]


随便说两句
名字:
Email:
网站:
内容:

无觅相关文章插件,快速提升流量