勉強したことのメモ

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

  関連記事

「slick」で作成したスライダー画像にランキングの順位を表示する方法

「slick」で作成したスライダー画像に対して、ランキングの順位を表示したいとい ...

jQueryの日付&時間のピッカー(bootstrap-datetimepicker)について

日付のピッカーはよく見るけど、時間のピッカーはあまり見ないので、普通のセレクトメ ...

formのpasswordとtextをjQueryで切り替える方法

formでtype="password"を指定していると内容を入力した際に「●● ...

jQueryでAjax通信したデータをPHPで受け取り、zip化したファイルをダウンロードさせる方法

jQueryのAjaxで何らかのデータをPHP側に送信し、PHP側で当該データを ...

jQueryでshow/hideよりaddClass/removeClassの方が速い

diaplay:none/blockする際に最近はshow()/hide()を ...