Parts
「accordion__content」というクラス名の中に隠す内容を入れる。
「label」のfor名と「input」のid名は項目ごとにかぶらない名前を付ける。
<div class="accordionBox--type04">
<div class="accordion">
<input type="checkbox" id="accordion--type04__label001" />
<label for="accordion--type04__label001">
<div class="accordion__button">
<p>
<span>内容を表示する</span>
<span>内容を閉じる</span>
</p>
<div class="accordion__icon">
<div></div>
<div></div>
<!-- /.accordion__icon --></div>
<!-- /.accordion__button --></div>
</label>
<div class="accordion__content">
項目タイトルの閉じられている内容です。
<!-- /.accordion__content --></div>
<!-- /.accordion --></div>
<!--//.accordionBox--></div>
.accordionBox--type04 {
overflow: hidden;
}
.accordionBox--type04 .accordion {
position: relative;
display: block;
padding-bottom: 3em;
text-align: center;
}
.accordionBox--type04 .accordion > label {
width: 100%;
display: block;
position: absolute;
bottom: 0;
left: 0;
}
.accordionBox--type04 .accordion > label > .accordion__button {
display: inline-block;
padding: 0.5em 3em 0.5em 1.5em;
background: #000;
cursor: pointer;
-webkit-transition: 0.3s all ease;
transition: 0.3s all ease;
border-radius: 3.7em;
position: relative;
}
.accordionBox--type04 .accordion > label > .accordion__button > p {
margin: 0;
position: relative;
}
.accordionBox--type04 .accordion > label > .accordion__button > p > span {
display: block;
color: #fff;
text-align: center;
position: relative;
}
.accordionBox--type04 .accordion > label > .accordion__button > p > span:nth-child(2) {
width: 100%;
position: absolute;
top: 0;
left: 0;
opacity: 0;
-webkit-transition: 0.3s all ease;
transition: 0.3s all ease;
}
.accordionBox--type04 .accordion > label > .accordion__button .accordion__icon {
width: 1em;
height: 2px;
display: block;
position: absolute;
right: 1em;
top: 50%;
margin-top: -1px;
}
.accordionBox--type04 .accordion > label > .accordion__button .accordion__icon > div {
background: #fff;
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
-webkit-transition: 0.4s ease;
transition: 0.4s ease;
}
.accordionBox--type04 .accordion > label > .accordion__button .accordion__icon > div:last-child {
-webkit-transform: rotate(90deg);
transform: rotate(90deg);
}
.accordionBox--type04 .accordion > label > .accordion__button:hover {
background: #666;
}
.accordionBox--type04 .accordion > input[type=checkbox] {
display: none;
}
.accordionBox--type04 .accordion > input[type=checkbox]:checked + label + .accordion__content {
height: auto;
-webkit-mask-image: -webkit-gradient(linear, left bottom, left top, color-stop(10%, rgb(0, 0, 0)), to(rgb(0, 0, 0)));
-webkit-mask-image: -webkit-linear-gradient(bottom, rgb(0, 0, 0) 10%, rgb(0, 0, 0));
mask-image: -webkit-gradient(linear, left bottom, left top, color-stop(10%, rgb(0, 0, 0)), to(rgb(0, 0, 0)));
mask-image: linear-gradient(0deg, rgb(0, 0, 0) 10%, rgb(0, 0, 0));
}
.accordionBox--type04 .accordion > input[type=checkbox]:checked + label > .accordion__button {
background: #999;
color: #fff;
}
.accordionBox--type04 .accordion > input[type=checkbox]:checked + label > .accordion__button > p > span:nth-child(1) {
opacity: 0;
}
.accordionBox--type04 .accordion > input[type=checkbox]:checked + label > .accordion__button > p > span:nth-child(2) {
opacity: 1;
}
.accordionBox--type04 .accordion > input[type=checkbox]:checked + label > .accordion__button:hover {
background: #666;
color: #000;
}
.accordionBox--type04 .accordion > input[type=checkbox]:checked + label .accordion__icon div:last-child {
-webkit-transform: none;
transform: none;
}
.accordionBox--type04 .accordion > .accordion__content {
text-align: left;
height: 8em;
padding: 0.5em 1em;
overflow: hidden;
-webkit-transition: 0.5s;
transition: 0.5s;
display: block;
-webkit-mask-image: -webkit-gradient(linear, left bottom, left top, color-stop(10%, rgba(0, 0, 0, 0)), to(rgb(0, 0, 0)));
-webkit-mask-image: -webkit-linear-gradient(bottom, rgba(0, 0, 0, 0) 10%, rgb(0, 0, 0));
mask-image: -webkit-gradient(linear, left bottom, left top, color-stop(10%, rgba(0, 0, 0, 0)), to(rgb(0, 0, 0)));
mask-image: linear-gradient(0deg, rgba(0, 0, 0, 0) 10%, rgb(0, 0, 0));
}
.accordionBox--type04 {
overflow: hidden;
.accordion {
position: relative;
display: block;
padding-bottom: 3em;
text-align: center;
&> label {
width: 100%;
display: block;
position: absolute;
bottom: 0;
left: 0;
&> .accordion__button {
display: inline-block;
padding: 0.5em 3em 0.5em 1.5em;
background: #000;
cursor: pointer;
transition: 0.3s all ease;
border-radius: 3.7em;
position: relative;
&> p {
margin: 0;
position: relative;
&> span {
display: block;
color: #fff;
text-align: center;
position: relative;
&:nth-child(2) {
width: 100%;
position: absolute;
top: 0;
left: 0;
opacity: 0;
transition: 0.3s all ease;
}
}
}
.accordion__icon {
width: 1em;
height: 2px;
display: block;
position: absolute;
right: 1em;
top: 50%;
margin-top: -1px;
&> div {
background: #fff;
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
transition: 0.4s ease;
&:last-child {
transform: rotate(90deg);
}
}
}
&:hover{
background: #666;
}
}
}
&> input[type="checkbox"] {
display: none;
&:checked{
&+ label {
&+ .accordion__content {
height: auto;
mask-image: linear-gradient(0deg, rgba(0, 0, 0, 1) 10%, rgba(0, 0, 0, 1));
}
&> .accordion__button {
background: #999;
color: #fff;
&> p > span{
&:nth-child(1) {
opacity: 0;
}
&:nth-child(2) {
opacity: 1;
}
}
&:hover {
background: #666;
color: #000;
}
}
.accordion__icon div:last-child{
transform: none;
}
}
}
}
&> .accordion__content {
text-align: left;
height: 8em;
padding: 0.5em 1em;
overflow: hidden;
transition: 0.5s;
display: block;
mask-image: linear-gradient(0deg, rgba(0, 0, 0, 0) 10%, rgba(0, 0, 0, 1));
}
}
}