首頁 web前端 css教學 如何通過CSS動態列表在項目列表之間添加逗號

如何通過CSS動態列表在項目列表之間添加逗號

Mar 28, 2025 pm 12:05 PM

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片