動きのあるマーカーハイライト

スクロールに連動して画面に入るとマーカーハイライトが引かれるアニメーション。
メディアサイトや、記事LPなどで使いやすい。
マーカーアニメーションによって大切なテキストを読ませながらポップな印象を持たせることができる。

HTML

<div class="ugkTxtMarker">
  <p>WEBアニメーションはセンスが大切です。<br>ですが、<span class="js-txtMaker">センスだけで表現をすることはできません。</span></p>
  <p>まずはコーディングの知識を正しく身に着け、<br><span class="js-txtMaker">自分の手足のようにコードを操れる</span>ことが前提条件です。</p>
  <p>その為には何よりもコードを好きになり、<br>書いて書いて<span class="js-txtMaker">書き続けるしかありません。</span></p>
  <p>コーディングで<span class="js-txtMaker">あなたの未来が明るくなりますように。</span></p>
</div>

CSS

.js-txtMaker {
  position: relative;
  display: inline;
  background-image: linear-gradient(transparent 62%, rgba(255, 235, 59, 0.6) 62%);
  background-size: 0% 100%;
  background-repeat: no-repeat;
  background-position: 0 0;
  transition: all ease 2s;
  font-weight: bold;
}
.js-txtMaker.is-on {
  background-size: 100% 100%;
}

/*テストアップのレイアウト用*/
.ugkTxtMarker p {
  line-height: 2;
  margin-top: 4em;
}

JS

(() => {
  const run = () => {
    const els = document.querySelectorAll('.js-txtMaker');
    if (!els.length) return;

    const update = () => {
      const y = window.pageYOffset || document.documentElement.scrollTop;
      const vh = window.innerHeight || document.documentElement.clientHeight;

      els.forEach((el) => {
        //↓要素の20px下が起点(出すタイミングによって数値を変更)
        const top = el.getBoundingClientRect().top + y + 20;
        //↓画面内に入った時アニメーションを毎回発生させる場合↓
        el.classList.toggle('is-on', y >= top - vh);
        //↓アニメーションを初回のみにしたい場合↓
        //if (y >= top - vh) el.classList.add('is-on');
      });
    };

    const onChange = () => requestAnimationFrame(update);

    window.addEventListener('scroll', onChange, { passive: true });
    update();
  };

  document.readyState === 'loading'
    ? document.addEventListener('DOMContentLoaded', run)
    : run();
})();

実際の動き

WEBアニメーションはセンスが大切です。
ですが、センスだけで表現をすることはできません。

まずはコーディングの知識を正しく身に着け、
自分の手足のようにコードを操れることが前提条件です。

その為には何よりもコードを好きになり、
書いて書いて書き続けるしかありません。

コーディングであなたの未来が明るくなりますように。

みんなにもシェアしてあげて!

この記事を書いた人

WEBサイトで使える“動くUI”を、コピペで実装可能にし、どこでも誰でも使えるコードに特化して発信しているフロントエンドエンジニア。
中学生で初めてコードに出会い初めてコーディングを知る。
その後、WEB制作会社のフロントエンドエンジニアとしてキャリアをスタートし、フリーランスを経て、現在はWEB制作会社の代表取締役。
コーディングによって人生を創り上げてきたからこそ、コードを通して誰かの役に立てたらという想いで、これまでの知識と経験を総動員したコードを公開中。

コメント

コメントする