DivCSS:并非所有内容都必须要div做“容器”
主菜单究竟是用<div id=\"mainnav\"><ul>...</ul></div>还是<ul id=\"mainnav\">...</ul>?
这是一个博弈的问题。至今这个问题也没有人能够给出明确的答案,就连我也是如此。诚然,<div id=\"mainnav\">在只包含了一个<ul>元素的时候,这个div就显得有些冗余,但有时候为了配合美工绚丽的设计,多一层标签就意味着多一层变化(有些人在a标签里套span也是如此)。而div不带任何原始属性的先天优势也是其它标签所无法比拟的。
这个命题我只是想说明一件事,就是我们应该意识到,<div id=\"mainnav\"><ul>...</ul></div>之外,还有<ul id=\"mainnav\"></ul>这种写法,同样具有良好的结构和语义,并且省去了一层嵌套。在我们不需要为华丽的美工劳心劳神的时候,是不是也可以让结构更加简约呢?
这个命题其实还可以引申为——“并不是所有内容都需要块元素做容器”、“并不是所有链接都需要其它元素做容器”,例如很多页面都有的“更多”。有些人写做“<div class=\"more\"><a>...</a></div>”,也有人写做<p><a>...</a></p>或者<strong><a>...</a></strong>。
在这些“容器”只包含了一个<a>标签的时候,它们是否还有存在的必要?直接写成<a class=\"more\">...</a>会破坏结构吗?会缺乏语义吗?会影响布局吗?换一种思路,你也许就会有不一样的收获。