首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 客戶端內容展開/收縮實現:JavaScript 與 CSS 切換可見性

     編輯:關於ASP.NET

網頁常需「展開/收縮」區塊 (FAQ、側邊欄、長文摘要)。純客戶端實現零 PostBack、體驗流暢。本文提供原生 JS + CSS 方案、jQuery 簡化版、無障礙 (ARIA) 加強版。

核心邏輯

  • 切換目標元素 display: none/block 或 max-height: 0/auto (動畫)。
  • 同步更新觸發按鈕文字/圖示 (▼/▲、展開/收縮)。
  • 可選:記錄狀態至 localStorage 保持跨頁一致性。

原生 JavaScript 實現 (ES6)

<button class="toggle-btn" data-target="#content1" aria-expanded="false">展開</button>
<div id="content1" class="collapsible" hidden>詳細內容...</div>

<script>
document.querySelectorAll('.toggle-btn').forEach(btn => {
    btn.addEventListener('click', () => {
        const target = document.querySelector(btn.dataset.target);
        const isHidden = target.hidden;
        target.hidden = !isHidden;
        btn.textContent = isHidden ? '收縮' : '展開';
        btn.setAttribute('aria-expanded', isHidden);
    });
});
</script>

CSS 動畫版 (平滑展開/收縮)

.collapsible {
    overflow: hidden;
    max-height: 0;
    transition: max-height 0.3s ease-out;
}
.collapsible.expanded {
    max-height: 500px; /* 足夠大的值 */
    transition: max-height 0.5s ease-in;
}
// JS 切換 class
target.classList.toggle('expanded');

jQuery 簡化版 (舊專案相容)

$('.toggle-btn').click(function() {
    const $target = $($(this).data('target'));
    $target.slideToggle(300);
    $(this).text($target.is(':visible') ? '收縮' : '展開');
});

無障礙 (ARIA) 必備屬性

屬性用途
aria-expanded="true/false"告知螢幕閱讀器展開狀態
aria-controls="targetId"關聯被控制元素
hidden (布林屬性)語義化隱藏,優於 display:none

進階:記憶狀態

// 展開時存入
localStorage.setItem('collapsible_' + targetId, 'expapsed');
// 頁面載入還原
const saved = localStorage.getItem('collapsible_' + targetId);
if (saved === 'expanded') { target.hidden = false; btn.textContent = '收縮'; }

純前端實現輕量、無伺服器壓力、支援動畫與無障礙,是現代 Web 應用首選。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved