勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

jQueryとCSSで指定したテキストに対してラインマーカーを引く方法

  jQuery JavaScript CSS

サイト内で強調したいテキストに対して蛍光ペンでマーカーを引くようなアニメーションを実装しているサイトを見かけることがある。また、ページスクロールし当該テキスト部分が表示された時点でマーカーが引かれるという仕様。調べてみたところjQueryとCSSで実装できた。以下に実装方法をメモ。

 

サンプル

https://taitan916.info/sample/text_marker/

 

ソースコード

<!DOCTYPE html>
<html lang="ja">
<head>
<title>jQueryとCSSで指定したテキストに対してラインマーカーを引くサンプル</title>
<style>
.marker{
    display: inline;
    position: relative;
    background-image: linear-gradient(90deg, #ff6, #ff6);
    background-repeat: no-repeat;
    background-position: bottom left;
    background-size: 0 40%;
    transition: all 1s ease-in-out;
}
.marker.active{
    background-size: 100% 40%;
}
.mb-200{
    margin-bottom:200px;
}
</style>
</head>
<body>

    <div class="mb-200">
        テキスト
    </div>
    <div class="mb-200">
        テキスト
    </div>
    <div class="mb-200">
        テキスト
    </div>

    <div class="mb-200">
        <span class="marker">
            マーカーテキストマーカーテキストマーカーテキストマーカーテキストマーカーテキストマーカーテキスト
        </span>
    </div>

    <div class="mb-200">
        テキスト
    </div>

    <div class="mb-200">
        <span class="marker">
            マーカーテキストマーカーテキストマーカーテキストマーカーテキストマーカーテキストマーカーテキスト
        </span>
    </div>

    <div class="mb-200">
        テキスト
    </div>

    <script type="text/javascript" src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
    <script>
    $(window).scroll(function (){
        $(`.marker`).each(function(){
            if( $(window).scrollTop() > $(this).offset().top - $(window).height() ){
                $(this).addClass(`active`);
            }
        });
    });
    </script>
</body>
</html>

マーカーを引きたいテキストを.markerで囲むこと。

 - jQuery JavaScript CSS

  関連記事

ブラウザのSafariのみスクロール関連のイベントが発火しない場合の対応方法

jQueryで一定距離スクロールさせた場合に発火するイベントをプログラムしていた ...

jQuery UIでテキストボックスにサジェスト(入力補助)機能を実装する方法

メールアドレスを入力するためのテキストボックスに文字を入力すると「@yahoo. ...

さくらのレンタルサーバでCookieが正常に保存できない場合の対応方法

さくらインターネットのレンタルサーバでjquery.cookie.jsを用いてC ...

Flashを用いずJavaScriptでコピー&カット機能を実装する方法

以前メモったようなFlashを用いる方法ではなく、WebAPIでコピー& ...

adblock(広告削除)設定している場合はページを表示させない

iPhoneのSleipnirでネットをしていると「広告がブロックされたのでペー ...