搜尋
首頁web前端css教學將選擇列表項目與CSS網格一起分組

Grouping Selection List Items Together With CSS Grid

通過CSS Grid巧妙分組顯示選中列表項,提升用戶體驗! 選中項分組是常見的設計策略,幫助用戶快速區分選中和未選中項。例如,在待辦事項列表中,已完成項會向上移動,方便用戶關注剩餘任務。

我們將設計一個類似的分組UI。不同於簡單的重新排列選中項,我們將使用CSS Grid水平佈局選中項,進一步區分選中和未選中項。

我們將探討兩種方法。一種使用auto-fill,適用於選中項未超出網格容器邊界的情況,確保佈局穩定;另一種使用CSS Grid的span關鍵字,提供更大的靈活性。

兩種方法的HTML代碼相同:


    <li> <li>

代碼由一個無序列表(<ul></ul>)構成。我們無需額外包裝元素,因為CSS Grid屬性將決定項目佈局。注意,我使用隱式<label></label>元素包裹,避免額外包裝,但顯式標籤通常更受輔助技術的支持。

方法一:使用auto-fill

ul {
  width: 250px;
  display: grid;
  gap: 14px 10px;
  grid-template-columns: repeat(auto-fill, 40px);
  justify-content: center;
  /* ...其他样式... */
}

包含列表項的<ul></ul>元素設置為display: grid,使其成為網格容器。它在網格行和列之間設置了14px和10px的間隙。網格內容水平對齊到中心。 grid-template-columns屬性指定網格中列的尺寸。初始狀態下,所有項目都在單列中。選中項目後,它們將移動到第一行,每個選中項目佔據一列。關鍵在於auto-fill值。

auto-fill值用於repeat()函數的重複次數。它確保列重複,每列的軌道大小為repeat()中給定的尺寸(示例中為40px),並能適應網格容器的邊界。

為了確保列表項初始狀態為單列:

li {
  width: inherit;
  grid-column: 1;
  /* 等同于:grid-column-start: 1; grid-column-end: auto; */
  /* ...其他样式... */
}

選中項目(<input>元素被選中)時,使用:has(:checked)選擇器:

li {
  width: inherit;
  grid-column: 1;
  /* ...其他样式... */
  &:has(:checked) {
    grid-area: 1;
    /* 等同于:grid-row-start: 1; grid-column-start: auto; grid-row-end: auto; grid-column-end: auto; */
    width: 40px;
    /* ...其他样式... */
  }
  /* ...其他样式... */
}

這使得選中項分組到列表頂部並水平排列。

方法二:使用span關鍵字

此方法無需grid-template-columns屬性。新的<ul></ul>樣式如下:

ul {
  width: 250px;
  display: grid;
  gap: 14px 10px;
  justify-content: center;
  justify-items: center;
  /* ...其他样式... */
}

justify-items: center有助於對齊網格項目。更新的<li>樣式:

li {
  width: inherit;
  grid-column: 1 / span 6;
  /* 等同于:grid-column-start: 1; grid-column-end: span 6; */
  /* ...其他样式... */
}

每個項目都放置在第一列,但現在它們也跨越六個列軌道(因為有六個項目)。這確保了當網格中出現多列時,選中項目後的未選中項目仍保持單列,位於選中項目下方——未選中項目現在跨越多個列軌道。 justify-items: center聲明將使項目保持居中對齊。

li {
  width: inherit;
  grid-column: 1 / span 6;
  /* ...其他样式... */
  &:has(:checked) {
    grid-area: 1;
    width: 120px;
    /* ...其他样式... */
  }
  /* ...其他样式... */
}

選中項目的寬度已增加,以便在選中項目溢出容器時查看選擇UI的佈局。

選擇順序

選中和未選中項目的順序將保持與源順序相同。如果需要屏幕順序與用戶選擇匹配,則在選中項目時動態分配遞增的順序值。


    <li> <li>

總結

CSS Grid使得兩種方法都非常靈活,無需大量配置。通過使用auto-fill在任一軸(行或列)上放置項目,可以輕鬆地將選中項目分組到網格容器中,而不會影響同一容器中未選中項目的佈局,只要選中項目不溢出容器即可。

如果項目溢出容器,使用span方法有助於保持佈局,而不管選中項目在給定軸上的長度如何。 UI的一些設計替代方案包括將選中項目分組到列表的末尾,或交換水平和垂直結構。

以上是將選擇列表項目與CSS網格一起分組的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
兩個圖像和一個API:我們重新著色產品所需的一切兩個圖像和一個API:我們重新著色產品所需的一切Apr 15, 2025 am 11:27 AM

我最近找到了一種動態更新任何產品圖像的顏色的解決方案。因此,只有一種產品之一,我們可以以不同的方式對其進行著色以顯示

每周平台新聞:第三方代碼,被動混合內容,連接最慢的國家的影響每周平台新聞:第三方代碼,被動混合內容,連接最慢的國家的影響Apr 15, 2025 am 11:19 AM

在本週的綜述中,燈塔在第三方腳本上闡明了燈光,不安全的資源將在安全站點上被阻止,許多國家連接速度

託管您自己的非JavaScript分析的選項託管您自己的非JavaScript分析的選項Apr 15, 2025 am 11:09 AM

有很多分析平台可幫助您跟踪網站上的訪問者和使用數據。也許最著名的是Google Analytics(廣泛使用)

它全部都在頭上:管理帶有React頭盔的React Power Site的文檔頭它全部都在頭上:管理帶有React頭盔的React Power Site的文檔頭Apr 15, 2025 am 11:01 AM

該文檔負責人可能不是網站上最迷人的部分,但是其中所處的內容對於您的網站的成功也一樣重要

JavaScript中的Super()是什麼?JavaScript中的Super()是什麼?Apr 15, 2025 am 10:59 AM

當您看到一些稱為super()的JavaScript時,在子類中,您會使用super()調用其父母的構造函數和超級。訪問它

比較不同類型的本機JavaScript彈出窗口比較不同類型的本機JavaScript彈出窗口Apr 15, 2025 am 10:48 AM

JavaScript具有各種內置彈出API,它們顯示用於用戶交互的特殊UI。著名:

為什麼可訪問的網站如此難以構建?為什麼可訪問的網站如此難以構建?Apr 15, 2025 am 10:45 AM

前幾天,我與一些前端人們聊天,講述了為什麼這麼多公司努力創建可訪問的網站。為什麼可訪問的網站如此艱難

'隱藏”屬性顯然很弱'隱藏”屬性顯然很弱Apr 15, 2025 am 10:43 AM

有一個HTML屬性,它可以正是您認為應該做的:

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.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器