開閉ボタンで表示・非表示をHTMLとCSSで作る方法

HTML・CSS

こんにちは、みったにです。

開閉ボタンで要素を表示したり、非表示にしたりする方法を紹介します。

例えば、こんな感じのボタンです。

ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。
ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。
ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。

開閉ボタンで表示・非表示をHTMLとCSSで作る方法

下記のコードをコピペします。

HTML

<div class="toc_box">
<input id="toc01" type="checkbox"><label for="toc01"></label>
<div class="toc_container">
<!-- ここに書きたいことを入れます -->
</div>
</div>

CSS

.toc_box *, .toc_box *:before, .toc_box *:after {
	-webkit-box-sizing: border-box;
	box-sizing: border-box;
}
.toc_box {
	position: relative;
}
.toc_box label {
	position: absolute;
	z-index: 1;
	bottom: 0;
	left: 0;
	width: 100%;
	height: 140px; 
	cursor: pointer;
	text-align: center;
	/* グラデーション */
	background: linear-gradient(to bottom, rgba(250, 252, 252, 0) 0%, rgba(250, 252, 252, 0.95) 90%);
	margin-bottom:0;
}
.toc_box input:checked + label {
	background: inherit; 
}
.toc_box label:after {
	line-height: 2.5rem;
	position: absolute;
	z-index: 2;
	bottom: 0px;
	left: 50%;
	width: 16rem;
	content: 'READ MORE';
	transform: translate(-50%, 0);
	letter-spacing: 0.05em;
	border: 1px solid #909090;
	color: #7B7B7B;
	background-color: #ffffff;
	padding: 15px 33px 14px; 
}
.toc_box input {
	display: none;
}
.toc_box .toc_container {
	overflow: hidden;
	height: 200px; 
	transition: all 0.5s;
	margin-bottom: 30px;
}
.toc_box input:checked ~ label:after {
	content: 'CLOSE';
}
.toc_box input:checked ~ .toc_container {
	height: auto;
	padding-bottom: 80px; 
  transition: all 0.5s;
}

これで表現できるはずです!

とても簡単ですね(* ‘ー’)ノ