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で実現します。角の丸いボックス、見出しだけが角丸のボックス。少し斜めにした見出し。入り込む見出し、アイコンが追加された見出し等、見やすく洗練されたデザインボックスを紹介します。