整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

如何使用 CSS 自定义无序列表样式

如何使用 CSS 自定义无序列表样式

家好,我是前端西瓜哥。

前段时间实现了个自定义无序列表样式,踩了一些坑,和大家说说。

设计师说我们这个,列表项样式要优化一下,太丑了,这个原点要大一点

默认的无序列表样式是这样的。

<style>
  ul {
    width: 200px;
    border: 1px solid #555;
    font-size: 13px;
    line-height: 20px;
    color: #2362d6;
  }
</style>
<ul>
  <li>我是第一行。</li>
  <li>你是第二行你是第二行你是第二行你是第二行你是第二行</li>
  <li>三</li>
</ul>

虽然觉得有点花里胡哨,但我还是去研究了,看看怎么给圆点变大一点。

::before

我们先将 li 原有的圆点去掉,通过给 li 加上 list-style: none; 的方式。

然后用 ::before 给 li 前面创建一个伪元素,加上圆点字符。

ul {
  /* ... */
  /* 稍微调整一下 ul 的左边距 */
  padding-inline-start: 20px;
}
li {
  list-style: none;
}
li::before {
  /* 这里加两个空白符作为边距 */
  /* 你也可以用 margin-right */
  content: "\2022  ";
  font-size: 22px;
}

这里我给 content 的值末尾加了两个空格符,来实现右边距效果。你也可以用 margin-right 来做,更正规一些。

注意点:这里 content 的值最好用转义字符,不要用原字符,因为我发现在某些浏览器会乱码

圆点没和文字水平居中对齐,我们用 transform 微调一下位置。

需要注意的一点是,transform 对行内元素(display: inline)无效。而 ::before 伪元素默认为行内元素,需要手动改为 inline-block。

完整写法为:

ul {
  width: 200px;
  border: 1px solid #555;
  font-size: 13px;
  line-height: 20px;
  color: #2362d6;
  padding-inline-start: 20px;
}
li {
  list-style: none;
}
li::before {
  content: "\2022  ";
  display: inline-block;
  font-size: 22px;
  transform: translateY(3px);
}

设计师很满意地离开了。

但过了几天,他发现有些不对劲,又跑过来和我说:不对,这个换行的文字起始位置不应该在圆点下边,而是应该和第一行文字左侧对齐,也就是应该像下面这样。

::before + 绝对定位

问题不大,马上改。

将 ::before 伪元素设置为绝对定位,让圆点脱离正常文档流。这次我们用 left 来调整位置。

完整的写法为:

ul {
  width: 200px;
  border: 1px solid #555;
  font-size: 13px;
  line-height: 20px;
  color: #2362d6;
  padding-inline-start: 40px;
}
li {
  position: relative;
  list-style: none;
}
li::before {
  content: "\2022  ";
  position: absolute;
  left: -11px;
  display: inline-block;
  font-size: 22px;
}

效果很完美,设计师很满意地离开了。

list-style-type 和 ::marker

如果你不需要修改圆点大小,而是想替换为其他符号,还用一种写法是使用 list-style-type 或 ::marker。

list-style-type 用在 ul 元素上。

ul {
  width: 200px;
  border: 1px solid #555;
  font-size: 13px;
  line-height: 20px;
  color: #2362d6;
  padding-inline-start: 20px;
  list-style-type: "\2708"; /* 飞机符号 */
}

然后我们看到原点变成了飞机字符:

::marker 则是用在 li 元素上,可以让不同的 li 使用不用样式。

li::marker {
  content: "\2708";
}

更具体的写法这里就不展开讲了,读者可以自行阅读官方文档。

但这种方案在修改圆点大小后,无法使用 transform 进行位置的调整,所以我没有用这个。

结尾

小小的无序列表自定义样式也挺多门道的,希望对你有所帮助。

我是前端西瓜哥,分享前端知识,欢迎关注我。

下是一些常用的HTML网页源代码示例,这些示例可用作HTML文档的基础:

1、创建一个简单的HTML文档结构:

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta name="viewport"content="width=device-width,initial-scale=1.0">

<title>My Web Page</title>

</head>

<body>

<h1>Hello,World!</h1>

