コピペでできる!cssとhtmlのみで作るアコーディオンメニュー

CSS HTML
 2018.01.29
 2018.03.22

cssとhtmlのみで作るアコーディオンメニューです。
メニューに使える<li>リストタグで作るものと、長文のテキストなどを入れ込んでもカスタマイズが面倒でないものをピックアップ。
基本構造は、<input>タグを利用しています。
input typeを「radio」にすればクリック時にアクティブになっていないものを閉じることができ、
input typeを「checkbox」にすれば他をクリックしても開いたままにできます。

browser:  65 11 20 10 

cssとhtmlのみで作るアコーディオンメニュー[4種]

リストを使ったアコーディオンメニュー

ニャン易度
<div class="cp_menu">
<label for="cp_menu_bar1">menu01</label>
<input type="radio" name="radio" id="cp_menu_bar1" class="accordion" />
<ul id="link1">
	<li><a href="">link01</a></li>
	<li><a href="">link02</a></li>
	<li><a href="">link03</a></li>
	<li><a href="">link04</a></li>
</ul>
<label for="cp_menu_bar2">menu02</label>
<input type="radio" name="radio" id="cp_menu_bar2" class="accordion" />
<ul id="link2">
	<li><a href="">link01</a></li>
	<li><a href="">link02</a></li>
	<li><a href="">link03</a></li>
	<li><a href="">link04</a></li>
</ul>
</div>
.cp_menu {
	max-width: 360px;
	margin: 0 auto;
	padding: 0;
}
.cp_menu a {
	display: block;
	padding: 10px;
	text-decoration: none;
	color: #000000;
	line-height: 1;
}
.cp_menu label {
	display: block;
	position: relative;
	margin: 0 0 2px 0;
	padding: 12px;
	line-height: 1;
	color: #ffffff;
	background: #1b2538;
	cursor: pointer;
}
.cp_menu label::before {
	position: absolute;
	content: '▼';
	color: #ffffff;
	right: 0.5em;
	top: 25%;
}
.cp_menu input {
	display: none;
}
.cp_menu ul {
	margin: 0;
	padding: 0;
	background: #f4f4f4;
	list-style: none;
}
.cp_menu li {
	overflow-y: hidden;
	max-height: 0;
	transition: all 0.5s;
}
/*リストが増えたらULごとに追加してください*/
#cp_menu_bar1:checked ~ #link1 li,
#cp_menu_bar2:checked ~ #link2 li {
	max-height: 46px;
	opacity: 1;
}

リストを使ったアコーディオンメニュー(multi)

ニャン易度
<div class="cp_menu">
<label for="cp_menu_bar1">menu01</label>
<input type="radio" name="radio" id="cp_menu_bar1" class="accordion" />
<ul id="link1">
	<li><a href="">link01</a></li>
	<li><a href="">link02</a></li>
	<li><a href="">link03</a></li>
	<li><a href="">link04</a></li>
</ul>
<label for="cp_menu_bar2">menu02</label>
<input type="radio" name="radio" id="cp_menu_bar2" class="accordion" />
<ul id="link2">
	<li><a href="">link01</a></li>
	<li><a href="">link02</a></li>
	<li><a href="">link03</a></li>
	<li><a href="">link04</a></li>
</ul>
</div>
.cp_menu {
	max-width: 360px;
	margin: 0 auto;
	padding: 0;
}
.cp_menu a {
	display: block;
	padding: 10px;
	text-decoration: none;
	color: #000000;
	line-height: 1;
}
.cp_menu label {
	display: block;
	position: relative;
	margin: 0 0 2px 0;
	padding: 12px;
	line-height: 1;
	color: #ffffff;
	background: #1b2538;
	cursor: pointer;
}
.cp_menu label::before {
	position: absolute;
	content: '▼';
	color: #ffffff;
	right: 0.5em;
	top: 25%;
}
.cp_menu input {
	display: none;
}
.cp_menu ul {
	margin: 0;
	padding: 0;
	background: #f4f4f4;
	list-style: none;
}
.cp_menu li {
	overflow-y: hidden;
	max-height: 0;
	transition: all 0.5s;
}
/*リストが増えたらULごとに追加してください*/
#cp_menu_bar1:checked ~ #link1 li,
#cp_menu_bar2:checked ~ #link2 li {
	max-height: 46px;
	opacity: 1;
}

長文テキストも表示できるアコーディオンメニュー

ニャン易度

イエネコの起源は、ネズミを捕獲させる目的で飼われ始めたヨーロッパヤマネコの家畜化であり、ヨーロッパヤマネコの亜種とされることもある。ヨーロッパヤマネコの学名をより記載の早いイエネコと同じFelis catusとする説もあったが、2003年にICZNの強権によりF.catusはイエネコのみを指す学名として、野生種の学名はF.silvestrisを引き続き使用することが認められた。

古く日本ではヤマイヌ(狼)に対して「イエイヌ」とも言っていた。英語名 domestic dog は、伝統的な学名 C. familiaris(家族の-犬)を英訳にしたもので、日本では domestic dog の訳語として古来からのイエイヌの語をあてるようになった。

最も広義にはウサギ目、狭義にはウサギ科、さらに狭義にはウサギ亜科もしくはノウサギ亜科 Leporinaeの総称である。

<div class="cp_actab">
<input id="tab-four" type="radio" name="tabs2">
<label for="tab-four">タイトル</label>
<div class="cp_actab-content">
<p>テキスト</p>
</div>
</div>
<div class="cp_actab">
<input id="tab-five" type="radio" name="tabs2">
<label for="tab-five">タイトル</label>
<div class="cp_actab-content">
<p>テキスト</p>
</div>
</div>
<div class="cp_actab">
<input id="tab-six" type="radio" name="tabs2">
<label for="tab-six">タイトル</label>
<div class="cp_actab-content">
<p>テキスト</p>
</div>
</div>
.cp_actab {
	position: relative;
	overflow: hidden;
	width: 100%;
	margin-bottom: 1px;
	color: #ffffff;
}
.cp_actab input {
	position: absolute;
	z-index: -1;
	opacity: 0;
}
.cp_actab label {
	font-weight: bold;
	line-height: 3;
	position: relative;
	display: block;
	padding: 0 0 0 1em;
	margin: 0 0 1px 0;
	cursor: pointer;
	background: #1b2538;
}
.cp_actab .cp_actab-content {
	overflow: hidden;
	max-height: 0;
	-webkit-transition: max-height 0.35s;
	transition: max-height 0.35s;
	background: #a9bce2;
}
.cp_actab .cp_actab-content p {
	margin: 1em;
}
/* :checked */
.cp_actab input:checked ~ .cp_actab-content {
	max-height: 20em;
}
/* Icon */
.cp_actab label::after {
	line-height: 3;
	position: absolute;
	top: 0;
	right: 0;
	display: block;
	width: 3em;
	height: 3em;
	-webkit-transition: all 0.35s;
	transition: all 0.35s;
	text-align: center;
}
.cp_actab input[type=radio] + label::after {
	content: 'BC';
}
.cp_actab input[type=radio]:checked + label::after {
	transform: rotateX(180deg);
}

長文テキストも表示できるアコーディオンメニュー(multi)

ニャン易度

イエネコの起源は、ネズミを捕獲させる目的で飼われ始めたヨーロッパヤマネコの家畜化であり、ヨーロッパヤマネコの亜種とされることもある。ヨーロッパヤマネコの学名をより記載の早いイエネコと同じFelis catusとする説もあったが、2003年にICZNの強権によりF.catusはイエネコのみを指す学名として、野生種の学名はF.silvestrisを引き続き使用することが認められた。

古く日本ではヤマイヌ(狼)に対して「イエイヌ」とも言っていた。英語名 domestic dog は、伝統的な学名 C. familiaris(家族の-犬)を英訳にしたもので、日本では domestic dog の訳語として古来からのイエイヌの語をあてるようになった。

最も広義にはウサギ目、狭義にはウサギ科、さらに狭義にはウサギ亜科もしくはノウサギ亜科 Leporinaeの総称である。

<div class="cp_actab">
<input id="tab-one" type="checkbox" name="tabs">
<label for="tab-one">タイトル</label>
<div class="cp_actab-content">
<p>テキスト</p>
</div>
</div>
<div class="cp_actab">
<input id="tab-two" type="checkbox" name="tabs">
<label for="tab-two">タイトル</label>
<div class="cp_actab-content">
<p>テキスト</p>
</div>
</div>
<div class="cp_actab">
<input id="tab-three" type="checkbox" name="tabs">
<label for="tab-three">タイトル</label>
<div class="cp_actab-content">
<p>テキスト</p>
</div>
</div>
.cp_actab {
	position: relative;
	overflow: hidden;
	width: 100%;
	margin: 0 auto;
	color: #ffffff;
}
.cp_actab input {
	position: absolute;
	z-index: -1;
	opacity: 0;
}
.cp_actab label {
	font-weight: bold;
	line-height: 3;
	position: relative;
	display: block;
	padding: 0 0 0 1em;
	cursor: pointer;
	margin: 0 0 1px 0;
	background: #da3c41;
}
.cp_actab .cp_actab-content {
	overflow: hidden;
	max-height: 0;
	-webkit-transition: max-height 0.35s;
	transition: max-height 0.35s;
	color: #333333;
	background: #f1c6c6;
}
.cp_actab .cp_actab-content p {
	margin: 1em;
}
/* :checked */
.cp_actab input:checked ~ .cp_actab-content {
	max-height: 20em;
}
/* Icon */
.cp_actab label::after {
	line-height: 3;
	position: absolute;
	top: 0;
	right: 0;
	display: block;
	width: 3em;
	height: 3em;
	-webkit-transition: all 0.35s;
	transition: all 0.35s;
	text-align: center;
}
.cp_actab input[type=checkbox] + label::after {
	content: '+';
}
.cp_actab input[type=checkbox]:checked + label::after {
	transform: rotate(315deg);
}

copypet.jp

CSS3などで新たに追加された要素・装飾方法など、日々コードを書いていないと忘れてしまったり、ささっとプロトタイプを作る時などちょっとしたことに時間をかけている暇はない。そんな時に「あ〜、あれストックしときゃよかったなぁ」って困った自分用のストックブログです。カスタマイズなどがしやすいよう、昨今のweb制作に取り入れられる一般的なコードを中心に掲載しています。

More Info

こんな記事はいかがですか?