传统的HTML元素包括有序列表(ol)、无序列表(ul)和描述列表(dl),HTML5标准新增了details和summary元素,用于显示摘要和详细内容组成的结构,本文将介绍相关元素及样式的应用。
有序列表(ordered list)中,列表项(list item)可以使用数字、英文字母、罗马数字等有序字符作为标识。
有序列表使用ol元素定义,<ol>标记中可以使用type属性指定有序字符的类型,常用的序号类型包括:
下面的代码显示了数字序号的列表。
<ol type="1"> <li>项目一</li> <li>项目二</li> <li>项目三</li> <li>项目四</li> <li>项目五</li> </ol>
本例,不使用type属性会有相同的结果,显示效果如下图所示。
下图显示了大小字母和罗马数字序号列表的效果。
无序列表(unordered list)中可以使用图形或图片作为列表项符号。无序列表使用ul元素定义,其中的列表项同样使用li元素定义。在<ul>标记中,可以使用type属性定义列表项符号的类型,默认为disc,显示为实心圆,此外还可以使用circle(圆环)和square(实心方形)。下面的代码定义了列表项符号为实心圆的无序列表。
<ul type="disc"> <li>项目一</li> <li>项目二</li> <li>项目三</li> <li>项目四</li> <li>项目五</li> </ul>
本例,删除<ul>中的type属性会得到相同的结果,列表显示效果如下图所示。
下图显示了type属性设置为circle和square值的效果。
稍后在列表样式中可以看到如何将图片作为列表项标识。
描述列表(description list)中,每一个列表项分别包含标题(title)和描述(description)两个部分,定义的元素包括:
下面的代码演示了描述列表的应用。
<dl> <dt>标题一</dt> <dd>描述一</dd> <dt>标题二</dt> <dd>描述二</dd> <dt>标题三</dt> <dd>描述三</dd> </dl>
默认显示效果如下图所示。
定义有序和无序列表的列表项符号时,可使用CSS样式中的list-style-type属性,其常用属性值包括:
使用图片作为列表项标识时,可以使用CSS样式中的list-style-image属性设置,其属性值可以使用url()函数指定图片的位置。首先,在/demo目录下创建一个listitem.png图片,使用尺寸16*16像素即可,然后在/demo/test.html页面中修改代码如下。
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <style> ul { list-style-image:url(listitem.png); } </style> </head> <body> <ul> <li>项目一</li> <li>项目二</li> <li>项目三</li> <li>项目四</li> <li>项目五</li> </ul> </body> </html>
本例准备的listitem.png图片为图钉,显示效果如下图所示。
实际应用中,列表除了常规用途,还经常作为菜单或导航元素,样式设计时,列表及列项的缩进与边距设置是需要注意的地方;下面的代码,列表和列表项会显示1像素的边框,以此来观察其默认的缩进与边距设置。
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <style> div { border:1px solid black; } ul { border:1px solid red; } li { border:1px solid blue; } </style> </head> <body> <div> <ul> <li>项目一</li> <li>项目二</li> <li>项目三</li> <li>项目四</li> <li>项目五</li> </ul> </div> </body> </html>
代码在Chrome浏览器显示的默认效果如下图所示。
从图中可以看到,列表项图标的位置在项目内容的外侧,可以使用CSS样式中的list-style-position属性设置,默认为outside,放在列表项内部可以使用inside值。列表会有一定上、下边距;列表项左侧则有ul元素的内缩进。下面的代码将列表中所有的外边距和内缩进设置为0px,并将列表项符号放在列表项内部。
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <style> div { border:1px solid black; } ul { border: 1px solid red; margin: 0px; list-style-position: inside; padding: 0px; } li { border:1px solid blue; } </style> </head> <body> <div> <ul> <li>项目一</li> <li>项目二</li> <li>项目三</li> <li>项目四</li> <li>项目五</li> </ul> </div> </body> </html>
页面显示效果如下图所示。
下面的代码会在列表上设置一些样式来模拟菜单或导航的外观。
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <style> div { } ul { margin: 0px; list-style-position: inside; padding: 0px; list-style-type:none; width:300px; } li { line-height:2em; text-align:center; vertical-align:middle; color:#eee; background-color:steelblue; margin-bottom:0.5em; } </style> </head> <body> <div> <ul> <li>项目一</li> <li>项目二</li> <li>项目三</li> <li>项目四</li> <li>项目五</li> </ul> </div> </body> </html>
代码中取消了各元素的边框设置,页面显示效果如下图所示。
设置列表样式时还可以list-style属性,其值的顺序是list-style-type、list-style-image、list-style-position;其中,前两个参数取一个便可。
后续文章中,还可以配合nav、a元素等创建各种菜单、导航等页面要素。
details和summary元素是HTML5标准新增的元素,用于显示摘要和详细内容组成的结构,其定义格式如下:
<details> <summary> 摘要内容 </summary> 详细内容 </details>
在Chrome浏览器中的默认显示效果如下图所示。