CSS圆点怎么制作_CSS绘制圆点与列表项样式美化教程

制作CSS圆点最推荐使用伪元素法,即通过::before或::after结合border-radius: 50%、position: absolute和transform: translateY(-50%)实现,既不增加HTML结构,又能精准控制位置与样式,适用于列表标记或文本点缀,且具备高可维护性、灵活性及响应式优势。

css圆点怎么制作_css绘制圆点与列表项样式美化教程

制作CSS圆点,说白了就是利用CSS的各种属性来绘制一个圆形,并将其应用到需要的地方,比如作为列表项的标记,或者任何需要点缀的元素。核心方法通常是利用

border-radius: 50%

将一个方形元素变成圆形,再配合

background-color

来填充颜色。具体实现上,我们可以直接创建一个小元素,也可以通过伪元素(

::before

::after

)为现有元素添加,甚至直接利用

list-style-type

::marker

来定制列表项的默认圆点。选择哪种方式,往往取决于你的具体需求和对灵活性的考量。

解决方案

在我看来,制作CSS圆点,最常用且灵活的方式主要有以下几种:

基础元素法:创建一个简单的

div

span

元素,赋予它相同的宽度和高度,然后将

border-radius

设为

50%

.dot-basic {    display: inline-block; /* 确保能设置宽高 */    width: 10px;    height: 10px;    background-color: #3498db; /* 你的圆点颜色 */    border-radius: 50%; /* 关键:变成圆形 */    vertical-align: middle; /* 保持与文本的垂直对齐 */    margin-right: 5px; /* 与后续内容的间距 */}

这种方法直观易懂,但会增加HTML结构。

伪元素法 (

::before

/

::after

):这是我个人最推荐的方法,因为它不增加额外的HTML标签,将样式和内容分离得很好,尤其适合作为列表项标记或修饰文本。

  • 这是一个列表项
  • 这是另一个列表项
ul {    list-style: none; /* 移除浏览器默认的列表标记 */    padding-left: 0; /* 移除默认内边距 */}li {    position: relative; /* 为伪元素定位提供参考 */    padding-left: 20px; /* 为圆点腾出空间 */    line-height: 1.6;}li::before {    content: ''; /* 伪元素必须有content属性 */    position: absolute; /* 绝对定位,脱离文档流,方便精确控制位置 */    left: 5px; /* 圆点距离左侧的距离 */    top: 50%; /* 垂直居中 */    transform: translateY(-50%); /* 精确垂直居中 */    width: 8px;    height: 8px;    background-color: #2ecc71;    border-radius: 50%;}

这种方式非常强大,可以创建各种自定义标记。

立即学习“前端免费学习笔记(深入)”;

列表样式属性 (

list-style-type

,

list-style-image

,

::marker

):对于无序列表,CSS提供了直接控制标记的属性。

list-style-type: disc;

(默认实心圆)

list-style-type: circle;

(空心圆)

list-style-type: square;

(实心方块)

list-style-image: url('path/to/your/dot.png');

(使用图片作为标记,但灵活性不如CSS绘制)

::marker

伪元素:这是CSS Level 3引入的,允许我们直接样式化浏览器默认的列表标记。

ul li::marker {    color: #e74c3c; /* 改变标记颜色 */    font-size: 1.2em; /* 改变标记大小 */    /* 注意:::marker的样式属性有限,不能直接设置border-radius */}

::marker

的优势在于它保留了列表的语义,但它的样式控制不如伪元素灵活,比如你不能直接用它画一个自定义的圆点形状,更多是改变现有标记的颜色和大小。

为什么不直接用图片,CSS绘制圆点有什么优势?

说实话,我经常看到一些新手在需要小圆点的时候,第一反应是找一张圆点图片。这在某些特定场景下确实可行,比如图片本身就是设计的一部分,或者有复杂的纹理。但从前端开发的角度来看,CSS绘制圆点相比使用图片,优势是压倒性的,甚至可以说,对于简单的圆点,用图片几乎是一种“反模式”。

首先,可伸缩性与清晰度。CSS绘制的圆点是矢量图形,无论在任何分辨率、任何缩放比例下,它都会保持完美的圆形和清晰的边缘,不会出现像素化。而图片,尤其是位图(如PNG、JPG),一旦放大,就会变得模糊不清,影响用户体验,尤其是在如今高DPI屏幕普及的情况下,一张小小的图片可能需要提供好几个分辨率版本(@2x, @3x),徒增工作量。

其次,性能考量。每使用一张图片,浏览器就需要发起一次HTTP请求去下载它。即使图片再小,累积起来也会增加页面的加载时间。CSS绘制的圆点则完全不需要额外的请求,它直接通过CSS代码渲染,加载速度更快,对服务器的压力也更小。对于追求极致性能的现代Web应用来说,减少HTTP请求是优化加载速度的关键之一。

再者,灵活性与维护性。CSS圆点的颜色、大小、甚至形状(比如从圆点变成椭圆)都可以通过简单的CSS属性修改,无需打开任何图形编辑软件。如果你需要根据不同的主题或状态改变圆点的颜色,只需修改一行CSS代码即可。而图片则需要重新制作、替换。这种灵活性在项目迭代和主题切换时显得尤为重要,大大降低了维护成本。

LibLibAI LibLibAI

国内领先的AI创意平台,以海量模型、低门槛操作与“创作-分享-商业化”生态,让小白与专业创作者都能高效实现图文乃至视频创意表达。

LibLibAI 159 查看详情 LibLibAI

最后,代码的简洁性。CSS代码通常比Base64编码的图片URL更简洁、更易读。而且,它与页面的其他样式更好地融合,更容易管理和调试。我个人觉得,能用CSS解决的问题,就尽量不要引入图片,这是前端开发的一个基本原则。

如何在不影响文本布局的情况下,精确控制圆点位置?

精确控制圆点位置,尤其是要它“漂浮”在文本旁边,或者与文本内容保持完美的垂直对齐,确实需要一些技巧。直接用

margin

padding

有时会显得笨拙,或者在不同行高下表现不一致。我常用的,也是最可靠的方法,就是结合

position: absolute

transform

position: absolute

与父元素相对定位这是最核心的思路。当你希望一个元素(比如伪元素绘制的圆点)脱离正常文档流,但又相对于某个父元素进行定位时,你需要将父元素设置为

position: relative;

。这样,子元素(圆点)的

top

bottom

left

right

属性就会相对于这个父元素来计算。

li {    position: relative; /* 关键!为伪元素提供定位上下文 */    padding-left: 20px; /* 给圆点留出空间,防止文本覆盖 */    /* 其他样式 */}li::before {    content: '';    position: absolute;    left: 5px; /* 距离li左边缘5px */    top: 50%; /* 伪元素的顶部与li的垂直中心线对齐 */    transform: translateY(-50%); /* 向上移动自身高度的一半,实现精确垂直居中 */    /* 圆点大小和颜色等 */}

这里的

top: 50%;

transform: translateY(-50%);

组合是实现完美垂直居中的经典技巧,无论

li

的行高或内容如何变化,圆点都能稳稳地居中。

Flexbox布局辅助:对于更复杂的列表项布局,或者当你的圆点本身就是列表项的一部分时,Flexbox是一个非常强大的工具。你可以将列表项(

li

)设置为Flex容器,然后将圆点(可以是伪元素,也可以是单独的

span

)作为Flex项目进行对齐。

li {    display: flex; /* 将li变为Flex容器 */    align-items: center; /* 垂直居中所有Flex项目 */    /* gap: 10px; 如果需要圆点和文本之间的间距 */}li::before {    content: '';    flex-shrink: 0; /* 防止圆点被压缩 */    width: 8px;    height: 8px;    background-color: #f39c12;    border-radius: 50%;    margin-right: 10px; /* 控制圆点与文本的间距 */    /* 不需要position: absolute和transform了 */}

这种方式的优点是布局更加自然,易于管理对齐和间距,尤其适合多行文本的列表项。

vertical-align

(谨慎使用):对于简单的行内元素,

vertical-align

可以用于调整垂直对齐。但它主要影响行内块元素相对于其父元素基线的对齐,对于精确控制圆点与文本的相对位置,它的表现可能不如

position: absolute

或Flexbox稳定和灵活,特别是当行高不确定时。通常我会避免用它来做精细的圆点定位。

选择哪种方法,取决于你的具体场景和对布局复杂度的要求。对我来说,伪元素配合

position: absolute

transform

是万金油,而Flexbox则在整个列表项布局需要精细控制时大放异彩。

除了简单的圆点,CSS还能模拟哪些列表项标记样式?

CSS绘制标记的魅力在于其无限的可能性。一旦你掌握了伪元素和

border-radius

这些基本工具,你就能跳出“圆点”的限制,模拟出各种各样的列表项标记样式。这不仅仅是视觉上的美化,更是提升用户体验和信息传达效率的手段。

实心方块或矩形:这是最简单的变体,只需移除

border-radius: 50%

即可。你可以根据需要调整

width

height

来创建方块或矩形。

li::before {    content: '';    position: absolute;    left: 5px;    top: 50%;    transform: translateY(-50%);    width: 10px;    height: 10px;    background-color: #9b59b6;    /* border-radius: 0; 默认就是方块 */}

空心圆或空心方块:通过设置

border

background-color: transparent

来实现。

li::before {    content: '';    position: absolute;    left: 5px;    top: 50%;    transform: translateY(-50%);    width: 8px;    height: 8px;    border: 2px solid #34495e; /* 边框颜色和粗细 */    background-color: transparent; /* 背景透明 */    border-radius: 50%; /* 空心圆 */    /* 或 border-radius: 0; 空心方块 */}

箭头标记:这稍微复杂一点,但仍然可以通过CSS边框技巧实现。通常是利用伪元素的边框属性,只显示其中两条边,然后旋转。

li::before {    content: '';    position: absolute;    left: 5px;    top: 50%;    transform: translateY(-50%) rotate(45deg); /* 旋转45度形成箭头 */    width: 8px;    height: 8px;    border-top: 2px solid #e67e22; /* 只显示上边框 */    border-right: 2px solid #e67e22; /* 只显示右边框 */    background-color: transparent;    /* 注意:这里没有border-radius,是方块旋转 */}

或者更简单的,直接使用Unicode字符:

content: '► ';

但这种方式样式控制有限。

自定义图标(SVG或字体图标):虽然我们说尽量避免图片,但对于复杂的、矢量化的图标,SVG或字体图标是很好的选择。它们可以嵌入到伪元素中。

SVG: 将SVG代码Base64编码后放入

background-image

li::before {    content: '';    position: absolute;    left: 5px;    top: 50%;    transform: translateY(-50%);    width: 16px; /* 根据SVG尺寸调整 */    height: 16px;    background-image: url('data:image/svg+xml;utf8,');    background-size: contain;    background-repeat: no-repeat;}

字体图标: 使用像Font Awesome这样的字体图标库,将图标的Unicode字符作为伪元素的

content

,并设置相应的

font-family

li::before {    content: '\f00c'; /* Font Awesome的check图标Unicode */    font-family: 'Font Awesome 5 Free'; /* 确保已引入字体 */    font-weight: 900; /* 对于实心图标 */    position: absolute;    left: 5px;    top: 50%;    transform: translateY(-50%);    color: #27ae60; /* 图标颜色 */    font-size: 14px; /* 图标大小 */}

自定义数字计数器:对于有序列表,我们可以完全自定义数字的样式,甚至创建非传统的计数方式。这需要用到CSS的

counter-reset

counter-increment

属性。

ol {    list-style: none;    counter-reset: my-counter; /* 重置计数器 */    padding-left: 0;}ol li {    position: relative;    padding-left: 30px;    counter-increment: my-counter; /* 每次li出现,计数器加1 */}ol li::before {    content: counter(my-counter) '.'; /* 显示计数器值,后面加个点 */    position: absolute;    left: 0;    top: 50%;    transform: translateY(-50%);    font-weight: bold;    color: #8e44ad;    min-width: 20px; /* 确保数字有足够的空间 */    text-align: right;    margin-right: 5px;}

通过这些方法,你可以让你的列表项标记变得生动有趣,而不仅仅是千篇一律的圆点。这不仅能提升页面的视觉吸引力,也能更好地传达信息层级和类型。

以上就是CSS圆点怎么制作_CSS绘制圆点与列表项样式美化教程的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1082836.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
谷歌浏览器如何使用内置密码检查工具 谷歌浏览器检查泄露密码安全指南
上一篇 2025年12月2日 08:50:57
AI CS6编组操作指南
下一篇 2025年12月2日 08:51:01

相关推荐

  • composer require-dev和require有什么不同_Composer Require与Require-Dev区别解析

    require用于声明项目运行必需的依赖,如框架、数据库组件和第三方SDK,这些包会随项目部署到生产环境;2. require-dev用于声明仅在开发和测试阶段需要的工具,如PHPUnit、PHPStan、Faker等,不会默认部署到生产环境;3. 安装时composer install根据环境决定…

    2026年5月10日
    1000
  • 修复Django电商项目中AJAX过滤产品列表图片不显示问题

    在Django电商项目中,当使用AJAX动态加载过滤后的产品列表时,常遇到图片无法正常显示的问题。这通常是由于前端模板中图片加载方式(如data-setbg属性结合JavaScript库)与AJAX动态内容更新机制不兼容所致。解决方案是直接在AJAX返回的HTML中使用标准的标签来渲染图片,确保浏览…

    2026年5月10日
    000
  • Golang JSON序列化:控制敏感字段暴露的最佳实践

    本教程探讨golang中如何高效控制结构体字段在json序列化时的可见性。当需要将包含敏感信息的结构体数组转换为json响应时,通过利用`encoding/json`包提供的结构体标签,特别是`json:”-“`,可以轻松实现对特定字段的忽略,从而避免敏感数据泄露,确保api…

    2026年5月10日
    000
  • 利用海象运算符简化条件赋值:Python教程与最佳实践

    本文旨在探讨Python中海象运算符(:=)在条件赋值场景下的应用。通过对比传统if/else语句与海象运算符,以及条件表达式,分析海象运算符在简化代码、提高可读性方面的优势与局限性。并通过具体示例,展示如何在列表推导式等场景下合理使用海象运算符,同时强调其潜在的复杂性及替代方案,帮助开发者更好地掌…

    2026年5月10日
    100
  • Debian syslog性能优化技巧有哪些

    提升Debian系统syslog (通常基于rsyslog)性能,关键在于精简配置和高效处理日志。以下策略能有效优化日志管理,提升系统整体性能: 精简配置,高效加载: 在rsyslog配置文件中,仅加载必要的输入、输出和解析模块。 使用全局指令设置日志级别和格式,避免不必要的处理。 自定义模板: 创…

    2026年5月10日
    000
  • 怎么在PHP代码中实现图片上传功能_PHP图片上传功能实现与安全处理教程

    首先创建含enctype的HTML表单,再用PHP接收文件,检查目录、移动临时文件,验证类型与大小,生成唯一文件名,并调整php.ini限制以确保上传成功。 如果您尝试在PHP项目中添加图片上传功能,但服务器无法正确接收或保存文件,则可能是由于表单配置、文件处理逻辑或安全限制的问题。以下是实现该功能…

    2026年5月10日
    100
  • 比特币新手教程 比特币交易平台有哪些

    比特币是一种去中心化的数字货币,基于区块链技术实现点对点交易,具有匿名性、有限发行和不可篡改等特点;新手可通过交易所购买,P2P交易获得比特币,常用平台包括Binance、OKX和Huobi;交易流程包括注册账户、实名认证、绑定支付方式、充值法币并下单购买,可选择市价单或限价单;比特币存储方式有交易…

    2026年5月10日
    000
  • c++中的SFINAE技术是什么_c++模板编程中的SFINAE原理与应用

    SFINAE 是“替换失败不是错误”的原则,指模板实例化时若参数替换导致错误,只要存在其他合法候选,编译器不报错而是继续重载决议。它用于条件启用模板、类型检测等场景,如通过 decltype 或 enable_if 控制函数重载,实现类型特征判断。尽管 C++20 引入 Concepts 简化了部分…

    2026年5月10日
    000
  • HTML如何隐藏滚动条或去除滚动条

    滚动条可以存在也可以不存在,本文主要介绍了html 隐藏滚动条和去除滚动条的方法的相关资料,大家一起来学习一下html隐藏滚动条或去除滚动条的方法吧。 1. html 标签加属性 XML/HTML Code复制内容到剪贴板 2.body中加入以下代码 立即学习“前端免费学习笔记(深入)”; html…

    用户投稿 2026年5月10日
    000
  • Go语言mgo查询构建:深入理解bson.M与日期范围查询的正确实践

    本文旨在解决go语言mgo库中构建复杂查询时,特别是涉及嵌套`bson.m`和日期范围筛选的常见错误。我们将深入剖析`bson.m`的类型特性,解释为何直接索引`interface{}`会导致“invalid operation”错误,并提供一种推荐的、结构清晰的代码重构方案,以确保查询条件能够正确…

    2026年5月10日
    100
  • vscode上怎么运行html_vscode上运行html步骤【指南】

    首先保存文件为.html格式,再通过浏览器或Live Server插件打开预览;推荐安装Live Server实现本地服务器运行与实时刷新,提升开发体验。 在 VS Code 上运行 HTML 文件并不需要复杂的配置,只需几个简单步骤即可预览页面效果。VS Code 本身是一个代码编辑器,不直接运行…

    2026年5月10日
    100
  • css max-height属性怎么用

    max-height 属性设置元素的最大高度。 说明 该属性值会对元素的高度设置一个最高限制。因此,元素可以比指定值矮,但不能比其高。不允许指定负值。 注意:max-height 属性不包括外边距、边框和内边距。 立即学习“前端免费学习笔记(深入)”; 值描述none 默认。定义对元素被允许的最大高…

    2026年5月10日
    100
  • RichHandler与Rich Progress集成:解决显示冲突的教程

    在使用rich库的`richhandler`进行日志输出并同时使用`progress`组件时,可能会遇到显示错乱或溢出问题。这通常是由于为`richhandler`和`progress`分别创建了独立的`console`实例导致的。解决方案是确保日志处理器和进度条组件共享同一个`console`实例…

    2026年5月10日
    000
  • 修复点击时按钮抖动:CSS垂直对齐实践

    本文探讨了在Web开发中,交互式按钮(如播放/暂停按钮)在点击时发生意外垂直位移的问题。通过分析CSS样式变化对元素布局的影响,我们发现这是由于按钮不同状态下的边框样式和内边距改变,以及默认的垂直对齐行为共同作用所致。核心解决方案是利用CSS的vertical-align属性,将其设置为middle…

    2026年5月10日
    000
  • 理解编程指令:当结果正确,但实现方式不符要求时

    本文探讨了在编程实践中,即使程序输出了正确的结果,但若其实现方式未能严格遵循既定指令,仍可能被视为“不正确”的问题。我们将通过具体示例,对比直接求和与累加求和两种实现策略,强调理解和遵守编程规范的重要性,以确保代码的健壮性、可维护性及符合项目要求。 在软件开发过程中,我们经常会遇到这样的情况:编写的…

    2026年5月10日
    000
  • Golang goroutine与channel调试技巧

    使用go run -race检测数据竞争,结合runtime.NumGoroutine监控协程数量,通过pprof分析阻塞调用栈,利用select超时避免永久阻塞,有效排查goroutine泄漏、死锁和数据竞争问题。 Go语言的goroutine和channel是并发编程的核心,但它们也带来了调试上…

    2026年5月10日
    000
  • 页面中文本域的值怎么设置

    标签定义多行的文本输入控件。 文本区中可容纳无限数量的文本,其中的文本的默认字体是等宽字体(通常是 Courier)。 可以通过 cols 和 rows 属性来规定 textarea 的尺寸,不过更好的办法是使用 CSS 的 height 和 width 属性。 注释:在文本输入区内的文本行间,用 …

    2026年5月10日
    000
  • 《魔兽世界》将于6月11日开启国服回归技术测试

    《魔兽世界》将于6月11日开启国服回归技术测试《魔兽世界》将于6月11日开启国服回归技术测试《魔兽世界》将于6月11日开启国服回归技术测试《魔兽世界》将于6月11日开启国服回归技术测试

    《%ign%ignore_a_1%re_a_1%》官方宣布,将于6月11日开启国服回归技术测试,时间为7天,并称可以在6月内正式开服,玩家们可以访问官网下载战网客户端并预下载“巫妖王之怒”客户端,技术测试详情见下图。 WordAi WordAI是一个AI驱动的内容重写平台 53 查看详情 以上就是《…

    2026年5月10日 用户投稿
    200
  • 使用 Jupyter Notebook 进行探索性数据分析

    Jupyter Notebook通过单元格实现代码与Markdown结合,支持数据导入(pandas)、清洗(fillna)、探索(matplotlib/seaborn可视化)、统计分析(describe/corr)和特征工程,便于记录与分享分析过程。 Jupyter Notebook 是进行探索性…

    2026年5月10日
    000
  • 如何在HTML中插入表单元素_HTML表单控件与输入类型使用指南

    HTML表单通过标签构建,包含action和method属性定义数据提交目标与方式,常用input类型如text、password、email等适配不同输入需求,配合label、required、placeholder提升可用性,结合textarea、select、button等控件实现完整交互,是…

    2026年5月10日
    000

发表回复

登录后才能评论
关注微信