2008年04月12日

CSSのみでアコーディオンメニュー

CSSnewbleCSSのみでアコーディオンメニューを作るという面白いアイデアが紹介されていました。特に難しいこともなく簡単な記述でアコーディオンメニューっぽいものを作ることが出来ます。実際にどのような動作をするのかはCSSnewbleでのサンプルを見るとわかると思います。今回はこれをページのレイアウトに利用した全画面バージョンを作ってみました。

使用したhtmlとCSS

<div id="accordion">
<div id="part1"><h1>div#accordion div#part1</h1><p>CSSのみでアコーディオンメニュー</p></div>
<div id="part2"><h2>div#accordion div#part2</h2><p>CSSのみでアコーディオンメニュー</p></div>
<div id="part3"><h3>div#accordion div#part3</h3><p>CSSのみでアコーディオンメニュー</p></div>
<div id="part4"><h4>div#accordion div#part4</h4><p>CSSのみでアコーディオンメニュー</p></div>
<div id="part5"><h5>div#accordion div#part5</h5><p>CSSのみでアコーディオンメニュー</p></div>
</div>
html,body {
	height:100%;
	margin: 0;
	padding: 0;
}
#accordion {
	height: 100%;
}
#accordion div {
	float:left;
	height: 100%;
	width: 20%;
	overflow: hidden;
}
#accordion:hover div {
	width: 5%;
}
#accordion:hover div:hover {
    width: 80%;
    overflow: auto;
}

通常レイアウトとして全体を5つのdivで分けるので#accordionのwidthで設定している数値(今回は100%)を5分割した20%を#accordion以下のdiv要素全てに設定しておきます。#accordion:hover divで5つのdiv#accordionにマウスが乗った場合5つのdiv要素全てを5%に縮める設定にします。さらに#accordion:hover div:hoverで現在マウスが乗っているdiv要素の大きさを80%に広げます。

hoverの中のhover要素をフォーカスするところがこのアイデアの面白いところだと思います。

この場合の5%や20%は好きな大きさでかまいません。ただしそれぞれを足した数値の合計が#accordion で設定しているwidthと同じ大きさになるようにしないといけません。

注意点としては腐れブラウザであるIE6君は:hoverがaタグ以外対応していませんので、IE6に対応させたい場合はこちらのエントリー(IEでhoverをa以外に効かせる)を参照してください。

コメントを投稿

SEARCH THIS BLOG

RECENT ENTRY

CATEGORY

ARCHIVES