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
  • はてなブックマーク4
  • Google+5
  • Pocket0
  • Twitter0

CSSだけで横に展開するサイズ可変・スマホ対応アコーディオン

  • Labs

CSS3

こんにちは(・∀・)

 前回ご紹介しましたCSSだけでサイズ可変・スマホ対応のアコーディオンと、このCSSだけで横に展開するアコーディオンの構造はまったく同じなので、前回の縦アコーディオンのCSSを使って、小さい画面は縦のアコーディオンで、大きい画面は横のアコーディオンになるようレスポンシブデザインでスマホにも対応できるよう変更しました。

スマホ対応アコーディオン

 前回同様チェックボックスを使ったアコーディオンとラジオボタンを使ったアコーディオンの2種類をご紹介します。なお今回はdisplayプロパティで要素の表示非表示を行っているのですが、transitionプロパティはdisplayプロパティに対応しておりません。なので今回のサンプルはアニメーション的な動きはありません。また今回も前回と同じく最初から開いている状態にしたい場合はinput要素にcheckedを入れればクリックするまえから展開した状態で表示されます。

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


1. チェックボックスでアコーディオン

サンプルデモ

 サンプルデモはこちら!


HTML

<div class="accordion3">
<div class="ac-content">
<label for="ac3-cap1">1</label>
<input id="ac3-cap1" type="checkbox" checked>
<div class="ac3-cont">
<p>コンテンツ1</p>
</div>
<label for="ac3-cap2">2</label>
<input id="ac3-cap2" type="checkbox">
<div class="ac3-cont">
<p>コンテンツ2</p>
</div>
<label for="ac3-cap3">3</label>
<input id="ac3-cap3" type="checkbox">
<div class="ac3-cont">
<p>コンテンツ3</p>
</div>
<!--ac-content--></div>
<!--accordion3--></div>

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


<!--[if lt IE 9]>
<style>
.accordion3 .ac3-cont {/*1番のサンプル用*/
	display: block;
}
</style>
<![endif]-->
CSS

.accordion3 {
	min-width: 300px;
	margin: 0 auto;
}
.accordion3 .ac-content {
	margin: 0 10px;
}
.accordion3 input {
	display: none;
}
.accordion3 label {
	display: block;
	background: #9fb7d4;
	cursor: pointer;
	padding: 10px;
	border-bottom: 1px solid #fff;
}
.accordion3 label:hover {
	background: #ccc;
}
.accordion3 .ac3-cont {
	transition: 0.2s;
	height: 0;
	overflow: hidden;
	background: #ddd;
	padding: 0 10px;
}
.accordion3 input:checked + .ac3-cont {
	height: auto;
	padding: 10px;
}
@media only screen and (min-width: 768px) {
.accordion3 {
	width: 600px;
	height: 300px;
	margin: 0 auto;
	overflow: hidden;
	background: #9fb7d4;
}
.accordion3 .ac-content {
	margin: 0;
}
.accordion3 input {
	display: none;
}
.accordion3 label {
	float: left;
	width: 20px;
	height: 300px;
	background: #9fb7d4;
	cursor: pointer;
	padding: 10px;
	border-right: 1px solid #fff;
}
.accordion3 label:hover {
	background: #ccc;
}
.accordion3 .ac3-cont {
	float: left;
	width: 138px;
	height: 300px;
	display: none;
	background: #ddd;
	border-right: 1px solid #fff;
}
.accordion3 input:checked + .ac3-cont {
	width: 138px;
	height: 300px;
	padding: 10px;
	display: block;
}
/* ** */}

2. ラジオボタンでアコーディオン

サンプルデモ

 サンプルデモはこちら!


HTML

<div class="accordion4">
<div class="ac-content">
<label for="ac4-cap1">1</label>
<input id="ac4-cap1" type="radio" name="ac4" checked>
<div class="ac4-cont">
<p>コンテンツ1</p>
</div>
<label for="ac4-cap2">2</label>
<input id="ac4-cap2" type="radio" name="ac4">
<div class="ac4-cont">
<p>コンテンツ2</p>
</div>
<label for="ac4-cap3">3</label>
<input id="ac4-cap3" type="radio" name="ac4">
<div class="ac4-cont">
<p>コンテンツ3</p>
</div>
<label for="ac4-cap4">4</label>
<input id="ac4-cap4" type="radio" name="ac4">
<div class="ac4-cont">
<p>コンテンツ4</p>
</div>
<label for="ac4-cap5">5</label>
<input id="ac4-cap5" type="radio" name="ac4">
<div class="ac4-cont">
<p>コンテンツ5</p>
</div>
<!--ac-content--></div>
<!--accordion4--></div>

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


<!--[if lt IE 9]>
<style>
.accordion4 {/*2番のサンプル用*/
	overflow: scroll;
}
.accordion4 .ac4-cont {
	display: block;
}
</style>
<![endif]-->
CSS

.accordion4 {
	min-width: 300px;
	margin: 0 auto;
}
.accordion4 .ac-content {
	margin: 0 10px;
}
.accordion4 label {
	display: block;
	background: #9fb7d4;
	cursor: pointer;
	padding: 10px;
	border-bottom: 1px solid #fff;
}
.accordion4 label:hover {
	background: #ccc;
}
.accordion4 input {
	display: none;
}
.accordion4 .ac4-cont {
	transition: 0.2s;
	height: 0;
	overflow: hidden;
	background: #ddd;
	padding: 0 10px;
}
.accordion4 input:checked + .ac4-cont {
	height: auto;
	padding: 10px;
}
@media only screen and (min-width: 768px) {
.accordion4 {
	width: 600px;
	height: 300px;
	margin: 0 auto;
	overflow: hidden;
}
.accordion4 .ac-content {
	margin: 0;
}
.accordion4 input {
	display: none;
}
.accordion4 label {
	float: left;
	width: 20px;
	height: 300px;
	background: #9fb7d4;
	cursor: pointer;
	padding: 10px;
	border-right: 1px solid #fff;
}
.accordion4 label:hover {
	background: #ccc;
}
.accordion4 .ac4-cont {
	float: left;
	width: 374px;
	height: 300px;
	display: none;
	background: #ddd;
	border-right: 1px solid #fff;
}
.accordion4 input:checked + .ac4-cont {
	width: 374px;
	height: 300px;
	padding: 10px;
	display: block;
}
/* ** */}

関連リンク

 CSSだけでサイズ可変・スマホ対応のアコーディオン

 横方向に展開するアコーディオン

 サイズ可変・スマホ対応のアコーディオン


参考

 かつてはJavaScriptを利用していたものの、今ではCSSのみで実装できる10の小技

 CSSだけでメニューが開いたり閉じたりするアコーディオンを作る!javascript不要

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