html中summary標(biāo)簽用法 html中summary與details配合

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 偽元素可自定義展開折疊箭頭樣式,但需注意瀏覽器兼容性問題。

html中summary標(biāo)簽用法 html中summary與details配合

summary 標(biāo)簽用于為

元素定義一個(gè)標(biāo)題。點(diǎn)擊該標(biāo)題可以展開或折疊

元素的內(nèi)容。它本身并沒有太多花哨的用法,關(guān)鍵在于它與

元素的配合,實(shí)現(xiàn)可折疊的內(nèi)容區(qū)域。

html中summary標(biāo)簽用法 html中summary與details配合

解決方案:

html中summary標(biāo)簽用法 html中summary與details配合

配合使用可以創(chuàng)建可折疊的內(nèi)容塊,這在需要隱藏大量信息,或者希望用戶按需查看內(nèi)容時(shí)非常有用。

立即學(xué)習(xí)前端免費(fèi)學(xué)習(xí)筆記(深入)”;

html中summary標(biāo)簽用法 html中summary與details配合

如何使用

創(chuàng)建一個(gè)簡單的手風(fēng)琴效果?

要?jiǎng)?chuàng)建一個(gè)簡單的手風(fēng)琴效果,你可以使用多個(gè)

元素,并確保每次只展開一個(gè)。 雖然純 css 無法實(shí)現(xiàn)自動(dòng)關(guān)閉其他

元素,但你可以通過 JavaScript 來實(shí)現(xiàn)。

例如:

<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è)

元素的 toggle 事件。當(dāng)一個(gè)

元素被展開時(shí),它會(huì)關(guān)閉所有其他的

元素。 這樣做會(huì)帶來一個(gè)微妙的體驗(yàn)問題:用戶可能會(huì)覺得內(nèi)容突然跳動(dòng),所以可以考慮加入一些 CSS 過渡效果來平滑展開和折疊的動(dòng)畫。

標(biāo)簽可以包含哪些內(nèi)容?是否可以包含圖片或鏈接?

標(biāo)簽可以包含任何標(biāo)題內(nèi)容,例如文本、圖片甚至鏈接。 但需要注意的是,過于復(fù)雜的內(nèi)容可能會(huì)影響用戶體驗(yàn)。 最好保持

標(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ù)上可行,但在

中放置復(fù)雜的交互元素(如表單)通常不是一個(gè)好主意。 用戶期望點(diǎn)擊

只是展開/折疊內(nèi)容,而不是觸發(fā)其他操作。 保持

的語義明確,可以避免混淆。

如何自定義

元素的展開/折疊箭頭樣式?

元素的展開/折疊箭頭可以使用 CSS 的 ::-webkit-details-marker 偽元素進(jìn)行自定義。 然而,這個(gè)偽元素只在 WebKit 內(nèi)核的瀏覽器(如 chromesafari)中有效。 對于 firefox,你需要使用不同的方法。

例如,隱藏默認(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)行一些基本的樣式重置,以確保跨瀏覽器的一致性。

html中summary標(biāo)簽用法 html中summary與details配合

以上就是html中summary標(biāo)簽用法 html中summary與det

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊12 分享