<p>This is a simple HTML webpage.</p>

</body>

</html>

2、插入图片:

<img src="image.jpg"alt="Description of the image">

3、创建超链接:

<a href="https://www.example.com">Visit Example.com</a>

4、创建无序列表:

<ul>

<li>Item 1</li>

<li>Item 2</li>

<li>Item 3</li>

</ul>

5、创建有序列表:

<ol>

<li>First item</li>

<li>Second item</li>

<li>Third item</li>

</ol>

6、创建表格:

<table>

<tr>

<th>Header 1</th>

<th>Header 2</th>

</tr>

<tr>

<td>Row 1,Cell 1</td>

<td>Row 1,Cell 2</td>

</tr>

<tr>

<td>Row 2,Cell 1</td>

<td>Row 2,Cell 2</td>

</tr>

</table>

7、插入段落:

<p>This is a paragraph of text.</p>

8、插入换行符:

<p>This is some text.<br>This is on a new line.</p>

9、创建一个文本输入框:

<input type="text"name="username"placeholder="Enter your username">

10、插入按钮:

<button type="button">Click me</button>

这些示例代码只是HTML的基础,HTML具有更丰富的功能和标记选项,可以根据需要进行扩展和定制。请根据您的具体需求,使用这些示例作为起点,构建您自己的网页。

【名扬银河企业网站系统】

【免费】提供企业【网站源码】,简单易用,无须拥有代码基础。

欢迎留言或私信我们咨询。

以上内容由【名扬银河】企业网站系统原创发布,转载请注明出处。

TML 基础

非常简单的HTML文档

HTML 标题

HTML 段落

HTML 链接

HTML 图片

实例解析

HTML 标题

HTML 标题

在html源码中插入注释

插入水平线

实例解析

HTML 段落

HTML 段落

更多段落

本例演示在 HTML 文档中折行的使用。

HTML 格式化的某些问题。

实例解析

HTML 文本格式化

文本格式化

此例演示如何使用 pre 标签对空行和空格进行控制。

此例演示不同的"计算机输出"标签的显示效果。

此例演示如何在 HTML 文件中写地址。

此例演示如何实现缩写或首字母缩写。

此例演示如何改变文字的方向。

此例演示如何实现长短不一的引用语。

文本下划线与删除线

实例解析

HTML 样式

HTML Style 元素

背景色样式

字体样式,颜色,大小

文本对齐样式

设置文本字体

设置文本字体大小

设置文本字体颜色

设置文本字体,字体大小,字体颜色

HTML使用不同样式

没有下划线的链接

链接到一个外部样式表

实例解析

HTML 链接

创建超级链接

将图像作为链接

在新的浏览器窗口打开链接

链接到同一个页面的不同位置

跳出框架

创建电子邮件链接

创建电子邮件链接 2

实例解析

HTML 图像

插入图像

从不同的位置插入图片

排列图片

本例演示如何使图片浮动至段落的左边或右边。

制作图像链接

创建图像映射

实例解析

HTML 表格

简单的表格

没有边框的表格

表格中的表头

带有标题的表格

跨行或跨列的表格单元格

表格内的标签

单元格边距(Cell padding)

单元格间距(Cell spacing)

实例解析

HTML 列表

无序列表

有序列表

不同类型的有序列表

不同类型的无序列表

嵌套列表

嵌套列表 2

定义列表

实例解析

HTML Forms 和 Input

创建文本域(Text fields)

创建密码域

复选框

单选按钮

简单的下拉列表

预选下拉列表

本例演示如何创建一个文本域(多行文本输入控件)。

创建一个按钮

本例演示如何在数据周围绘制一个带标题的框。

带有文本域与输入域的表单

带有复选框与提交按钮的form表单

带有单选框与提交按钮的表单

发送邮件表单

实例解析

HTML iframe

内联框架 (HTML页面中插入框架)

实例解析

HTML 头部元素

描述了文档标题

HTML页面中默认的URL链接

提供文档元数据

实例解析

HTML 脚本

插入一个脚本

使用 <noscript> 标签

实例解析

如您还有不明白的可以在下面与我留言或是与我探讨QQ群308855039,我们一起飞!