最新のWeb開発は、スライダー、モーダル、ツールチップなどの動的な要素を作成するためにCSSを活用し、JavaScript Relianceを最小限に抑えることがよくあります。この記事では、「より多く/少ない」機能を実装するための純粋なCSSアプローチを示し、機能的なアコーディオンスタイルの例を作成することさえあります。 テクニック、潜在的な問題、およびソリューションを探ります。 ここではアクセシビリティの考慮事項は省略されていますが、将来の改善のための重要な側面です。
重要な概念:
このCSSのみの「より多く/少ない」は、「チェックボックスハック」と兄弟セレクターに依存しています。 HTML構造は、順序付けられていないリストを使用します。最後のアイテムには、非表示のチェックボックスとそのラベルが含まれています。ネストされた順序付けられていないリストは、表示/非表示のコンテンツを保持します。およびmax-height
CSSプロパティは、スムーズな公開/隠蔽を制御します。 ブラウザの不一致が存在する可能性があります。たとえば、カーソルの動作はブラウザ間で異なる場合があります
transition
以下を理解することが不可欠です:
<ul>一般的な兄弟セレクター(
~
隣接する兄弟セレクター(
チェックボックスハック基本的なHTML構造は(オリジナルから単純化されています):
チェックボックスコンテナのスタイリング:
<ul> <li>Item 1</li> <li>Item 2</li> <li class="container"> <input type="checkbox" id="showHide"> <label for="showHide"></label> <ul> <li>Hidden Item 1</li> <li>Hidden Item 2</li> </ul> </li> </ul>
ラベルのコンテンツ(「more」または「less」)とアニメーションは、pseudo-elements(
and)を使用して処理されます。
.container
最初にネストされた </p>
:
.container { position: relative; height: auto; } [type="checkbox"] { position: absolute; left: -9999px; } label { background: #e4e3df; display: block; width: 100%; height: 50px; cursor: pointer; position: absolute; top: 0; }
::before
::after
css:
label:before, label:after { position: absolute; } /* ... (styles for :before and :after based on checked state) ... */
を模倣します
<ul>
チェックボックスのチェック状態は、非表示のコンテンツを明らかにします:
[type="checkbox"] ~ ul { display: none; }
ラベルの位置とコンテンツは、チェック時に調整されます:
onclick
CodePenデモ(リンク省略)この基本的なトグル効果を紹介します。
スムーズな遷移の追加:
[type="checkbox"]:checked ~ ul { display: block; }
および
:[type="checkbox"]:checked + label { top: 100%; } /* ... (styles for :before and :after when checked) ... */
ラベルの遷移も更新されます:
Codepenデモ(リンク省略)は、改善された、よりスムーズな遷移を示しています。
ブラウザの考慮事項:max-height
transition
[type="checkbox"] ~ ul { overflow: hidden; max-height: 0; transition: max-height .45s cubic-bezier(.44,.99,.48,1); } [type="checkbox"]:checked ~ ul { max-height: 300px; /* Or a calculated height */ }
結論:
label { transition: top .45s cubic-bezier(.44,.99,.48,1); }
この記事は、「より多く/少ない」機能性を示す強力なCSSのみのアプローチを示しています。 制限が存在しますが(主にブラウザの矛盾と事前に決められたmax-height
の必要性が必要です)が、この手法は多くのシナリオに対してクリーンでJavaScriptを含まないソリューションを提供します。 インタラクティブなコンポーネントを構築するときは、常にアクセシビリティを優先することを忘れないでください
以上が純粋なCSSを使用して「より多く/少ない」機能を実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。