ホームページ >ウェブフロントエンド >jsチュートリアル >詳細要素の修正
html5<details></details>
要素は、折りたたみ可能なコンテンツを作成するための簡潔な方法を提供しますが、それは重要な使いやすさの課題を提示します。この記事では、この問題を解決するために、ネイティブサポートを欠いているブラウザ用のアクセス可能なポリフィルなど、徐々に強化されたJavaScriptソリューションについて詳しく説明しています。
<details></details>
<details></details>
機能を効果的にエミュレートします
<details></details>
再帰関数は、関連する要素を自動的に拡張することによりこれに対処します。
<details></details>
要素と要素と組み合わせて、折りたたみ可能なコンテンツを作成します。 <details></details>
(存在する場合)は、最初または最後の子供でなければなりません。他のすべてのコンテンツは折りたたみ可能です。 属性は、コンテンツを最初に見えるようにします。 現在、Chromeのみが
<details></details>
<summary></summary>
<summary></summary>
open
ポリフィルの作成
属性の更新は必要ありませんが、ARIA属性には依然として管理が必要です。 典型的な構造は次のようになります:
スクリプトは属性を管理し、視覚的崩壊のためのCSSセレクターとして使用します:
ラッピングは、特に追加のスタイル処理が必要なIE7のような古いブラウザの場合、プロパティとopen
プロパティの管理を簡素化します。 open
関数は、キーボードクリックイベントの発火のブラウザの不一致を処理します:
<code class="language-html"><details open="open"> <summary>This is the summary element</summary> <div>This is the expanding content</div> </details></code>ハッシュの問題を強調する
aria-expanded
<code class="language-css">details > div[aria-expanded="false"] { display: none; }</code>領域内の要素をターゲットにするときに発生します。ページはターゲットにスクロールしません。ターゲットを隠したままにしておきます。
<div>
<code>aria-expanded
ハッシュの問題の修正display
addClickEvent
再帰的
<code class="language-javascript">function addClickEvent(node, callback) { // ... (function body as in original article) ... }</code>関数はこれを解決します:
<code class="language-html"><details open="open"> <summary>This is the summary element</summary> <div>This is the expanding content</div> </details></code>
この関数は、ターゲットを含む祖先<details></details>
要素を再帰的に拡張します。 location.hash
および内部リンクのクリックのページロードで呼び出されます。 信頼性の高いスクロールを確保するために、拡張後にwindow.scrollBy
が使用され、ターゲットがビューポート内に配置されます。 オリジナルのlocation.hash
動作(ページの更新に自動スクロールなし)が維持されます。
結論
「全知」と呼ばれるこの拡張されたソリューションは、基本的なポリフィルフィルを超えて拡張されています。すべてのブラウザの使いやすさとアクセシビリティを向上させ、<details></details>
要素の固有の制限に対処します。
HTMLの詳細要素に関するよくある質問(FAQ)
(元の入力からのFAQSセクションは変更されていません。)
以上が詳細要素の修正の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。