← 動的パーツギャラリーへ戻る

パーツ番号 06-09-08 ・ JavaScript使用

続きを読むフェードグラデーション

本文下部をグラデーションで隠し、ボタンで全文表示に切り替わります。展開後はスクロールで末尾に達するとフェードが消えます。WordPress記事の続き表示に。クリックで動作します。

scrollclickjsoverlay

プレビュー

ソースコード

HTML

<div class="d06-09-08-wrap">
          <div class="d06-09-08-body">
            <h4>続きを読むと見える本文</h4>
            <p>最初は数行だけ表示され、下側がグラデーションでフェードします。ボタンを押すと全文が読めるようになります。</p>
            <p>全文表示後は内部スクロールで最後まで読み進められ、末尾に到達するとフェードが消えます。</p>
            <p>この演出は要約と全文の間の橋渡しとして、記事の第一印象を軽く保つのに役立ちます。</p>
            <p>読者の興味を引いた上で本文へ誘導できるため、離脱防止にもつながります。</p>
          </div>
          <div class="d06-09-08-fade"></div>
          <button class="d06-09-08-more" type="button">続きを読む <span class="d06-09-08-arrow">▾</span></button>
        </div>

CSS

.prev.d06-09-08{padding:0;display:block}
        .d06-09-08-wrap{position:relative;height:260px}
        .d06-09-08-body{height:132px;overflow:hidden;box-sizing:border-box;padding:16px 18px 0;font-size:12px;line-height:1.8;color:#666c80;transition:height .35s ease}
        .d06-09-08-body.is-open{height:210px;overflow-y:auto;scroll-behavior:smooth}
        .d06-09-08-body h4{margin:0 0 6px;font-size:13px;color:#242a3d}
        .d06-09-08-body p{margin:0 0 12px}
        .d06-09-08-fade{position:absolute;left:0;right:0;bottom:38px;height:60px;
          background:linear-gradient(180deg,rgba(255,255,255,0),#fff 82%);pointer-events:none;transition:opacity .3s}
        .d06-09-08-fade.is-hide{opacity:0}
        .d06-09-08-more{position:absolute;left:50%;bottom:10px;transform:translateX(-50%);font-size:11px;font-weight:700;color:#fff;
          background:linear-gradient(135deg,#5b3df0,#9b5cf6);border:none;border-radius:16px;padding:7px 18px;cursor:pointer;
          display:flex;align-items:center;gap:4px;box-shadow:0 4px 10px rgba(91,61,240,.25)}
        .d06-09-08-arrow{transition:transform .25s}
        .d06-09-08-wrap.is-open .d06-09-08-arrow{transform:rotate(180deg)}

JavaScript

(function(){
        var root=document.getElementById('item-06-09-08');if(!root)return;
        var wrap=root.querySelector('.d06-09-08-wrap');
        var body=root.querySelector('.d06-09-08-body');
        var fade=root.querySelector('.d06-09-08-fade');
        var btn=root.querySelector('.d06-09-08-more');
        var open=false;
        btn.addEventListener('click',function(){
          open=!open;
          wrap.classList.toggle('is-open',open);
          body.classList.toggle('is-open',open);
          btn.firstChild.textContent=open?'閉じる ':'続きを読む ';
          if(!open){fade.classList.remove('is-hide');}
        });
        body.addEventListener('scroll',function(){
          if(!open)return;
          var max=body.scrollHeight-body.clientHeight;
          var nearEnd=max<=0||body.scrollTop>=max-6;
          fade.classList.toggle('is-hide',nearEnd);
        });
      })();

クラス名 .d06-09-08 は本ライブラリ内での識別用です。複数のパーツを同じページで使う場合は、重複しないよう名前を変更してください。