切り替えタブdivボックスをCSSのみで実現! コピペで使えるHTML+CSS

スポンサーリンク

divボックスに3つのタブをつけ、タブをクリックすることで、ボックスが入れ替わります。いわゆる、タブボックスです。一般的にはJavascriptやWordpressショートコードプラグインによって実現しますが、こちらではCSSのみで実現する方法をご紹介します。

JavaScriptを用いないためAMPサイトでも利用できます。

スポンサーリンク

切り替えタブdivボックス

見出し1の文章が入ります。見出し1をクリックすることで表示されます。初期状態でもあります。
ここには見出し2の文章が入ります。AMPではimgタグが正常に表示されないことがあります。
ここには見出し3の文章が入ります。見出し3の文章をここに記載すればよいわけです
仕組み

toggle2が関連付けられたlabelを持つ、見出し2をクリックすると、toggle2のidを持つinputのチェックが入ります。そうすると、クラス名input2の状態がチェックされたことになります。結果として、input2:checkedに関連するCSSが反映され、box1とbox3がdisplay: none;となり、box2が表示されます。見出し3をクリックすれば、ラジオボタンの性質から見出し2に関連するinputのチェックが外れ、同じ仕組みによってbox3が表示されます。複数のinput操作をする上でのコツはinputのtypeとしてラジオボタンを使用することです。

スタイルシートで記述
<div> /* WordPressの場合は、<div>で囲んでください*/
<input id="toggle1" class="input1" name="in-box" type="radio" />
<input id="toggle2" class="input2" name="in-box" type="radio" />
<input id="toggle3" class="input3" name="in-box" type="radio" />
<div id="tab-box">
  <div class="tab1"><label for="toggle1">見出し1</label></div>
  <div class="tab2"><label for="toggle2">見出し2</label></div>
  <div class="tab3"><label for="toggle3">見出し3</label></div>
  <div class="box1">見出し1の文章が入ります。見出し1をクリックすることで表示されます。初期状態でもあります。</div>
  <div class="box2"><img style="width: 120px; float: left;" src="pic01.jpg" />ここには見出し2の文章が入ります。画像やリストなどのあらゆる要素を入れることができます。</div>
  <div class="box3">ここには見出し3の文章が入ります。見出し3の文章をここに記載すればよいわけです</div>
</div>
</div> /* WordPressで<div>で囲んだ場合に閉じます*/
input{ /* input(ラジオボタン)は表示しません。表示しないのであって動作はしています */
 display: none;
}
#tab-box label{
  cursor: pointer;
}
#tab-box{
  max-width:600px;
  min-width:250px;
  margin: 0px;
  font-size: 0; /* divについて余白を表示させないためにfont-size:0を設定するテクニックです */
  position: relative;
}
#tab-box .tab1,.tab2,.tab3{
  display: inline-block; /* inline-blockによって横並びになります */
  width: 80px;
  margin:0px;
  border-radius: 4px 4px 0px 0px;
  padding-top:3px;
  text-align: center;
  font-size: 16px;
  color: #ffffff;
}
#tab-box .tab1{
  margin-left:10px;
  background-color: #4d4a46;
}
#tab-box .tab2{
  background-color: #dd5656;
}
#tab-box .tab3{
  background-color: #2f7cbf;
}
#tab-box .box1,.box2,.box3{
  border:5px solid #4d4a46;
  border-radius:7px 7px 7px 7px;
  height:150px;
  padding:5px;
  font-size: 16px;
}
#tab-box .box1{ /* 初期状態はbox1を表示します */
  color:#4d4a46;
  border:5px solid #4d4a46;
}
#tab-box .box2{
  display: none;
  color:#dd5656;
  border:5px solid #dd5656;
}
#tab-box .box3{
  display: none;
  color:#2f7cbf;
  border:5px solid #2f7cbf;
}
.input1:checked ~ #tab-box .box1 { /* input1がチェックされた場合の処理 box1を表示します */
  display: block;
}
.input1:checked ~ #tab-box .box2, #tab-box .box3{/* input1がチェックされた場合の処理 box2とbox3を非表示 */
  display: none;
}
.input2:checked ~ #tab-box .box1 ,#tab-box .box3{/* input2がチェックされた場合の処理 box1とbox3を非表示 */
  display: none;
}
.input2:checked ~ #tab-box .box2 { /* input2がチェックされた場合の処理 box2を表示します */
  display: block;
}
.input3:checked ~ #tab-box .box1,#tab-box .box2 {/* input3がチェックされた場合の処理 box1とbox2を非表示 */
  display: none;
}
.input3:checked ~ #tab-box .box3 { /* input3がチェックされた場合の処理 box3を表示します */
  display: block;
}

使用したCSSプロパティの解説・関連ページ

display ボックスの表示方法 コピペで使えるHTML+CSS
要素をどのように配置するか、displayを使って決定します。blockやinline、inline-block、そしてflex、そして表示をしないnone、具体的な事例をあげてdisplayによってどのように要素が配置されるかを例示します。
続きを読む・閉じるアコーディオンをCSSのみで実装 コピペで使えるHTML+CSS AMP対応
[文章の続きを読む]、いわゆるスポイラー又はアコーディオンと呼ばれるものをCSSのみで実装します。inputとlabel、~セレクタを組み合わせる手法を取ります。JavaScriptを使用しない安全で安定的な方法です。
divを使ったボックスのデザイン コピペで使えるHTML+CSS
divを使って様々なデザインのコンテンツボックスをCSSで実現します。角の丸いボックス、見出しだけが角丸のボックス。少し斜めにした見出し。入り込む見出し、アイコンが追加された見出し等、見やすく洗練されたデザインボックスを紹介します。