<div id="sample01"> [ダミーテキスト1]ポイントカードを発行し、商品の購入者に対し、次回以降の買い物の際に支払いの 一部に充当できるポイントを提供する場合は、景品ではなく値引。 </div> <a href="#sample01">続きを表示</a> <a href="#sample02">続きを隠す</a> <span id="sample02"> </span>
#sample01 { width:800px; margin:0 auto; padding:8px 10px 10px; text-align:left; border:1px solid #bbf; color:#666; } #sample01 ~ a { display:none; } #sample01 + a { display:inline; } #sample01:target::after { content:"取引通念上妥当と認められる基準に従い、取引の相手方に対し、支払うべき対価を減額する こと又は割り戻すことは、値引と認められる経済上の利益に該当し、景品表示法上の景品類には該当 しません。"; color:green; } #sample01:target ~ a { display:inline; } #sample01:target + a { color:#aaa; pointer-events: none; }
「id="sample01"」のdiv要素に弟要素であるa要素を2つ続けています。CSSの9行目から14行目で、隣接セレクタと間接セレクタを使い、2つの弟a要素を非表示に、続いて最初のa要素のみを表示させています。 最初のa要素である「続きを表示」をクリックすると、ページ内リンクで、「id="sample01"」のdiv要素に飛びます。すると、:target疑似クラスと:after擬似要素により、続きのテキストを表示(確認用に緑色文字にしています)します。15行目から20行目。 同時に、21行目以降で、:target疑似クラスと隣接セレクタと間接セレクタを使い、9行目からの2つのa要素のスタイルを逆にしています。このとき、2つのa要素を表示させ、最初のa要素のみを非表示にさせようとしましたが、なぜか引きずられて2つとも非表示になってしまいます。そこで、最初のa要素のみを薄消し状態の色で表示したままにしています。 続きのテキストを表示した状態で、「続きを隠す」をクリックすると、「id="sample02"」へ移動するため、:target疑似クラスが聴かなくなり、スタイルが元に戻ります。