



WithCodeMedia-1-pc
WithCodeMedia-2-pc
WithCodeMedia-3-pc
WithCodeMedia-4-pc




WithCodeMedia-1-sp
WithCodeMedia-2-sp
WithCodeMedia-3-sp
WithCodeMedia-4-sp









生徒ブログの重要な文に蛍光ペン風のマーカーを引きたいんですが、どうやるのが綺麗ですか?
ペン博士linear-gradientを背景に使うのが定番だよ!下半分だけ色を塗れば、本物の蛍光ペンっぽくなる。スクロールで引かれる演出も今日は見せるね。
「ブログやLPのテキストで、特に重要な箇所に蛍光ペン風のマーカーを引きたい」「text-decorationのunderlineだと細すぎる、太くしたい」——テキスト強調の手段は複数ありますが、どれをどう使うかで見た目と動作が大きく変わります。
CSSでマーカーを引く方法は主に3つあります。① linear-gradientで背景色を下部だけに引く方法、② text-decoration-lineを使う方法、③ border-bottomを使う方法です。それぞれ複数行対応・アニメーション・装飾の自由度が異なるため、用途に合わせて使い分けることが大切です。
この記事では、実務ですぐ使えるCSSマーカー・蛍光ペン風下線のコードを10種以上、動作するサンプルつきで解説します。SWELLの swl-marker クラスとの関係についても触れます。

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

background: linear-gradient() を使い、下部だけに色帯を引くのがCSSマーカーの定番手法です。透明(transparent)から色付きへのグラデーションを縦方向に使い、background-size と background-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% にすれば細い下線的なマーカーになります。
.marker-yellow {
background: linear-gradient(transparent 55%, #ffff4d 55%);
padding: 0 2px;
}
.marker-pink {
background: linear-gradient(transparent 55%, #ffb3c1 55%);
padding: 0 2px;
}
/* 濃いピンク(ブランドカラー寄り) */
.marker-hotpink {
background: linear-gradient(transparent 55%, #EFBDB7 55%);
padding: 0 2px;
}
.marker-blue {
background: linear-gradient(transparent 55%, #b3e0ff 55%);
padding: 0 2px;
}
/* ネオンブルー */
.marker-neonblue {
background: linear-gradient(transparent 55%, #00d4ff 55%);
padding: 0 2px;
}
.marker-green {
background: linear-gradient(transparent 55%, #b3f0c8 55%);
padding: 0 2px;
}
/* 蛍光グリーン */
.marker-lime {
background: linear-gradient(transparent 55%, #ccff66 55%);
padding: 0 2px;
}
.marker-orange {
background: linear-gradient(transparent 55%, #ffd699 55%);
padding: 0 2px;
}
グラデーションの開始を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;
}
.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;
}
デフォルトでは、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-size を 0% 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>
CSS3以降、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 は文字ベースラインと下線の距離を調整するプロパティです。デフォルトでは文字に近すぎることがあるため、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 で下線を作る方法も広く使われていますが、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 は内部的に 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のアップデートでクラス名やスタイルが変更される可能性があるため、テーマ更新後は動作確認することをおすすめします。

マーカーや強調下線を使う際は、視覚だけに依存しない設計を心がけます。
/* アクセシビリティ対応:アニメーションを無効化 */
@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点。色のバリエーションも多数用意したので、強調したい箇所に合わせて選んでください。
-webkit-box-decoration-break: clone; と box-decoration-break: clone; を追加してください。これがないと、インライン要素が折り返す際に背景が最初と最後の行の端を基準に描画されるため、途中の行で背景が見えなくなります。cloneを指定すると各行が独立した箱として扱われ、それぞれに背景が適用されます。
-webkit- プレフィックスを付けた -webkit-box-decoration-break: clone を必ず記述してください。また、background-positionの指定が正確かどうか確認してください。background: linear-gradient(#ffff4d, #ffff4d) no-repeat; のように、グラデーションと no-repeat を一括で書くと Safari での互換性が上がります。
子テーマの style.css に .swl-marker.mark_yellow { background: linear-gradient(...) !important; } と書いて上書きします。SWELLテーマ本体のCSSより子テーマが優先されますが、詳細度が低い場合は !important を使って確実に上書きします。テーマのアップデートで動作が変わる可能性があるため、更新後は確認が必要です。
Chrome 89以降、Firefox 70以降、Safari 12.1以降で対応しています。IE11では非対応です。2024年時点でモダンブラウザへの普及率は高く、実務での使用に問題はありません。IE11対応が必要な場合は border-bottom で代替します。
特定のクラスに対して background: linear-gradient(...) を定義しておき、ブロックエディタのカスタムHTMLやSWELLのマーカーボタンでspanタグを挿入するのが最も実用的です。JavaScriptでキーワードを自動検出してspanを挿入する方法もありますが、誤検知や意図しないラップが起こるリスクがあるため、手動でのマーキングを推奨します。
CSSの実装テクニックを「レイアウト・装飾・アニメーション・基礎・トラブル解決」の目的別に探せる総まとめページを用意しています。実装で迷ったときの索引としてどうぞ。

目的に合わせて選べる「AI副業」「AI転職」「AI活用」の3コースを用意。副収入・キャリアチェンジ・日常の生産性アップまで、あなたのゴールに合わせてAIを学べます。
会員登録はカンタン30秒で完了します。まずは公式LINEから、無料でAI学習をスタートしましょう!
WithCodeでWeb制作を習得後、フリーランスエンジニアとして活動。HTML/CSS・JavaScript・WordPress案件を中心に年間20件以上の制作実績を持つ。「難しい技術をわかりやすく」をモットーに、初心者〜中級者向けの技術記事を執筆。副業・フリーランス独立を目指す方に向けた情報発信に注力している。
公式サイト より
今すぐ
無料カウンセリング
を予約!