Result
たまに見かけるコンテンツの表示/非表示のトグルです
css
.expand {/*全体*/ |
width: 300px; |
padding:15px 10px; |
max-height: 80px; |
overflow: hidden; |
position: relative; |
border-bottom: 1px solid #aaa; |
transition: .5s; |
} |
.expand::before {/*グラデーション部分*/ |
content: ""; |
position: absolute; |
width: 100%; |
height: 50%; |
bottom: 0; |
background-image: linear-gradient(rgba(255, 255, 255, 0), #ffffff); |
pointer-events: none; |
transition: 1s; |
} |
.contenedor input {/*input要素は隠しておく*/ |
visibility: hidden; |
} |
.contenedor label {/*ボタン部分のスタイル*/ |
position: absolute; |
bottom: -.8em; |
display: block; |
font-size: .9em; |
padding: .20em 10px; |
right: 0; |
background: #aaa; |
box-shadow:-5px 0 white; |
color: white; |
z-index:999; |
cursor: pointer; |
text-transform: uppercase; |
} |
.contenedor label:before {/*閉じている際のボタンのテキスト*/ |
content: "続きを読む"; |
} |
.contenedor input:checked + label:before {/*開いているときは:checked状態なので、その際はボタンテキストを変える*/ |
content: "閉じる" |
} |
input[type=checkbox]:checked ~ .expand { |
max-height: 500px; |
} |
input[type=checkbox]:checked ~ .expand:before { |
opacity: 0 |
} |
html
<div class='contenedor'> |
<input id='leer' type="checkbox"/> |
<label for="leer"></label> |
<div class="expand"> |
<span class='content'>ここにテキスト</span> |
</div> |
</div> |