menu
menu

キーワード検索

 

前月(11月)の人気記事トップ10

  1. ( 1 - ) 【CSS】CSSだけでドロップダウンメニュー
  2. ( 2 - ) 【Mac】Macのユーザー名とアカウント名を変更する
  3. ( 3 - ) 【jQuery】jQueryでドロップダウンメニュー
  4. ( 4 - ) 【CSS】スマホ対応CSSだけでドロップダウンメニュー
  5. ( 6 ↑) 【iPhone・iPad】iPhoneのメモリを簡単に解放する方法
  6. ( 5 ↓) 【iPhone・iPad】投稿の準備中にエラーが起きました。後でやり直してください。
  7. ( 9 ↑) 【jQuery】入門2. jQueryをHTMLに組み込む
  8. ( 8 - ) 【CSS】レスポンシブデザインのブレークポイントは⁉
  9. (10 ↑) 【Mac】iMovieの保存場所を変更する
  10. ( - ↑) 【PHP】PHPでシンプルなメールフォーム
このエントリーをはてなブックマークに追加

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

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

こんにちは(・∀・)

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

ツリーメニュー

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

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

1. チェックボックスでツリーメニューのサンプル
HTML

<div class="treemenu2">
<h4>チェックボックスでツリーメニュー</h4>
<div class="tm-content">
<label for="tm2-cap1">tree btn</label>
<input id="tm2-cap1" type="checkbox">
<div class="tm2-cont">
<img src="guide.png" alt=""><label for="tm2-cap1-2">tree btn</label>
<input id="tm2-cap1-2" type="checkbox">
<div class="tm2-cont">
<p><img src="guide2.png" alt=""><a href="#">link btn</a></p>
</div>
<p><img src="guide2.png" alt=""><a href="#">link btn</a></p>
</div>
<label for="tm2-cap2">tree btn</label>
<input id="tm2-cap2" type="checkbox">
<div class="tm2-cont">
<img src="guide.png" alt=""><label for="tm2-cap2-2">tree btn</label>
<input id="tm2-cap2-2" type="checkbox">
<div class="tm2-cont">
<img src="guide.png" alt=""><label for="tm2-cap2-3">tree btn</label>
<input id="tm2-cap2-3" type="checkbox">
<div class="tm2-cont">
<p><img src="guide2.png" alt=""><a href="#">link btn</a></p>
</div>
</div>
<p><img src="guide2.png" alt=""><a href="#">link btn</a></p>
</div>
<label for="tm2-cap3">tree btn</label>
<input id="tm2-cap3" type="checkbox">
<div class="tm2-cont">
<p><img src="guide.png" alt=""><a href="#">link btn</a></p>
<img src="guide2.png" alt=""><label for="tm2-cap3-2">tree btn</label>
<input id="tm2-cap3-2" type="checkbox">
<div class="tm2-cont">
<p><img src="guide2.png" alt=""><a href="#">link btn</a></p>
</div>
</div>
<label for="tm2-cap4">tree btn</label>
<input id="tm2-cap4" type="checkbox">
<div class="tm2-cont">
<p><img src="guide.png" alt=""><a href="#">link btn</a></p>
<img src="guide.png" alt=""><label for="tm2-cap4-2">tree btn</label>
<input id="tm2-cap4-2" type="checkbox">
<div class="tm2-cont">
<p> <img src="guide2.png" alt=""><a href="#">link btn</a></p>
</div>
<p><img src="guide2.png" alt=""><a href="#">link btn</a></p>
</div>
<label for="tm2-cap5">tree btn</label>
<input id="tm2-cap5" type="checkbox">
<div class="tm2-cont">
<p><img src="guide.png" alt=""><a href="#">link btn</a></p>
<p><img src="guide2.png" alt=""><a href="#">link btn</a></p>
</div>
<!--tm-content--></div>
<!--treemenu2--></div>

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


<!--[if lt IE 9]>
<style>
.treemenu2 .tm2-cont,
.treemenu3 .tm3-cont {
  height: auto;
}
</style>
<![endif]-->
CSS

* {
  box-sizing: border-box;
}
.treemenu2 {
  width: 960px;/*横幅はここで設定します。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;
}
Result

サンプルデモ

2. ラジオボタンでツリーメニューのサンプル
HTML

<div class="treemenu3">
<h4>ラジオボタンでツリーメニュー</h4>
<div class="tm-content">
<label for="tm3-cap1">tree btn</label>
<input id="tm3-cap1" type="radio" name="tm3">
<div class="tm3-cont">
<img src="guide.png" alt=""><label for="tm3-cap1-2">tree btn</label>
<input id="tm3-cap1-2" type="radio" name="tm3-2">
<div class="tm3-cont">
<p><img src="guide2.png" alt=""><a href="#">link btn</a></p>
</div>
<p><img src="guide2.png" alt=""><a href="#">link btn</a></p>
</div>
<label for="tm3-cap2">tree btn</label>
<input id="tm3-cap2" type="radio" name="tm3">
<div class="tm3-cont">
<p><img src="guide.png" alt=""><a href="#">link btn</a></p>
<img src="guide2.png" alt=""><label for="tm3-cap2-2">tree btn</label>
<input id="tm3-cap2-2" type="radio" name="tm3-2">
<div class="tm3-cont">
<p><img src="guide2.png" alt=""><a href="#">link btn</a></p>
</div>
</div>
<label for="tm3-cap3">tree btn</label>
<input id="tm3-cap3" type="radio" name="tm3">
<div class="tm3-cont">
<img src="guide.png" alt=""><label for="tm3-cap3-2">tree btn</label>
<input id="tm3-cap3-2" type="radio" name="tm3-2">
<div class="tm3-cont">
<p><img src="guide2.png" alt=""><a href="#">link btn</a></p>
</div>
<img src="guide2.png" alt=""><label for="tm3-cap3-3">tree btn</label>
<input id="tm3-cap3-3" type="radio" name="tm3-2">
<div class="tm3-cont">
<p><img src="guide2.png" alt=""><a href="#">link btn</a></p>
</div>
</div>
<label for="tm3-cap4">tree btn</label>
<input id="tm3-cap4" type="radio" name="tm3">
<div class="tm3-cont">
<p><img src="guide2.png" alt=""><a href="#">link btn</a></p>
</div>
<label for="tm3-cap5">tree btn</label>
<input id="tm3-cap5" type="radio" name="tm3">
<div class="tm3-cont">
<p><img src="guide.png" alt=""><a href="#">link btn</a></p>
<p><img src="guide2.png" alt=""><a href="#">link btn</a></p>
</div>
<!--tm-content--></div>
<!--treemenu3--></div>

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


<!--[if lt IE 9]>
<style>
.treemenu2 .tm2-cont,
.treemenu3 .tm3-cont {
  height: auto;
}
</style>
<![endif]-->
CSS

* {
  box-sizing: border-box;
}
.treemenu3 {
  width: 960px;
  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;
}
Result

サンプルデモ


関連リンク

【jQuery】jQueryでツリーメニュー

  • CSS3 ツリーメニュー
このエントリーをはてなブックマークに追加