CSS 列表

在 CSS 中,对于列表样式的定义,主要是以下 3 个方面。

  • 列表项符号。
  • 列表项位置。
  • 列表项图片。

CSS 定义列表项符号

在学习 HTML 时,不管是有序列表还是无序列表,它们的列表项符号都是使用元素的 type 属性来定义的。但在实际开发中,结构和样式应该是分离的,那么在 CSS 中,我们应该如何定义列表项符号呢?

1. 定义列表项符号

在 CSS 中,不管是有序列表还是无序列表,我们都是使用 list-style-type 属性来定义列表项符号。

语法:

list-style-type: 关键字;

说明:

list-style-type 属性取值如下表 1 和表 2 所示。

list-style-type 属性取值(有序列表)
属性值 说明
decimal 阿拉伯数字:1、2、3…(默认值)
lower-roman 小写罗马数字:i、ii、iii…
upper-roman 大写罗马数字:I、II、III…
lower-alpha 小写英文字母:a、b、c…
upper-alpha 大写英文字母:A、B、C…
list-style-type 属性取值(无序列表)
属性值 说明
disc 实心圆●(默认值)
circle 空心圆○
square 正方形■

注意: list-style-type 属性通常应用于 ol 或 ul 元素,但它会作用于其下的 li 列表项。

示例 1:有序列表的列表项符号

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        ol { list-style-type: lower-roman; }
    </style>
</head>
<body>
    <h3></h3>
    <ol>
        <li>HTML</li>
        <li>CSS</li>
        <li>JavaScript</li>
        <li>Vue</li>
        <li>React</li>
    </ol>
</body>
</html>

页面效果如下图所示。

CSS 定义有序列表的列表项符号

示例 2:无序列表的列表项符号

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        ul { list-style-type: circle; }
    </style>
</head>
<body>
    <h3></h3>
    <ul>
        <li>HTML</li>
        <li>CSS</li>
        <li>JavaScript</li>
        <li>Vue</li>
        <li>React</li>
    </ul>
</body>
</html>

页面效果如下图所示。

CSS 定义无序列表的列表项符号

2. 去除列表项符号

在实际开发中,浏览器默认的列表项符号样式比较单一或不美观,我们经常需要去除它们,然后使用其他方法(如背景图片、伪元素等)来自定义列表项样式。

在 CSS 中,我们可以使用 list-style-type: none; 来去除有序列表或无序列表的默认列表项符号。

语法:

list-style-type: none;

说明:

使用 list-style-type: none; 是去除默认列表符号最常见的方法,这为后续的自定义样式提供了基础。

示例 3:CSS 去除列表项符号

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        ol, ul { list-style-type: none; }
    </style>
</head>
<body>
    <h3>有序列表</h3>
    <ol>
        <li>HTML</li>
        <li>CSS</li>
        <li>JavaScript</li>
        <li>Vue</li>
        <li>React</li>
    </ol>
    <hr>
    <h3>无序列表</h3>
    <ul>
        <li>HTML</li>
        <li>CSS</li>
        <li>JavaScript</li>
        <li>Vue</li>
        <li>React</li>
    </ul>
</body>
</html>

页面效果如下图所示。

CSS 去除列表项符号

分析:

使用 list-style-type: none; 这个技巧可以去除列表项默认的符号,在实际开发中经常会用到,尤其是在需要完全自定义列表样式时。

实际上,设置 list-style-type: none 只是去掉了符号,列表默认情况下还会自带一个左内边距(padding-left)。如果想要彻底清除缩进,我们还需要配合 padding: 0; margin: 0; 使用。

CSS 列表常见问题

1. list-style-type 有那么多的属性值,怎么记得住呢?

实际上,我们只需要记住 list-style-type:none; 这一个就可以了,其他的不需要记住。因为在实际开发中,使用 list-style-type 属性来定义列表项符号几乎用不上。所以那些属性值也不需要去记忆。退一步来说,就算用得上,我们不是还有 VSCode 等的提示么?

CSS 定义列表项位置

在 CSS 中,我们可以使用 list-style-position 属性来定义列表项符号的位置。

语法:

list-style-position: 关键字;

说明:

list-style-position 的取值有 2 种,如下表所示。

list-style-position 属性取值
取值 说明
outside(默认值) 列表项符号在外侧
inside 列表项符号在内侧

示例 4:list-style-position 的基本用法

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        ul {
            width: 150px;
            background-color: skyblue;
            list-style-position: outside;
        }
    </style>
</head>
<body>
    <ul>
        <li>绿叶网 - 为好教程,全力以赴</li>
        <li>绿叶网 - 为好教程,全力以赴</li>
        <li>绿叶网 - 为好教程,全力以赴</li>
        <li>绿叶网 - 为好教程,全力以赴</li>
        <li>绿叶网 - 为好教程,全力以赴</li>
    </ul>
</body>
</html>

页面效果如下图所示。

CSS 定义列表项位置

分析:

对于上面例子来说,如果使用的是 list-style-position: inside;,此时页面效果如下图所示。

使用 list-style-position: inside; 的效果

CSS 定义列表项图片

不管是有序列表,还是无序列表,都有它们自身的列表项符号。不过这些列表项符号都比较丑。如果我们想自定义列表项符号,那该怎么实现呢?

在 CSS 中,我们可以使用 list-style-image 属性来定义列表项图片,也就是使用图片来代替列表项符号。

语法:

list-style-image: none或url(图片路径);

说明:

list-style-image 属性取值有以下 2 种。

  • none:是默认值,表示不适用图片。
  • url(图片路径):指定图片的路径。

示例 5:list-style-image 的用法

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        ol {
            list-style-image: url(imgs/flower.svg);
        }
    </style>
</head>
<body>
    <ol>
        <li>Python</li>
        <li>C++</li>
        <li>Java</li>
        <li>Go</li>
        <li>Rust</li>
    </ol>
</body>
</html>

页面效果如下图所示。

CSS 定义列表项图片

分析:

list-style-image 属性实际上就是把列表项符号改为一张图片,而引用一张图片就要给出图片的路径。在真实的开发项目中,像上图所示这种列表项符号,一般情况下我们都不会用 list-style-image 属性来实现,而是使用更高级的 “字体图标技术” 来实现。

CSS 列表综合属性:list-style

在 CSS 中,我们可以使用 list-style 这个复合属性,来同时设置 list-style-type、list-style-position 和 list-style-image。

语法:

list-style: list-style-type list-style-position list-style-image;

说明:

list-style 子属性值顺序可以不固定,对于未指定的子属性,会直接使用该子属性的默认值。

示例 6:list-style 基本用法

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        ul {
            list-style: square inside url("imgs/flower.svg");
        }
    </style>
</head>
<body>
    <ul>
        <li>HTML</li>
        <li>CSS</li>
        <li>JavaScript</li>
    </ul>
</body>
</html>

页面效果如下图所示。

list-style 基本用法

分析:

在这个例子中,list-style: square inside url("imgs/flower.svg"); 等价于下面代码。

list-style-type: square;
list-style-position: inside;
list-style-image: url("imgs/flower.svg");

提示: 在现代 Web 开发中,list-style-image 的使用较少,推荐两种方法:(1)使用伪元素 ::marker;(2)使用字体图标。

上一篇: CSS 行高

下一篇: CSS 表格

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号