勉強したことのメモ

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

  関連記事

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

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

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

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

「slick」でスライダー中央の下部にのみ指定したコンテンツを表示する方法

「slick」でスライダー画像の下部に何らかのコンテンツ(テキスト・リンク・別画 ...

要素の表示or非表示

今まで要素の表示or非表示をCSSで操作する際、 display:none; / ...

jQueryで指定した要素を簡単にフォーカスするfocusbleの使い方

divやspanなど指定した要素を簡単にフォーカスするjQueryプラグインがあ ...