HTML中列表中共有三种:有序列表、无序列表和定义列表。
1、有序列表是一列使用数字进行标记的项目,它使用<li>包含于<ol>标签(ordered lists)内;
<ol>
<li>开始部分</li>
<li>次要部分</li>
<li>结尾部分</li>
</ol>
2、无序列表是一组使用黑点状进行标记的项目,它使用<li>包含在<ul>标签(unordered lists)内;
<ul>
<li>关于主题</li>
<li>关于形式</li>
<li>关于内容</li>
</ul>
3、定义列表语义上表示项目及其注释的组合,它以<dl>标签(definition lists)开始,自定义列表项以<dt>(definition title)开始,自定义列表项的定义以<dd>(definition description)开始。
<dl>
<dt>CSS</dt>
<dd>CSS概念</dd>
<dd>CSS应用</dd>
<dd>CSS hacks</dd>
</dl>
从语义上来讲,三组标签分别对应不同具有含义的列表:无序列表适合成员之间无级别顺序关系的情形;有序列表适合各项目之间存在顺序关系的情形;定义列表用于一个术语名对应多重定义或者多个术语名同一个给出的定义,也可以只有术语名称或只有定义,也就是说<dt>与<dd>在其中数量不限、对应关系不限。
列表的CSS
列表最重要的CSS属性便是list-style属性,它的语法如下:
list-style:list-style-image||list-style-position||list-style-type
list-style-image可定义列表前所使用图片,list-style-position属性取值含outside、inside;outside为默认值,列表项目标记此时被放置在文本以外,它将环绕文本在文本之外,inside列表项目旋转在文本以内,环绕文本对齐。
列表最重要的CSS属性便是list-style属性,它的语法如下:
list-style:list-style-image||list-style-position||list-style-type
list-style-image可定义列表前所使用图片,list-style-position属性取值含outside、inside;outside为默认值,列表项目标记此时被放置在文本以外,它将环绕文本在文本之外,inside列表项目旋转在文本以内,环绕文本对齐。
<style type="text/css">
ul{border:dotted 1px #666;}
li{background:#ddd;}
ul.out{list-style-position:outside;}
ul.in{list-style-position:inside;}
</style>
list-style-position为outside
<ul class="out">
<li>关于主题</li>
<li>关于形式</li>
<li>关于内容</li>
</ul>
<h4>list-style-position为inside</h4>
<ul class="in">
<li>关于主题</li>
<li>关于形式</li>
<li>关于内容</li>
</ul>
若列表外标签<ul>或<dl>或<ol>的padding-left设置为0,且list-style-position为outside时,列表符号将不会显示,如上例中ul添加padding-left:0;将显示如下:
list-style-type为列表显示类型 ,它共有9种常见属性值:
- disc:默认值。实心圆
- circle:空心圆
- square:实心方块
- decimal:阿拉伯数字
- lower-roman:小写罗马数字
- upper-roman:大写罗马数字
- lower-alpha:小写英文字母
- upper-alpha:大写英文字母
- none:不使用项目符号
我们可以看到,三种不同列表实际上只是list-style-type默认值不一样而已,通过设置list-style-type即可实现不同显示效果。
列表之间的嵌套
列表嵌套的html书写是不少人容易犯的错误,经常写错格式是这样的:
<ul>
<li>男性</li>
<li>
<ol>女性
<li>女孩子</li>
<li>姑娘</li>
<li>大妈</li>
</ol>
</li>
</ul>
这里包括两处错误:一是<ul>后不允许直接跟文字,二是这里的文字“女性”应当在第二个<li>后。正确格式如下:
<ul>
<li>男性</li>
<li>女性
<ol>
<li>女孩子</li>
<li>姑娘</li>
<li>大妈</li>
</ol>
</li>
</ul>
使用适合的标签进行合理的嵌套可以实现很多复杂的布局,比如常见的tab标签、滑动门等完全不需要使用js操作DOM即可完成,而且实现简单,语义性强。例如还有这篇文章定义列表dl打造图文并茂的CSS列表元素。
下例以文章列表为例,html如下:
<h4>www.51obj.cn站点文章列表摘要</h4>
<dl>
<dt><a href="http://www.51obj.cn/" title="51obj.cn">文章一:javascript程序的优化</a></dt>
<dd>文章发布时间:2010-4-17</dd>
<dt><a href="http://www.51obj.cn/" title="51obj.cn">文章二:深入解析javascript中eval</a></dt>
<dd>文章发布时间:2010-4-17</dd>
<dt><a href="http://www.51obj.cn/" title="51obj.cn">文章三:实现SQLite高并发的问题</a></dt>
<dd>文章发布时间:2010-4-17</dd>
</dl>
CSS样式如下:
<style type="text/css">
h4{font-size:14px; color:#333;}
a{color:#069;}
dl{ border:dashed 1px #666; font-size:14px; padding:4px; background:#FDFBDB;}
dt{clear:left; float:left; padding:4px 0;}
dd{ text-align:right; padding:4px 0;font-size:12px; color:#666;}
</style>
效果图: