JavaScriptの学習 ラインマーカー風に背景色を変更

2022/10/22

JavaScript

目次
JavaScript ラインマーカー 背景色

ブログの背景色がべた塗り過ぎる

ブログを作成する際、文章を強調する目的で背景色を選択する場合があるのですが、その背景色がべた塗り過ぎて、かえって見にくいのではないかと思いました。

そこで、JavaScriptの勉強を兼ねて、ラインマーカー風に背景色を変更することができないか調べてみました。

ブログの背景色の実現方法を調査

そもそも、ブログの背景色はどのように実現されているのでしょうか。

実際に、ブログで文章を選択し、背景色として黄色を設定した際のHTMLの記述は次の通りです。

テストです。
<span style="background-color: #fcff01;">テストです。</span>

選択した文章は、SPANタグでインライン要素としてグループ化され、そのグループの背景色がブログで設定した色に指定されていました。

ラインマーカー風の具体的なイメージ

ラインマーカー風の具体的なイメージを以下に挙げます。

ラインマーカー風 イメージ1

背景色の上部を白色にしたスタイルです。

テストです。
<span style="background: linear-gradient(white 35%, rgb(252, 255, 1) 35%);">テストです。</span>

ラインマーカー風 イメージ2

背景色の上部と下部を白色にしたスタイルです。

テストです。
<span style="background: linear-gradient(white 35%, rgb(252, 255, 1) 35%, rgb(252, 255, 1) 65%, white 65%);">テストです。</span>

アルゴリズム ラインマーカー風に背景色を変更

ラインマーカー風に背景色を変更するJavaScriptのアルゴリズムは、次の通りです。

  1. SPANタグの背景色をJavaScriptで抽出
  2. JavaScriptで背景色をラインマーカー風に加工
  3. JavaScriptで加工した背景色をSPANタグに設定

ただし、この方法では、ブログ内の全てのSPANタグに影響を与えてしまいます。
この点が気になったので、次の制約を設けることにしました。

  • SPANタグに背景色が設定されていない場合は、ラインマーカー風の処理をスキップする
  • SPANタグに特定のクラス(クラス名: IgnoreBGC)が設定されている場合は、ラインマーカー風の処理をスキップする

ソースコード ラインマーカー風に背景色を変更

ラインマーカー風に背景色を変更するJavaScriptのソースコードは、次の通りです。

// SPANタグを抽出
let SpanList = document.body.querySelectorAll('span');

// SPANタグの存在を確認
if (null !== SpanList) {

    // SPANタグの個数だけ繰り返し
    SpanList.forEach(
        function(element) {
            // SPANタグのclass="IgnoreBGC"は処理をスキップ
            // SPANタグの背景色が未設定の場合は処理をスキップ
            if (!element.classList.contains('IgnoreBGC') && '' !== element.style.backgroundColor) {
                // SPANタグの背景色を抽出
                const LocalColor = element.style.backgroundColor;

                //
                // SPANタグの背景をラインマーカー風に変更
                //
                if (false) {
                    // Top → Bottomで、上35%を白、35~100%をLocalColorに塗りつぶし
                    element.style.background='linear-gradient(to bottom, white 35%, ' + LocalColor + ' 35%)';
                } else {
                    // Top → Bottomで、上35%を白、35~65%をLocalColor, 下35%を白に塗りつぶし
                    element.style.background='linear-gradient(to bottom, white 35%, ' + LocalColor + ' 35%, ' + LocalColor + ' 65%, white 65%)';
                }
            }
        }
    );
}

JavaScriptソースコードのポイントを以下に記載します。

行番号2では、ブログ内のSPANタグを抽出しています。

行番号5では、ブログ内のSPANタグの存在を確認しています。

行番号8~28では、抽出されたSPANタグの数だけ、ラインマーカー風に背景色を変更する処理を行っています。

行番号12では、SPANタグのクラスがIgnoreBGCであるか、また、SPANタグの背景色が設定されているかを確認しています。

行番号14では、SPANタグに設定されている背景色を抽出しています。

行番号19では、2種類のラインマーカー風処理を選択する処理を行っています。
ソースコードでは、行番号21の処理(ラインマーカー風 イメージ1)は実行されず、行番号24の処理(ラインマーカー風 イメージ2)が実行されます。
行番号21の処理(ラインマーカー風 イメージ1)を実行する場合は、行番号19のfalseをtrueに変更すれば良いです。

行番号21は、ラインマーカー風 イメージ1の処理を行うJavaScriptソースコードです。
行の上辺から底辺の方向に、上辺から35%までを白色、35~100%をSPANタグの背景色で塗りつぶします。

行番号24は、ラインマーカー風 イメージ2の処理を行うJavaScriptソースコードです。
行の上辺から底辺の方向に、上辺から35%までを白色、35~65%をSPANタグの背景色、65~100%を白色で塗りつぶします。

JavaScriptをブログに追加する方法

作成したJavaScriptソースコードは、ブログのテーマに埋め込みます。

テーマ >> カスタマイズ で「HTMLを編集」を選択

</body>の直前に下記に従ってJavaScriptソースコードを追加
<script>
  //<![CDATA[
    JavaScriptソースコード
  //]]>
</script>

自己紹介

自分の写真
株式トレード歴は15年以上、専業株式トレーダーになって5年以上、今も現役で活動中

Blogger. | Designed by QooQ.