WithCodeMedia-1-pc
previous arrowprevious arrow
next arrownext arrow

WithCodeMedia-1-sp
previous arrowprevious arrow
next arrownext arrow

CSSマーカー・蛍光ペン下線で文字を強調するコピペ集

生徒

ブログの重要な文に蛍光ペン風のマーカーを引きたいんですが、どうやるのが綺麗ですか?

ペン博士

linear-gradientを背景に使うのが定番だよ!下半分だけ色を塗れば、本物の蛍光ペンっぽくなる。スクロールで引かれる演出も今日は見せるね。

「ブログやLPのテキストで、特に重要な箇所に蛍光ペン風のマーカーを引きたい」「text-decorationのunderlineだと細すぎる、太くしたい」——テキスト強調の手段は複数ありますが、どれをどう使うかで見た目と動作が大きく変わります。

CSSでマーカーを引く方法は主に3つあります。① linear-gradientで背景色を下部だけに引く方法、② text-decoration-lineを使う方法、③ border-bottomを使う方法です。それぞれ複数行対応・アニメーション・装飾の自由度が異なるため、用途に合わせて使い分けることが大切です。

この記事では、実務ですぐ使えるCSSマーカー・蛍光ペン風下線のコードを10種以上、動作するサンプルつきで解説します。SWELLの swl-marker クラスとの関係についても触れます。

  • linear-gradientで蛍光ペン風マーカーを作る基本コード
  • アニメーションでスッと引かれるマーカー演出
  • 複数行に対応させる box-decoration-break の設定
  • text-decoration の太さ・色・波線・オフセット調整
  • border-bottom との違いと使い分け
  • 色バリエーション10種以上のコピペコード
  • SWELLの swl-marker クラスとの関係

目次

3つのアプローチを比較する

マーカーの作り方3種

CSSでテキストに下線・マーカーを引く主な手法を比較します。

手法 複数行対応 アニメーション 装飾の自由度 主な用途
linear-gradient(background) ◎(box-decoration-break必要) ◎(background-sizeで制御) 高(色・高さ・位置自由) 蛍光ペン風マーカー
text-decoration ◎(ネイティブ) △(制限あり) 中(色・太さ・スタイル変更可) 下線・波線・取り消し線
border-bottom △(1行のみ実質的) ◎(widthで制御) 高(色・太さ・スタイル自由) 1行テキストの下線装飾

【基本】linear-gradientで蛍光ペン風マーカーを作る

マーカーの仕組み

background: linear-gradient() を使い、下部だけに色帯を引くのがCSSマーカーの定番手法です。透明(transparent)から色付きへのグラデーションを縦方向に使い、background-sizebackground-position で帯の高さと位置を制御します。

/* 基本の蛍光ペン風マーカー(黄色) */
.marker-yellow {
  background: linear-gradient(transparent 60%, #ffff00 60%);
  padding: 0 2px;
}

/* 使い方:任意の % で開始位置を調整 */
/* 60% から始まれば、下40%に色帯が入る */
/* 50% にすれば文字の中央から下に色帯 */
/* 75% にすれば細い下線的なマーカーになる */
<p>この文章の<span class="marker-yellow">重要な部分</span>にマーカーを引きます。</p>

60% の値を変えることで帯の太さを調整できます。50% にすれば文字の中央から下半分が色帯に、75% にすれば細い下線的なマーカーになります。


色バリエーション10種以上——コピペコード集

【01】黄色マーカー(ハイライト定番色)

.marker-yellow {
  background: linear-gradient(transparent 55%, #ffff4d 55%);
  padding: 0 2px;
}

【02】ピンクマーカー(女性向け・柔らかい強調)

.marker-pink {
  background: linear-gradient(transparent 55%, #ffb3c1 55%);
  padding: 0 2px;
}

/* 濃いピンク(ブランドカラー寄り) */
.marker-hotpink {
  background: linear-gradient(transparent 55%, #EFBDB7 55%);
  padding: 0 2px;
}

【03】水色マーカー(爽やか・情報感)

.marker-blue {
  background: linear-gradient(transparent 55%, #b3e0ff 55%);
  padding: 0 2px;
}

/* ネオンブルー */
.marker-neonblue {
  background: linear-gradient(transparent 55%, #00d4ff 55%);
  padding: 0 2px;
}

【04】緑マーカー(成功・チェック・自然系)

.marker-green {
  background: linear-gradient(transparent 55%, #b3f0c8 55%);
  padding: 0 2px;
}

/* 蛍光グリーン */
.marker-lime {
  background: linear-gradient(transparent 55%, #ccff66 55%);
  padding: 0 2px;
}

【05】オレンジマーカー(注意・警告・元気系)

.marker-orange {
  background: linear-gradient(transparent 55%, #ffd699 55%);
  padding: 0 2px;
}

【06】太いマーカー(文字の中央から)

グラデーションの開始を50%にすると、文字の中央あたりから色帯が入り、太いマーカーになります。

.marker-thick-yellow {
  background: linear-gradient(transparent 45%, rgba(255, 255, 0, 0.6) 45%);
  padding: 0 3px;
}

/* 半透明(文字が透けて見える) */
.marker-semi-pink {
  background: linear-gradient(transparent 50%, rgba(255, 100, 150, 0.35) 50%);
  padding: 0 2px;
}

【07】細い下線的マーカー(アンダーライン感覚)

.marker-thin {
  background: linear-gradient(transparent 80%, #ffcc00 80%);
  padding: 0 2px;
}

/* 極細(最下部だけ) */
.marker-ultra-thin {
  background: linear-gradient(transparent 90%, #ff6666 90%);
  padding: 0 1px;
}

複数行対応——box-decoration-breakの設定

デフォルトでは、span に背景を付けると行の折り返し部分で背景が途切れることがあります。box-decoration-break: clone を使うと、各行に独立して背景・padding が適用されます。

/* 複数行対応のマーカー */
.marker-multiline {
  background: linear-gradient(transparent 55%, #ffff4d 55%);
  padding: 0 4px;
  /* 各行に独立してスタイルを適用 */
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
  line-height: 1.8;
}

/* 複数行対応・ピンク版 */
.marker-multiline-pink {
  background: linear-gradient(transparent 55%, #EFBDB7 55%);
  padding: 0 4px;
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
}

/* 左右にpadding大きめ(重なりを防ぐ) */
.marker-multiline-spacious {
  background: linear-gradient(transparent 60%, rgba(255, 255, 0, 0.7) 60%);
  padding: 2px 6px;
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
}
<p>
  <span class="marker-multiline">
    このように長いテキストが複数行にわたる場合でも、
    box-decoration-break: clone を指定することで
    各行にマーカーが連続して引かれます。
  </span>
</p>

アニメーションで「スッと引かれる」マーカー演出

スクロールで画面内に入ったとき、またはホバー時にマーカーがスッと引かれるアニメーションは、LPや訴求コンテンツで非常に効果的です。background-size0% 40% から 100% 40% にアニメーションさせることで実現します。

/* ホバー時にマーカーが引かれるアニメーション */
.marker-animate {
  background: linear-gradient(#ffff4d, #ffff4d) no-repeat;
  background-size: 0% 40%;
  background-position: 0 85%;
  transition: background-size 0.4s ease;
  padding: 0 2px;
}

.marker-animate:hover {
  background-size: 100% 40%;
}

/* ピンク版アニメーション */
.marker-animate-pink {
  background: linear-gradient(#EFBDB7, #EFBDB7) no-repeat;
  background-size: 0% 40%;
  background-position: 0 90%;
  transition: background-size 0.5s ease;
}

.marker-animate-pink:hover {
  background-size: 100% 40%;
}

/* 右から左へ引かれるバージョン */
.marker-animate-rtl {
  background: linear-gradient(#b3e0ff, #b3e0ff) no-repeat;
  background-size: 0% 40%;
  background-position: 100% 85%;
  transition: background-size 0.4s ease;
}

.marker-animate-rtl:hover {
  background-size: 100% 40%;
}

スクロール連動でアニメーションを起動したい場合は、Intersection Observer APIを使ってクラスを付与する方法が使えます。

/* スクロールで表示されたときにアニメーション開始 */
.marker-scroll {
  background: linear-gradient(#ffff4d, #ffff4d) no-repeat;
  background-size: 0% 40%;
  background-position: 0 85%;
  transition: background-size 0.6s ease 0.2s;
  padding: 0 2px;
}

/* JavaScriptでこのクラスを付与する */
.marker-scroll.is-visible {
  background-size: 100% 40%;
}
<!-- JavaScript(Intersection Observer)でクラスを付与 -->
<script>
const markers = document.querySelectorAll('.marker-scroll');
const observer = new IntersectionObserver((entries) => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      entry.target.classList.add('is-visible');
    }
  });
}, { threshold: 0.5 });

markers.forEach(el => observer.observe(el));
</script>

text-decorationを使った下線スタイル集

CSS3以降、text-decoration は大幅に強化されました。色・太さ・スタイル(波線・点線・二重線)・オフセット(文字と下線の距離)を個別に指定できます。

text-decorationの各プロパティ

/* text-decorationの個別指定 */
.underline-custom {
  text-decoration-line: underline;       /* 下線の種類:underline / overline / line-through */
  text-decoration-color: #d16176;        /* 下線の色 */
  text-decoration-thickness: 3px;        /* 下線の太さ(CSS4) */
  text-decoration-style: solid;          /* 線のスタイル:solid / dashed / dotted / double / wavy */
  text-underline-offset: 4px;            /* 文字と下線の距離(CSS4) */
}

/* 一括指定版 */
.underline-shorthand {
  text-decoration: underline 3px solid #d16176;
}

/* 波線(wavy)下線 */
.underline-wavy {
  text-decoration: underline wavy #ff6b6b;
  text-decoration-thickness: 2px;
  text-underline-offset: 4px;
}

/* 点線(dotted)下線 */
.underline-dotted {
  text-decoration: underline dotted #4a90d9;
  text-decoration-thickness: 2px;
  text-underline-offset: 3px;
}

/* 二重線(double)下線 */
.underline-double {
  text-decoration: underline double #333;
  text-underline-offset: 4px;
}

/* 太い単色下線 */
.underline-thick {
  text-decoration: underline solid #4a90d9;
  text-decoration-thickness: 4px;
  text-underline-offset: 5px;
}

text-underline-offsetで文字との間隔を調整

text-underline-offset は文字ベースラインと下線の距離を調整するプロパティです。デフォルトでは文字に近すぎることがあるため、3px〜6px 程度に設定すると読みやすくなります。

/* 間隔バリエーション */
.offset-tight {
  text-decoration: underline 2px solid #333;
  text-underline-offset: 1px; /* 文字に近い */
}

.offset-normal {
  text-decoration: underline 2px solid #333;
  text-underline-offset: 4px; /* 標準的な距離 */
}

.offset-loose {
  text-decoration: underline 2px solid #333;
  text-underline-offset: 8px; /* 文字から離れた下線 */
}

border-bottomとの違いと使い分け

gradient と border-bottom

border-bottom で下線を作る方法も広く使われていますが、text-decoration と比較すると動作に違いがあります。

比較項目 text-decoration border-bottom
複数行対応 ◎(自動的に各行に適用) △(ブロック下端にのみ付く)
文字との距離調整 ◎(text-underline-offset) △(padding-bottomで代用)
線のスタイル ○(solid/wavy/dotted/dashed/double) ○(solid/dashed/dotted/double)
アニメーション △(widthアニメが使いにくい) ◎(widthで伸縮しやすい)
線の色 ◎(色を自由に) ◎(色を自由に)
主な用途 インライン強調・複数行 1行テキストのホバー演出
/* border-bottomを使った下線(1行向き) */
.border-underline {
  border-bottom: 3px solid #d16176;
  padding-bottom: 3px;
  display: inline; /* インライン要素として使う */
}

/* border-bottomを使ったホバーアニメーション */
.border-hover {
  position: relative;
  padding-bottom: 4px;
}

.border-hover::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  width: 0;
  height: 2px;
  background: #d16176;
  transition: width 0.3s ease;
}

.border-hover:hover::after {
  width: 100%;
}

色バリエーション追加——落ち着いた系・ネオン系

蛍光ペン的な鮮やかな色だけでなく、落ち着いた淡い色やネオン系の色も使えます。デザインのトーンに合わせて選びましょう。

/* 落ち着いた系(パステル・淡い) */
.marker-lavender {
  background: linear-gradient(transparent 55%, #e8d5ff 55%);
}

.marker-mint {
  background: linear-gradient(transparent 55%, #c8f7e5 55%);
}

.marker-peach {
  background: linear-gradient(transparent 55%, #ffd5b8 55%);
}

.marker-ivory {
  background: linear-gradient(transparent 55%, #fffde7 55%);
}

/* ネオン系(インパクト重視) */
.marker-neon-yellow {
  background: linear-gradient(transparent 55%, #ffff00 55%);
}

.marker-neon-pink {
  background: linear-gradient(transparent 55%, #ff69b4 55%);
}

.marker-neon-green {
  background: linear-gradient(transparent 55%, #39ff14 55%);
  color: #111; /* 蛍光色は文字を暗くすると読みやすい */
}

.marker-neon-cyan {
  background: linear-gradient(transparent 55%, #00ffff 55%);
  color: #111;
}

/* ダーク背景向け(明るい色のマーカー) */
.marker-dark-bg {
  background: linear-gradient(transparent 55%, rgba(255, 255, 100, 0.4) 55%);
  color: #fff;
}

SWELLの swl-marker クラスとの関係

SWELLテーマには、ブロックエディタの「マーカー」装飾として swl-marker クラスが用意されています。エディタのツールバーからワンクリックで適用でき、カラーバリエーションも選択できます。

SWELLの swl-marker は内部的に linear-gradient で実装されています。そのため、子テーマで .swl-marker.mark_yellow.mark_pink などのクラスに追加CSSを書けば、SWELLのマーカー色・太さをカスタマイズできます。

/* SWELLの swl-marker をカスタマイズ(子テーマ style.css へ) */

/* 黄色マーカーの位置・太さを変更 */
.swl-marker.mark_yellow {
  background: linear-gradient(transparent 50%, rgba(255, 255, 0, 0.6) 50%) !important;
}

/* ピンクマーカーをブランドカラーに合わせる */
.swl-marker.mark_pink {
  background: linear-gradient(transparent 55%, #EFBDB7 55%) !important;
}

/* 新しいカラーを追加 */
.swl-marker.mark_green {
  background: linear-gradient(transparent 55%, #b3f0c8 55%);
}

/* SWELLのmark_yellowをアニメーション対応にする場合 */
@media (prefers-reduced-motion: no-preference) {
  .swl-marker.mark_yellow {
    background: linear-gradient(#ffff4d, #ffff4d) no-repeat;
    background-size: 0% 40%;
    background-position: 0 90%;
    transition: background-size 0.4s ease;
  }
  .swl-marker.mark_yellow.is-visible {
    background-size: 100% 40%;
  }
}

ただし、SWELLのアップデートでクラス名やスタイルが変更される可能性があるため、テーマ更新後は動作確認することをおすすめします。


アクセシビリティの注意点

配慮ポイント

マーカーや強調下線を使う際は、視覚だけに依存しない設計を心がけます。

  • コントラスト比:背景色(マーカー色)と文字色のコントラストがWCAG AA基準(4.5:1以上)を満たしているか確認する
  • マーカー色だけで意味を伝えない:色覚多様性に配慮し、テキスト自体でも重要性が伝わるようにする(例:「重要:」という前置き)
  • prefers-reduced-motionへの配慮:アニメーションマーカーは動きを減らす設定(prefers-reduced-motion)のユーザーには非表示にする
/* アクセシビリティ対応:アニメーションを無効化 */
@media (prefers-reduced-motion: reduce) {
  .marker-animate,
  .marker-animate-pink,
  .marker-animate-rtl,
  .marker-scroll {
    background-size: 100% 40% !important;
    transition: none !important;
  }
}


まとめ

蛍光ペン風マーカーは、background: linear-gradientで下半分だけ色を塗るのが基本です。ポイントは①背景グラデでマーカーの太さを調整②box-decoration-breakで複数行に対応③スクロール連動はIntersection Observerで演出、の3点。色のバリエーションも多数用意したので、強調したい箇所に合わせて選んでください。

よくある質問(FAQ)

linear-gradientのマーカーが複数行で途中で切れます。

-webkit-box-decoration-break: clone;box-decoration-break: clone; を追加してください。これがないと、インライン要素が折り返す際に背景が最初と最後の行の端を基準に描画されるため、途中の行で背景が見えなくなります。cloneを指定すると各行が独立した箱として扱われ、それぞれに背景が適用されます。

アニメーションマーカーがSafariで動作しません。

-webkit- プレフィックスを付けた -webkit-box-decoration-break: clone を必ず記述してください。また、background-positionの指定が正確かどうか確認してください。background: linear-gradient(#ffff4d, #ffff4d) no-repeat; のように、グラデーションと no-repeat を一括で書くと Safari での互換性が上がります。

SWELLのmark_yellowの色を変えるにはどうすればいいですか?

子テーマの style.css.swl-marker.mark_yellow { background: linear-gradient(...) !important; } と書いて上書きします。SWELLテーマ本体のCSSより子テーマが優先されますが、詳細度が低い場合は !important を使って確実に上書きします。テーマのアップデートで動作が変わる可能性があるため、更新後は確認が必要です。

text-decoration-thicknessはすべてのブラウザで使えますか?

Chrome 89以降、Firefox 70以降、Safari 12.1以降で対応しています。IE11では非対応です。2024年時点でモダンブラウザへの普及率は高く、実務での使用に問題はありません。IE11対応が必要な場合は border-bottom で代替します。

マーカーをテキスト全体に自動で引く方法はありますか?

特定のクラスに対して background: linear-gradient(...) を定義しておき、ブロックエディタのカスタムHTMLやSWELLのマーカーボタンでspanタグを挿入するのが最も実用的です。JavaScriptでキーワードを自動検出してspanを挿入する方法もありますが、誤検知や意図しないラップが起こるリスクがあるため、手動でのマーキングを推奨します。


あわせて読みたい関連記事

CSS・Webデザイン実装の総まとめ

CSSの実装テクニックを「レイアウト・装飾・アニメーション・基礎・トラブル解決」の目的別に探せる総まとめページを用意しています。実装で迷ったときの索引としてどうぞ。

AIスキルで、未来の自分をアップデート!

今なら完全無料でAIを学べる!WithAI

今なら完全無料でAIを学べる!

  • 動画や実践で楽しく学べる:初心者でも安心のカリキュラム
  • スマホ・PCどちらでもOK:好きな時間に学習できる
  • 料金は一切ナシ0円でAIスキルが身につく

目的に合わせて選べる「AI副業」「AI転職」「AI活用」の3コースを用意。副収入・キャリアチェンジ・日常の生産性アップまで、あなたのゴールに合わせてAIを学べます。

会員登録はカンタン30秒で完了します。まずは公式LINEから、無料でAI学習をスタートしましょう!

この記事を書いた人

WithCodeでWeb制作を習得後、フリーランスエンジニアとして活動。HTML/CSS・JavaScript・WordPress案件を中心に年間20件以上の制作実績を持つ。「難しい技術をわかりやすく」をモットーに、初心者〜中級者向けの技術記事を執筆。副業・フリーランス独立を目指す方に向けた情報発信に注力している。

– service –WithGroupの運営サービス

  • WithCode
    - ウィズコード -

    スクール

    「未経験」から
    現場で通用する
    スキルを身に付けよう!

    詳細はこちら
  • WithFree
    - ウィズフリ -

    実案件サポート

    制作会社のサポート下で
    実務経験を積んでいこう!

    詳細はこちら

公式サイト より
今すぐ
無料カウンセリング
予約!

目次