9月更新・前月(8月)の人気記事トップ10 09/02/2024
- ( 01 – ) 【Labs】position:absoluteとwidth:100%を指定すると横幅の設定がうまくいかない場合の対処方法について
- ( 07 ↑) 【Mac】macOSをHigh SierraからMontereyにアップグレード
- ( 03 – ) 【Mac】横画面で撮影した動画をYouTubeショート用にMacのiMovieで縦画面に編集する方法
- ( 10 ↑) 【iPhone / iPad】iPhoneのツイッターアプリでユーザー名をコピーする方法
- (圏外↑) 【Labs】CSSだけでドロップダウンメニュー
- ( 02 ↓) 【jQuery】入門2. jQueryをHTMLに組み込む
- ( 09 ↑) 【Mac】Safariでソースコードを見る方法
- ( 04 ↓) 【jQuery】入門7. jQueryで新しいWindowを開く
- ( 06 ↓) 【2024年5月】iPad画面解像度まとめ
- (圏外↑) 【GIMP】レイヤーをロック
【Labs】CSSだけでサイズ可変・スマホ対応のアコーディオン
こんにちは(・∀・)
CSS3のAnimationやtransitionといったプロパティのおかげでJavaScriptを使わなくても動きのあるWebサイトが作れるようになってきました。そこで今回はCSSだけで作る、サイズが可変してスマホにも対応したアコーディオンをご紹介します。
Contents
スマホ対応のアコーディオン
チェックボックスを使ったアコーディオンとラジオボタンを使ったアコーディオンの2種類です。それぞれの特質にあわせた形でアコーディオンが展開されます。チェックボックスを使ったアコーディオンはその性質上、ボタンを選択(クリック)したら選択した分すべて展開しますが、ラジオボタンのアコーディオンはnameでグループになっているので選択(クリック)した分だけ展開します。また、最初から展開している状態で表示したい場合はinput要素にcheckedを入れればページを開いた時点でその要素は開いて表示されます。
サンプルは横幅100%で可変になっています。min-widthを300pxに設定してありますので、そのサイズまでブラウザ幅を縮めると横スクロールバーが出ます。チェックボックスやラジオボタンがトリガーとなり展開する仕組みですのでアコーディオンだけではなく、ツリーメニューやタブレイアウトでも使えそうですね。
IEは10以上で正しく動作します。
1. チェックボックスでアコーディオン
HTML
<div class="sample-accordion">
<div class="ac-content">
<label for="ac-cap1">1</label>
<input id="ac-cap1" type="checkbox">
<div class="ac-cont">
<p>コンテンツ1</p>
</div>
<label for="ac-cap2">2</label>
<input id="ac-cap2" type="checkbox">
<div class="ac-cont">
<p>コンテンツ2<br>
コンテンツ2</p>
</div>
<label for="ac-cap3">3</label>
<input id="ac-cap3" type="checkbox">
<div class="ac-cont">
<p>コンテンツ3</p>
<p>コンテンツ3<br>
コンテンツ3</p>
</div>
<label for="ac-cap4">4</label>
<input id="ac-cap4" type="checkbox">
<div class="ac-cont">
<p>コンテンツ4<br>
コンテンツ4</p>
<p>コンテンツ4<br>
コンテンツ4</p>
</div>
<label for="ac-cap5">5</label>
<input id="ac-cap5" type="checkbox">
<div class="ac-cont">
<p>コンテンツ5</p>
<p>コンテンツ5</p>
<p>コンテンツ5</p>
<p>コンテンツ5</p>
<p>コンテンツ5</p>
</div>
<!--ac-content--></div>
<!--sample-accordion--></div>
CSS
.sample-accordion {
min-width: 300px;
margin: 0 auto;
padding: 0;
}
.sample-accordion .ac-content {
margin: 0;
padding: 0;
}
.sample-accordion input {
display: none;
}
.sample-accordion label {
display: block;
background: #9fb7d4;
cursor: pointer;
padding: 10px;
color: #fff;
border-bottom: 1px solid #fff;
box-sizing: border-box;
}
.sample-accordion label:hover {
background: #ccc;
}
.sample-accordion .ac-cont {
transition: 0.2s;
height: 0;
overflow: hidden;
background: #ddd;
padding: 0 10px;
box-sizing: border-box;
}
.sample-accordion input:checked + .ac-cont {
height: auto;
padding: 10px;
box-sizing: border-box;
}
Result
2. ラジオボタンでアコーディオン
HTML
<div class="sample-accordion">
<div class="ac-content">
<label for="ac-cap1">1</label>
<input id="ac-cap1" type="radio" name="ac" checked>
<div class="ac-cont">
<p>コンテンツ1</p>
</div>
<label for="ac-cap2">2</label>
<input id="ac-cap2" type="radio" name="ac">
<div class="ac-cont">
<p>コンテンツ2<br>
コンテンツ2</p>
</div>
<label for="ac-cap3">3</label>
<input id="ac-cap3" type="radio" name="ac">
<div class="ac-cont">
<p>コンテンツ3</p>
<p>コンテンツ3<br>
コンテンツ3</p>
</div>
<label for="ac-cap4">4</label>
<input id="ac-cap4" type="radio" name="ac">
<div class="ac-cont">
<p>コンテンツ4<br>
コンテンツ4</p>
<p>コンテンツ4<br>
コンテンツ4</p>
</div>
<label for="ac-cap5">5</label>
<input id="ac-cap5" type="radio" name="ac">
<div class="ac-cont">
<p>コンテンツ5</p>
<p>コンテンツ5</p>
<p>コンテンツ5</p>
<p>コンテンツ5</p>
<p>コンテンツ5</p>
</div>
<!--ac-content--></div>
<!--sample-accordion--></div>
CSS
.sample-accordion {
min-width: 300px;
margin: 0 auto;
padding: 0;
}
.sample-accordion .ac-content {
margin: 0;
padding: 0;
}
.sample-accordion input {
display: none;
}
.sample-accordion label {
display: block;
background: #9fb7d4;
cursor: pointer;
padding: 10px;
border-bottom: 1px solid #fff;
box-sizing: border-box;
}
.sample-accordion label:hover {
background: #ccc;
}
.sample-accordion .ac-cont {
transition: 0.2s;
height: 0;
overflow: hidden;
background: #ddd;
padding: 0 10px;
box-sizing: border-box;
}
.sample-accordion input:checked + .ac-cont {
height: auto;
padding: 10px;
box-sizing: border-box;
}
Result
関連リンク
【CSS】CSSだけで横に展開するアコーディオン
【jQuery】jQueryでスマホ画面は縦方向PC画面は横方向に展開するアコーディオン
【jQuery】サイズ可変・スマホ対応のアコーディオン
参考
かつてはJavaScriptを利用していたものの、今ではCSSのみで実装できる10の小技
CSSだけでメニューが開いたり閉じたりするアコーディオンを作る!javascript不要