搜索
首页web前端css教程如何通过CSS动态列表在项目列表之间添加逗号

How to Add Commas Between a List of Items Dynamically with CSS

假设您有一个项目列表,例如水果:香蕉、苹果、橙子、梨、油桃。

我们可以直接在HTML中添加逗号 (,),但让我们看看如何在CSS中实现,这能给我们带来更多控制。同时,我们还要确保最后一个项目没有逗号。

我最近在一个实际项目中需要这个功能,部分需求是列表中的任何项目都可以通过JavaScript隐藏/显示。无论当前显示哪些项目,逗号都需要正确显示。

我发现一个相当优雅的解决方案是使用通用同级组合器。我们稍后再讨论这个。让我们先从一些示例HTML开始。假设您从一个水果列表开始:

<code></code>
  • 香蕉
  • 苹果
  • 橙子
  • 油桃

以及一些基本的CSS使其显示为列表:

.fruits {
  display: flex;
  padding-inline-start: 0;
  list-style: none;
}

.fruit {
  display: none; /* 默认隐藏 */
} 
.fruit.on { /* JavaScript添加的类,用于显示列表项 */
  display: inline-block;
}

现在,假设在这个界面内部发生了一些事情,例如用户切换控件以过滤掉所有在寒冷气候下生长的水果。现在显示的是不同的水果集,因此fruit.on类使用classList API进行操作。

到目前为止,我们的HTML和CSS将创建一个这样的列表:

<code>香蕉橙子油桃</code>

现在,我们可以使用通用同级组合器在任意两个on元素之间添加逗号和空格:

.fruit.on ~ .fruit.on::before {
  content: ', '; 
}

不错!

您可能会想:为什么不直接将逗号应用于所有列表项,然后使用类似:last-child或:last-of-type从最后一个项中删除它呢?这样做的问题是,最后一个子元素在任何给定时间都可能处于“关闭”状态。因此,我们真正想要的是最后一个处于“打开”状态的项目,这在CSS中不容易实现,因为没有类似“last of class”的东西可用。因此,使用了通用同级组合器技巧!

在UI中,我使用了max-width而不是display,并在0和一个合理的最大值之间切换它,这样我就可以使用过渡来更自然地显示和隐藏项目,让用户更容易看到哪些项目正在添加到列表中或从列表中删除。您也可以将相同的效果添加到伪元素中,使其超级流畅。

这里有一个演示,其中包含几个略微不同的示例。水果示例使用隐藏类而不是on类,而蔬菜示例具有动画效果。这里还使用了SCSS进行嵌套:

我希望这能帮助其他寻找类似解决方案的人!

以上是如何通过CSS动态列表在项目列表之间添加逗号的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
从香草JavaScript移动到可重复使用的Vue组件从香草JavaScript移动到可重复使用的Vue组件Apr 11, 2025 am 09:40 AM

我最近写了一篇文章,解释了如何使用HTML,CSS和JavaScript创建倒计时计时器。 现在,让我们看一下我们如何

设计系统Blogathon设计系统BlogathonApr 11, 2025 am 09:38 AM

看着一群聪明的人在上周引用一群聪明人的聪明人之间,看着一堆来回博客很有趣。如果你错过了,你可能

修复了标头和跳跃链接?解决方案是滚动 - 边缘顶修复了标头和跳跃链接?解决方案是滚动 - 边缘顶Apr 11, 2025 am 09:35 AM

问题:您单击一个跳跃链接,例如跳跃链接,该链接链接到标题之类的东西。

将在那里的身体余量保持偏心将在那里的身体余量保持偏心Apr 11, 2025 am 09:31 AM

前几天,安德鲁·韦尔奇(Andrew Welch)遇到了一些CSS挑战,以制作普通的Div:

选择具有非空属性的元素选择具有非空属性的元素Apr 11, 2025 am 09:30 AM

简短答案:

有RSS提要只是免费提供内容吗?有RSS提要只是免费提供内容吗?Apr 11, 2025 am 09:28 AM

我的意思是,有点。

代码块的Web组件代码块的Web组件Apr 11, 2025 am 09:25 AM

我们会做到这一点,但首先是漫长的介绍。

CSS4CSS4Apr 11, 2025 am 09:23 AM

什么是CSS4?这是真实的吗?我讨厌把它弄碎给你,但不是真的。但是,也许我们可以做到这一点? CSS3取得了成功,所以为什么不像JavaScript那样保持火车滚动呢?

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),