summary 標(biāo)簽用于為 details 元素定義可點(diǎn)擊的標(biāo)題,實(shí)現(xiàn)內(nèi)容的展開與折疊。其核心用途是與 details 配合創(chuàng)建可交互的折疊區(qū)域。1. 使用 details 和 summary 可以輕松創(chuàng)建手風(fēng)琴效果,但需 JavaScript 控制多個(gè) details 的展開狀態(tài)。2. summary 標(biāo)簽支持文本、圖片或鏈接等任何標(biāo)題內(nèi)容,但應(yīng)保持簡潔避免復(fù)雜交互。3. 通過 css 的 ::-webkit-details-marker 或 ::before 偽元素可自定義展開折疊箭頭樣式,但需注意瀏覽器兼容性問題。
summary 標(biāo)簽用于為
解決方案:
立即學(xué)習(xí)“前端免費(fèi)學(xué)習(xí)筆記(深入)”;
如何使用
和
創(chuàng)建一個(gè)簡單的手風(fēng)琴效果?
創(chuàng)建一個(gè)簡單的手風(fēng)琴效果?
要?jiǎng)?chuàng)建一個(gè)簡單的手風(fēng)琴效果,你可以使用多個(gè)
例如:
<details> <summary>問題 1: 什么是 html?</summary> <p>HTML (HyperText Markup Language) 是一種用于創(chuàng)建網(wǎng)頁的標(biāo)準(zhǔn)標(biāo)記語言。</p> </details> <details> <summary>問題 2: 什么是 CSS?</summary> <p>CSS (Cascading Style Sheets) 是一種用于描述 HTML 元素樣式的語言。</p> </details> <details> <summary>問題 3: 什么是 JavaScript?</summary> <p>JavaScript 是一種用于使網(wǎng)頁具有交互性的腳本語言。</p> </details>
這個(gè)例子創(chuàng)建了三個(gè)可折疊的問題,每個(gè)問題都有自己的答案。要實(shí)現(xiàn)手風(fēng)琴效果(即點(diǎn)擊一個(gè)問題時(shí),其他問題自動(dòng)關(guān)閉),你需要使用 JavaScript:
const details = document.querySelectorAll("details"); details.forEach((detail) => { detail.addEventListener("toggle", (event) => { if (detail.open) { details.forEach((otherDetail) => { if (otherDetail !== detail) { otherDetail.open = false; } }); } }); });
這段 JavaScript 代碼監(jiān)聽每個(gè)
標(biāo)簽可以包含哪些內(nèi)容?是否可以包含圖片或鏈接?
例如:
<details> <summary> @@##@@ <span>關(guān)于我們</span> </summary> <p>我們是一家致力于提供優(yōu)質(zhì)服務(wù)的公司...</p> </details>
或者,包含鏈接:
<details> <summary>相關(guān)鏈接</summary> <p> <a href="#">了解更多</a> </p> </details>
雖然技術(shù)上可行,但在
如何自定義
元素的展開/折疊箭頭樣式?
例如,隱藏默認(rèn)箭頭并使用自定義圖標(biāo):
details > summary { list-style: none; /* 移除默認(rèn)箭頭 */ } details > summary::before { content: '?'; /* 使用 Unicode 字符作為展開/折疊指示器 */ display: inline-block; width: 1em; transition: transform 0.3s ease; } details[open] > summary::before { transform: rotate(90deg); /* 展開時(shí)旋轉(zhuǎn)箭頭 */ }
或者,使用圖片:
details > summary::marker { content: url(custom_arrow.png); /* 使用圖片作為展開/折疊指示器 */ }
需要注意的是, ::marker 是一個(gè)相對較新的 CSS 特性,可能在一些舊版本瀏覽器中不被支持。 為了更好的兼容性,可以考慮使用 ::before 偽元素并手動(dòng)控制箭頭的顯示和旋轉(zhuǎn)。 另外,summary 元素的默認(rèn)樣式在不同瀏覽器中可能存在差異,因此最好進(jìn)行一些基本的樣式重置,以確保跨瀏覽器的一致性。