menu
menu

CSSだけでサイズ可変・スマホ対応のツリーメニュー | Webデザインラボ

キーワード検索

11月のアクセストップ10

  1. ( 1-) スマホサイトの作成・基本編
  2. ( 3↑) CSSだけでドロップダウンメニュー
  3. ( 2↓) CSSだけでサイズ可変・スマホ対応のアコーディオン
  4. ( 4-) HTML5・ページ作成の基本
  5. ( 5-) jQueryでドロップダウンメニュー
  6. ( 6-) スマホ・タブレット・PCの振り分けいろいろ
  7. ( 9↑) 表示しているブラウザの高さを取得してCSSのheightに指定
  8. ( 8-) Windows 10にApache2.4 VC11をインストール
  9. ( 7↓) JavaScriptで新しいウィンドウを開く
  10. (-↑) CSSだけでブロック要素の表示非表示(トグルボタン)
  • facebook4
  • はてなブックマーク3
  • Google+5
  • Pocket0
  • Twitter0

CSSだけでサイズ可変・スマホ対応のツリーメニュー

  • Labs

CSS3

こんにちは(・∀・)

 CSSだけで作ってみましたシリーズです。今回はツリーメニューをご紹介します。

ツリーメニュー

 チェックボックスを使ったツリーメニューとラジオボタンを使ったツリーメニューの2種類です。それぞれの特質にあわせた形でツリーメニューが展開されます。チェックボックスを使ったツリーメニューはその性質上、ボタンを選択(クリック)したら選択した分すべて展開しますが、ラジオボタンのツリーメニューはnameでグループになっている部分1つしか選択(クリック)できないので1箇所選択(クリック)すると他の所は閉じます。しかし、入れ子にしてある部分はグループが別になるためその限りではありません。また、最初から展開している状態で表示したい場合はinput要素にcheckedを入れればページを開いた時点でその要素は開いて表示されます。

 IEは9以上で正しく動作します。

1. チェックボックスでツリーメニュー

サンプルデモ

 サンプルデモはこちら!


HTML

<div class="treemenu2">
<div class="tm-content">
<label for="tm2-cap1">INDEX</label>
<input id="tm2-cap1" type="checkbox">
<div class="tm2-cont">
	<img src="guide.png" alt=""><label for="tm2-cap1-2">INDEX</label>
	<input id="tm2-cap1-2" type="checkbox">
	<div class="tm2-cont">
	<p> <img src="guide2.png" alt=""><a href="#">コンテンツ</a></p>
	</div>
<p><img src="guide2.png" alt=""> <a href="#">コンテンツ</a></p>
</div>
<label for="tm2-cap2">INDEX</label>
<input id="tm2-cap2" type="checkbox">
<div class="tm2-cont">
	<img src="guide.png" alt=""><label for="tm2-cap2-2">INDEX</label>
	<input id="tm2-cap2-2" type="checkbox">
	<div class="tm2-cont">
		<img src="guide.png" alt=""><label for="tm2-cap2-3">INDEX</label>
		<input id="tm2-cap2-3" type="checkbox">
		<div class="tm2-cont">
		<p> <img src="guide2.png" alt=""><a href="#">コンテンツ</a></p>
		</div>
	</div>
<p><img src="guide2.png" alt=""> <a href="#">コンテンツ</a></p>
</div>
<label for="tm2-cap3">INDEX</label>
<input id="tm2-cap3" type="checkbox">
<div class="tm2-cont">
<p><img src="guide.png" alt=""><a href="#">コンテンツ</a></p>
	<img src="guide2.png" alt=""><label for="tm2-cap3-2">INDEX</label>
	<input id="tm2-cap3-2" type="checkbox">
	<div class="tm2-cont">
	<p> <img src="guide2.png" alt=""><a href="#">コンテンツ</a></p>
	</div>
</div>
<label for="tm2-cap4">INDEX</label>
<input id="tm2-cap4" type="checkbox">
<div class="tm2-cont">
<p><img src="guide.png" alt=""><a href="#">コンテンツ</a></p>
	<img src="guide.png" alt=""><label for="tm2-cap4-2">INDEX</label>
	<input id="tm2-cap4-2" type="checkbox">
	<div class="tm2-cont">
	<p> <img src="guide2.png" alt=""><a href="#">コンテンツ</a></p>
	</div>
<p><img src="guide2.png" alt=""><a href="#">コンテンツ</a></p>
</div>
<label for="tm2-cap5">INDEX</label>
<input id="tm2-cap5" type="checkbox">
<div class="tm2-cont">
<p><img src="guide.png" alt=""><a href="#">コンテンツ</a></p>
<p><img src="guide2.png" alt=""><a href="#">コンテンツ</a></p>
</div>
<!--tm-content--></div>
<!--treemenu2--></div>

 以下のコードをHTMLに記述すればレイアウトは崩れますがIE8でもコンテンツを表示することができます。


