STERFIELD

CSS3だけで折りたたみ表示

CSS3だけで折りたたみ表示

スマートフォンやタブレットPC用のWebサイトを作るときに、
場所を節約するために、コンテンツを折りたたんで表示することが度々あります、

通常は折りたたみ表示をするとき、JavaScriptなどを使って実装するのですが、
スマートフォンやタブレットPCなどではCSS3に対応しているため、
JavaScriptを使わずに、CSS3のみ折りたたみ表示を実装することができます。

参考:「『スマートフォンサイトのためのHTML5+CSS3』 エ・ビスコム・テック・ラボ著」

↓こちらがそのデモです。

DEMO

 

 方法

今回ポイントになるのが、擬似クラスの「:target」セレクタです。

メニュー部分に設置したリンクで指定したIDの要素に適用することができます。

メニューにIDのリンクを、折りたたむ要素の親要素に:targetをあてることで、実装していきます。

 

HTML

今回はh2要素をメニューに、その親要素にターゲットのIDをつけます。

実際に折りたたむのは、h2の隣のdiv要素にします。

 

CSS

transitionによるアニメーションをいれたかったので、 折りたたむ要素の高さを変化させることで、折りたたむことにしました。アニメーションが必要ない場合は、通常をdisplayのnoneに、ターゲットになっているときをdisplayのblockに指定することでも折りたたみを実装できます。

今回はh2の背景画像(マーク)と角丸の形状も変化させるので、こちらも:targetを使って指定します。

CSS

 

javascriptが無効な環境で、折りたたみ表示を実装するのに役立つ方法です。

ページ内リンクを利用するので、

ずっと折りたたみの動作を繰り返していると、戻るボタンが大変なことになりますが、

そういったことに配慮が必要ない場合は、簡単に設置できるので、

実用でも利用できそうです。

 

 

Author Profile

著者近影

NINOMIYA

Webデザイナー兼コーダー出身のフロントエンド開発者です。 UXデザインやチーム開発の効率化など、勉強中です。

SHARE

合わせて読みたい