ホームページ > 記事 > ウェブフロントエンド > 純粋な CSS を使用して折りたたみ可能なツリー メニューを作成する方法を学びます
CSS3 のリリースに伴い、海外の研究が本格化していますが、中国では IE が CSS3 をサポートしていないという考えを持ち、無関心で学習を拒否する人が依然として多くいます。しかし、歴史は、良いものは普及し、最終的に CSS3 が CSS2 に取って代わることを示しています。CSS3 で作成された折りたたみ可能なツリー メニューを共有しましょう。
ツリーメニューは皆さんもよくご存知かと思いますが、通常はcss+JSを使って実装しています。 CSS3の登場により、JSの制約がなくなり、CSS3の「セレクター」を直接利用して、折りたたみ可能なツリーメニューを実現できるようになりました。
全体的なコードが多いため、一文ごとには説明しませんが、重要だと思うものだけを説明します。
HTML コード:
<li> <label for="subsubfolder1">下级</label> <input id="subsubfolder1" type="checkbox" /> <ol> <li class="file"><a>下级</a></li> <li> <label for="subsubfolder2">下级</label> <input id="subsubfolder2" type="checkbox" /> <ol> <li class="file"><a>无限级</a></li> <li class="file"><a>无限级</a></li> <li class="file"><a>无限级</a></li> <li class="file"><a>无限级</a></li> <li class="file"><a>无限级</a></li> <li class="file"><a>无限级</a></li> </ol> </li> </ol> </li>
実装のアイデアは、チェックボックスのチェックされた値を使用して、下位レベルの列が展開されるかどうかを決定することです。CSS3 セレクターは、:checked 疑似クラスを提供します。要素がチェックされている場合はチェックされた値を使用します。値に達したら CSS を実行します。 (非常に強力ですよね? CSS3 を使用すると、記述する JS が大幅に減ります!)
チェックボックスの値がチェックされている場合、必要な機能を実現する OL が表示されます。
次に CSS コードを見てみましょう:
li input { position:absolute;left:0;margin-left:0;opacity:0;z-index:2;cursor:pointer;height:1em;width:1em;top:0; } input + ol { display:none; } input + ol > li { height:0;overflow:hidden;margin-left:-14px!important;padding-left:1px; } li label { cursor:pointer;display:block;padding-left:17px;background:url(toggle-small-expand.png) no-repeat 0px 1px; } input:checked + ol { background:url(toggle-small.png) 44px 5px no-repeat;margin:-22px 0 0 -44px;padding:27px 0 0 80px;height:auto;display:block; } input:checked + ol > li { height:auto; }
このコードはツリー メニューの中心です:
input:checked + ol {
background: url(toggle-small.png) 44px 5px no- repeat; margin: -22px 0 0 -44px;padding:27px 0 0 80px;height: auto;display: block;
}
これは、入力がチェックされた後にそのレベルの OL が所有するスタイルに関するものです。
IE9以下をご利用の方は読む必要はありません。IE以外のブラウザをご利用ください。
(IE6以降のブラウザにサポートさせることも可能ですが、CSS3属性をシミュレートするJSを追加する必要があります。海外にはIE6以降のブラウザにPIEなどのCSS3の一部をサポートさせるためのJSを書いた優秀な人材がたくさんいます。)
概要:
全体 とはいえ、実装アイデアは非常にシンプルで、主に CSS3 のチェック済み疑似クラスを使用して OL の非表示を実現します。残念ながら、IE ブラウザは CSS3 をサポートしていませんが、IE がサポートしていないからといって CSS3 の研究を諦めるわけにはいきません。 CSS3 と HTML5 はどちらも海外のフロントエンドで非常に注目されているトピックであり、彼らの研究は私たちの研究をはるかに上回っていますが、中国ではまだ実際に試してみる人が多くありません。これはフロントエンド開発者にとって非常に悲しいことです。 CSS3 は注目を集め、スタートラインで負けないようにするべきだと思います。皆さんも力を合わせて CSS3 の開発を推進していきましょう。