<!--[if lt IE 9]>
<style>
.treemenu2.tm2-cont {/*1番のサンプル用*/
	height: auto;
}
</style>
<![endif]-->
CSS

.treemenu2 {
	width: 100%;/*横幅はここで設定します。100%にすれば可変になります。*/
	min-width: 300px;
	margin: 0 auto;
}
.treemenu2 .tm-content {
	margin: 0 10px;
}
.treemenu2 input {
	display: none;
}
.treemenu2 label {
	cursor: pointer;
	padding: 10px;
}
.treemenu2 label:hover {
	color: #ccc;
}
.treemenu2 .tm2-cont {
	transition: 0.2s;
	height: 0;
	overflow: hidden;
	padding: 0 10px;
}
.treemenu2 input:checked + .tm2-cont {
	height: auto;
	padding: 10px;
}

2. ラジオボタンでツリーメニュー

サンプルデモ

 サンプルデモはこちら!


HTML

<div class="treemenu3">
<div class="tm-content">
<label for="tm3-cap1">INDEX</label>
<input id="tm3-cap1" type="radio" name="tm3">
<div class="tm3-cont">
	<img src="guide.png" alt=""><label for="tm3-cap1-2">INDEX</label>
	<input id="tm3-cap1-2" type="radio" name="tm3-2">
	<div class="tm3-cont">
	<p> <img src="guide2.png" alt=""><a href="#">コンテンツ</a></p>
	</div>
<p><img src="guide2.png" alt=""> <a href="#">コンテンツ</a></p>
</div>
<label for="tm3-cap2">INDEX</label>
<input id="tm3-cap2" type="radio" name="tm3">
<div class="tm3-cont">
<p><img src="guide.png" alt=""> <a href="#">コンテンツ</a></p>
	<img src="guide2.png" alt=""><label for="tm3-cap2-2">INDEX</label>
	<input id="tm3-cap2-2" type="radio" name="tm3-2">
	<div class="tm3-cont">
	<p> <img src="guide2.png" alt=""><a href="#">コンテンツ</a></p>
	</div>
</div>
<label for="tm3-cap3">INDEX</label>
<input id="tm3-cap3" type="radio" name="tm3">
<div class="tm3-cont">
	<img src="guide.png" alt=""><label for="tm3-cap3-2">INDEX</label>
	<input id="tm3-cap3-2" type="radio" name="tm3-2">
	<div class="tm3-cont">
	<p> <img src="guide2.png" alt=""><a href="#">コンテンツ</a></p>
	</div>
	<img src="guide2.png" alt=""><label for="tm3-cap3-3">INDEX</label>
	<input id="tm3-cap3-3" type="radio" name="tm3-2">
	<div class="tm3-cont">
	<p> <img src="guide2.png" alt=""><a href="#">コンテンツ</a></p>
	</div>
</div>
<label for="tm3-cap4">INDEX</label>
<input id="tm3-cap4" type="radio" name="tm3">
<div class="tm3-cont">
	<p> <img src="guide2.png" alt=""><a href="#">コンテンツ</a></p>
</div>
<label for="tm3-cap5">INDEX</label>
<input id="tm3-cap5" type="radio" name="tm3">
<div class="tm3-cont">
	<p> <img src="guide.png" alt=""><a href="#">コンテンツ</a></p>
	<p> <img src="guide2.png" alt=""><a href="#">コンテンツ</a></p>
</div>
<!--ac-content--></div>
<!--accordion2--></div>

 以下のコードをHTMLに記述すればレイアウトは崩れますがIE8でもコンテンツを表示することができます。


<!--[if lt IE 9]>
<style>
.treemenu3 .tm3-cont {/*2番のサンプル用*/
	height: auto;
}
</style>
<![endif]-->
CSS

.treemenu3 {
	width: 100%;/*横幅はここで設定します。100%にすれば可変になります。*/
	min-width: 300px;
	margin: 0 auto;
}
.treemenu3 .tm-content {
	margin: 0 10px;
}
.treemenu3 label {
	cursor: pointer;
	padding: 10px;
}
.treemenu3 label:hover {
	color: #ccc;
}
.treemenu3 input {
	display: none;
}
.treemenu3 .tm3-cont {
	transition: 0.2s;
	height: 0;
	overflow: hidden;
	padding: 0 10px;
}
.treemenu3 input:checked + .tm3-cont {
	height: auto;
	padding: 10px;
}

関連リンク

 jQueryでツリーメニュー

  • カテゴリー:Labs
  • facebook4
  • はてなブックマーク3
  • Google+5
  • Pocket0
  • Twitter0