Result
以前書いたものとは別で、こちらは任意の場所で区切りたいケースの時に。
もっとシンプルな方法で非表示部分が要素に依存しています
多くの場合は動的なコンテンツに対応する必要があるので以前書いた方法で事足りそうです
css
.read-more-state { display: none; } .read-more-target { opacity: 0; max-height: 0; font-size: 0; transition: .15s ease; } .read-more-state:checked ~ .read-more-wrap .read-more-target { opacity: 1; font-size: inherit; max-height: 999em; } .read-more-state ~ .read-more-trigger:before { content: '続きを読む'; } .read-more-state:checked ~ .read-more-trigger:before { content: '閉じる'; } .read-more-trigger { cursor: pointer; display: inline-block; padding: 0 .5em; color: #666; font-size: .9em; line-height: 2; border: 1px solid #ddd; border-radius: .25em; }
html
<div> <input type="checkbox" class="read-more-state" id="post-2" /> <ul class="read-more-wrap"> <li>lorem</li> <li>lorem </li> <li class="read-more-target">lorem </li> <li class="read-more-target">lorem </li> <li class="read-more-target">lorem</li> <li class="read-more-target">lorem</li> <li class="read-more-target">lorem</li> <li class="read-more-target">lorem</li> </ul> <label for="post-2" class="read-more-trigger"></label> </div>
チェックボックスにチェックが入ったらclass=”read-more-target”を表示させてボタンテキストを変更させています
非表示状態のスタイルは別の方法の方が良いかもしれません