CSSの下線は、text-decoration: underline に text-decoration-thickness(太さ)、text-underline-offset(位置)、text-decoration-color(色)を足すと、文字との距離まで細かく調整できます。 以前は border-bottom や背景グラデーションで代用していた調整の多くが、今は下線のプロパティだけで書けます。

この記事では、下線にかかわる全プロパティの値一覧に加えて、border-bottom・linear-gradient・::after を含めた4手法の比較表と、マーカー風・ホバーで伸びる線などのコピペ集を用意しました。コードはすべて Chromium 141(Playwright 1.56)で描画し、線の位置や太さ、折り返したときの本数をスクリーンショットのピクセルから計測しています。

CSSの下線の早見表

やりたいこと 書き方
下線を引く text-decoration: underline;
下線を消す(リンクなど) text-decoration: none;
太さを変える text-decoration-thickness: 3px;(0.1em や from-font も可)
文字から離す・近づける text-underline-offset: 0.25em;(負の値で文字に重ねる)
色を変える text-decoration-color: #e11d48;
線の種類を変える text-decoration-style: wavy;(solid / double / dotted / dashed / wavy)
文字の下にはみ出す部分で線を切らない text-decoration-skip-ink: none;
線を文字の下端より下に置く text-underline-position: under;
まとめて書く text-decoration: underline wavy #e11d48 2px;
マーカー風にする background: linear-gradient(transparent 60%, #fde047 60%);
ホバーで線を伸ばす background-size を 0 2px から 100% 2px へ transition
見出しに全幅の線を引く border-bottom: 2px solid #ccc;
手法 折り返し(複数行) 伸びるアニメ リンク向き ひとこと
text-decoration 各行に引かれる 位置・色・太さの変化のみ 最適 まず選ぶ基本の方法
border-bottom インラインなら各行に引かれる 色の変化のみ 可 見出しなどブロックの幅いっぱいの線に向く
linear-gradient(背景) 各行に引かれる 可(1行目から順に伸びる) 最適 マーカー風と、伸びる線の両方に使える
::after(疑似要素) 1行のみ 可(中央から、左から右へ抜ける等) 短いリンク向き 動きの自由度がいちばん高い

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「CSSで下線の位置・太さ・色を調整|マーカー風コピペ集」

text-decorationの基本とプロパティ一覧

text-decoration は4つのプロパティをまとめて書く一括指定です。位置にかかわる3つは一括指定に含まれず、別に書きます。

プロパティ 役割 主な値 一括指定に含まれるか
text-decoration-line 線の種類(どこに引くか) none / underline / overline / line-through(複数可) 含まれる
text-decoration-style 線の形 solid / double / dotted / dashed / wavy 含まれる
text-decoration-color 線の色 色の値(初期値は文字色) 含まれる
text-decoration-thickness 線の太さ auto / from-font / 長さ / % 含まれる(Safari は 26.2 から)
text-underline-offset 下線の位置を本来の位置からずらす auto / 長さ / % 含まれない
text-underline-position 下線の基準位置 auto / from-font / under / left / right 含まれない
text-decoration-skip-ink 文字と重なる部分で線を切るか auto / none / all 含まれない

一括指定の計算値を確認

一括指定がどう分解されるかを getComputedStyle で確認しました(line、style、color、thickness の順)。

text-decoration:underline                → underline | solid | rgb(0, 0, 0) | auto
text-decoration:underline dotted         → underline | dotted | rgb(0, 0, 0) | auto
text-decoration:underline red            → underline | solid | rgb(255, 0, 0) | auto
text-decoration:underline wavy red 2px   → underline | wavy | rgb(255, 0, 0) | 2px
text-decoration:red underline 0.1em      → underline | solid | rgb(255, 0, 0) | 1.6px
text-decoration:underline 2px            → underline | solid | rgb(0, 0, 0) | 2px
text-decoration:none                     → none | solid | rgb(0, 0, 0) | auto
offset は一括指定でリセットされるか: 5px
thickness を先に書いて一括指定: auto

ここから大事な点が2つわかります。

  • 値の順番は自由。 red underline 0.1em でも正しく解釈されました。
  • 一括指定は、書かなかった項目を初期値に戻す。 text-decoration-thickness: 5px のあとに text-decoration: underline を書くと、太さは auto に戻りました。一方、一括指定に含まれない text-underline-offset は 5px のまま残ります。

太さまで一括指定に書く形は、MDN の対応表では Safari が 26.2 からです。幅広い Safari で確実に効かせたいときは、太さだけ text-decoration-thickness で別に書くと安心です。

/* どのブラウザでも同じ結果になる書き方 */
.link {
  text-decoration: underline #e11d48;
  text-decoration-thickness: 2px;
  text-underline-offset: 0.2em;
}

線の種類(text-decoration-line)

文字を透明にして線だけを描き、ベースライン(英字の下端がそろう線)からの位置を計測しました(font-size: 40px、Noto Sans CJK JP)。

underline            線の本数=1  位置(ベースライン基準)= 2px
overline             線の本数=1  位置(ベースライン基準)= -49px
line-through         線の本数=1  位置(ベースライン基準)= -17px
underline overline   線の本数=2  位置(ベースライン基準)= -49px, 2px
値 引かれる場所 使いどころ
underline 文字の下 リンク、強調
overline 文字の上 見出しの飾り
line-through 文字の中央 取り消し線、変更前の価格や完了したタスク
underline overline 上下の両方 ラベル風の飾り
none 引かない リンクの下線を消す

線の形(text-decoration-style)

太さ 3px で5種類を描き、線の本数と高さ、横方向に何区間に分かれるかを数えました。

solid    線の本数=1  全体の高さ=3px  横方向の区間数=1
double   線の本数=2  全体の高さ=7px  横方向の区間数=1
dotted   線の本数=1  全体の高さ=3px  横方向の区間数=34
dashed   線の本数=1  全体の高さ=3px  横方向の区間数=23
wavy     線の本数=1  全体の高さ=9px  横方向の区間数=13
値 見た目 計測結果からわかること
solid 1本の実線 指定どおり 3px
double 2本線 3px の線が2本で、すき間を含めて高さ 7px
dotted 点線 5文字ぶんの幅に点が34個
dashed 破線 同じ幅に23区間。点線より1区間が長い
wavy 波線 高さが 9px に広がる。行間に余裕があると収まりがよい

wavy と double は高さが増えるので、行間(line-height)が詰まっていると次の行に近づきます。波線や2本線を使う段落は line-height: 1.8 前後にしておくと読みやすくなります。

下線の太さを変える(text-decoration-thickness)

値 意味
auto ブラウザが決める(初期値)
from-font フォントが持っている推奨の太さを使う
長さ(2px、0.1em) 指定した太さ。em は文字サイズに比例する
% 文字サイズ(1em)に対する割合

font-size: 40px で計測した結果です(位置は線の上端)。

指定なし(auto)                          線の上端=ベースライン+2px  太さ=4px
text-decoration-thickness:1px           線の上端=ベースライン+1px  太さ=1px
text-decoration-thickness:4px           線の上端=ベースライン+2px  太さ=4px
text-decoration-thickness:0.1em         線の上端=ベースライン+2px  太さ=4px
text-decoration-thickness:10%           線の上端=ベースライン+2px  太さ=4px
text-decoration-thickness:from-font     線の上端=ベースライン+1px  太さ=2px
  • auto は 40px の文字で 4px、つまり文字サイズの1割ほどでした。大きな見出しでは下線もかなり太くなります。
  • 0.1em と 10% は同じ結果。 文字サイズが変わっても比率を保ちたいなら em か %、どの文字サイズでも一定にしたいなら px を選びます。
  • from-font はフォント次第。 このフォントでは 2px でした。フォントに情報がない場合は auto と同じ扱いになります。

% 指定は MDN の対応表で Safari 17.4 からなので、迷ったら em が広く使えます。

下線の位置を調整する(text-underline-offset / text-underline-position)

位置を決めるプロパティは2つあり、役割がちがいます。

プロパティ 役割 値
text-underline-position 基準位置を選ぶ auto(ベースライン付近)/ from-font(フォントの推奨位置)/ under(文字の下端より下)/ 縦書き用の left・right
text-underline-offset 基準位置からさらにずらす auto / 長さ / %。正の値で下へ、負の値で上へ

太さ 4px の線で位置を計測しました。

thickness:4px + text-underline-offset:0        線の上端=ベースライン+0px  太さ=4px
thickness:4px + text-underline-offset:4px      線の上端=ベースライン+4px  太さ=4px
thickness:4px + text-underline-offset:0.25em   線の上端=ベースライン+10px  太さ=4px
thickness:4px + text-underline-offset:-0.2em   線の上端=ベースライン-8px  太さ=4px
thickness:4px + text-underline-position:under  線の上端=ベースライン+5px  太さ=4px
thickness:4px + position:under + offset:4px    線の上端=ベースライン+9px  太さ=4px
thickness:4px + position:from-font             線の上端=ベースライン+5px  太さ=4px
  • text-underline-offset の長さは、ベースラインから線の上端までの距離にそのまま反映される。 4px なら +4px、0.25em(40px の文字で 10px)なら +10px でした。
  • 負の値で文字に重なる。 -0.2em で線がベースラインより 8px 上に来ます。あとで紹介する「下線だけで作るマーカー」はこの性質を使います。
  • under は「g」や「y」の下にはみ出す部分を避けた位置まで下がり、offset と足し合わせられます(+5px に 4px を足して +9px)。

日本語の文章では text-underline-offset: 0.2em から 0.3em くらいにすると、文字と線の間にほどよいすき間ができます。em で書いておけば、見出しでも本文でも同じ比率になります。

text-underline-offset は下線専用で、overline や line-through の位置は変わりません。% 指定は Safari 18.2 からです。

文字と重なる部分の扱い(text-decoration-skip-ink)

欧文の「g」「j」「p」「q」「y」のように下へはみ出す文字では、ブラウザが下線を自動で切って読みやすくします。この挙動を決めるのが text-decoration-skip-ink です。

gjpqy    skip-ink:auto    区間数=4 computed=auto
gjpqy    skip-ink:none    区間数=1 computed=none
gjpqy    skip-ink:all     区間数=4 computed=auto
下線を引く  skip-ink:auto    区間数=1 computed=auto
下線を引く  skip-ink:none    区間数=1 computed=none
下線を引く  skip-ink:all     区間数=1 computed=auto
値 挙動 計測結果
auto(初期値) 欧文のはみ出し部分で線を切る 「gjpqy」で線が4区間に分かれた。日本語は切れず1本
none 切らずに1本で引く どちらも1本
all 日本語などの文字でも重なる部分を切る Chromium 141 では計算値が auto になり、未対応だった

all は MDN の対応表で Chrome 148、Firefox 75、Safari 15.4 からです。手元の Chromium 141 では無効な値として扱われたため、all を指定した場合の描画は確認できていません。

太い線や、文字に重ねるマーカー風の線では none を指定すると、途中で途切れず帯のようにつながります。

4つの手法を比べる:text-decoration・border-bottom・linear-gradient・::after

下線を引く方法は text-decoration 以外にも3つあります。幅 200px の段落の途中に長い文を置き、3行に折り返したときに線が何本引かれるかを計測しました。

## 4手法:200px幅で3行に折り返したときの線(赤い帯の本数と各幅)
text-decoration                              行ボックス数=3  線の本数=3  各線の幅(px)= 178,200,40
border-bottom(inline)                        行ボックス数=3  線の本数=3  各線の幅(px)= 178,200,40
border-bottom(inline-block)                  行ボックス数=1  線の本数=1  各線の幅(px)= 200
linear-gradient(inline)                      行ボックス数=3  線の本数=3  各線の幅(px)= 178,200,40
linear-gradient + box-decoration-break:clone 行ボックス数=3  線の本数=3  各線の幅(px)= 178,200,40
::after(position:absolute)                   行ボックス数=3  線の本数=1  各線の幅(px)= 20
::after(inline-block の親)                     行ボックス数=1  線の本数=1  各線の幅(px)= 200

インライン要素のままなら、text-decoration・border-bottom・背景グラデーションはどれも3行すべてに線が引かれました。 ::after を position: absolute で置く方法は、折り返すと線が1本だけ(幅 20px)になり、文全体には引かれません。display: inline-block にすると1つの箱になるので、線は箱の下に1本だけです。

比べる点 text-decoration border-bottom linear-gradient ::after
折り返したとき 各行に引かれる インラインなら各行。inline-block だと最後に1本 各行に引かれる 1行のみ
位置の調整 text-underline-offset padding-bottom background-position と background-size bottom
太さ・色 自由 自由 自由(グラデーションの線も可) 自由
線の形 実線・2本線・点線・破線・波線 実線・2本線・点線・破線など 自作(ストライプ等) 自作
文字のはみ出しで切れる 切れる(skip-ink で変更可) 切れない 切れない 切れない
線が伸びるアニメ 不可(位置・色・太さは可) 不可 可 可
行の高さへの影響 なし 枠線ぶん下に広がる なし なし
リンクとの相性 最適。標準の下線そのもの 可 最適 1行で収まる短いリンク向き
向いている用途 本文中のリンク、強調 見出しの全幅の線、入力欄風の線 マーカー、伸びる下線 ナビゲーションの動く線

選び方の目安

状況 選ぶ手法
本文中のリンクの下線を整えたい text-decoration+thickness+offset
折り返す文章にマーカーを引きたい linear-gradient
折り返す可能性があるリンクで線を伸ばしたい linear-gradient の background-size
1行のメニュー項目で凝った動きをつけたい ::after
見出しの下に、文字幅でなくブロック幅の線を引きたい border-bottom

コピペ集:そのまま使える下線とマーカー

ここからは用途別のコードです。HTMLは次の形を想定しています。

<p>本文の中で <a class="link" href="#">リンクの文字</a> や
<span class="marker">強調したい文</span> に使います。</p>

1. 読みやすいリンクの下線

.link {
  color: #1d4ed8;
  text-decoration: underline;
  text-decoration-thickness: 0.08em;
  text-underline-offset: 0.25em;
  text-decoration-color: color-mix(in srgb, currentColor 50%, transparent);
}
.link:hover {
  text-decoration-color: currentColor;
}

線を文字色の半分の濃さにしておき、ホバーで濃くする形です。color-mix() は Chrome 111、Firefox 113、Safari 16.2 から使えます。

2. マーカー風(背景グラデーション)

.marker {
  background: linear-gradient(transparent 60%, #fde047 60%);
}

「上から60%は透明、そこから下は黄色」という背景です。font-size: 20px・line-height: 2 の段落で2行に折り返し、色の帯を計測しました。

linear-gradient(transparent 60%, 色 60%)  行ごとの帯 [上端,高さ]= [[62,12],[102,12]]  行ボックス[top,bottom]= [[45,74],[85,114]]

2行とも、文字の箱(高さ 29px)の下側 12px に帯が入りました。 60% の数字を小さくすると太く、大きくすると細くなります。

見た目 書き方
下半分のマーカー linear-gradient(transparent 50%, #fde047 50%)
細めのマーカー linear-gradient(transparent 75%, #fde047 75%)
全面の蛍光ペン background: #fde047;
少し透ける色 linear-gradient(transparent 60%, rgb(253 224 71 / 0.6) 60%)

3. マーカー風(下線だけで作る)

.marker-line {
  text-decoration: underline;
  text-decoration-color: rgb(253 224 71 / 0.7);
  text-decoration-thickness: 0.5em;
  text-underline-offset: -0.2em;
  text-decoration-skip-ink: none;
}

太い下線を負のオフセットで文字に重ねる方法です。同じ条件で計測すると次のとおりでした。

text-decoration 太線+負のoffset  行ごとの帯 [上端,高さ]= [[64,10],[104,10]]  行ボックス[top,bottom]= [[45,74],[85,114]]

太さ 0.5em(10px)の帯が各行に入りました。 位置と太さを文字サイズ基準で直接指定できるので、line-height を変えても帯の位置が動きません。背景を使わないため、背景色を別の用途に使っている要素にも向いています。

比べる点 背景グラデーション 下線で作る
位置の基準 文字の箱の高さに対する割合 ベースラインからの距離
線が引かれるアニメ 可 不可
文字との重なり順 文字の後ろ 文字の後ろ
対応ブラウザ 非常に広い thickness と offset に対応した版(Chrome 89、Firefox 70、Safari 12.1 以降)

4. ホバーで左から線が伸びる(折り返し対応)

.grow {
  text-decoration: none;
  background: linear-gradient(currentColor, currentColor) no-repeat left bottom / 0 2px;
  transition: background-size 0.3s;
}
.grow:hover,
.grow:focus-visible {
  background-size: 100% 2px;
}

単色の linear-gradient を「高さ 2px・幅 0」の背景として置き、ホバーで幅を 100% にします。太さ 3px の赤で計測した結果です(文字の幅は 287px)。

背景サイズで左から伸びる   線なし → 幅213 上端y=72 太さ3 → 幅287 上端y=72 太さ3

ホバー直後は線なし、途中で 213px、完了後に 287px と伸びました。背景はインライン要素の各行に描かれるので、リンクが折り返しても1行目から順に伸びます。

5. ホバーで中央から線が伸びる(1行向け)

.center {
  position: relative;
  display: inline-block;
  text-decoration: none;
}
.center::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 2px;
  background: currentColor;
  transform: scaleX(0);
  transition: transform 0.3s;
}
.center:hover::after,
.center:focus-visible::after {
  transform: scaleX(1);
}
中央から: x88-278 太さ3 → x40-326 太さ3

文字は x=40 から 326 の範囲にあり、途中では中央寄りの 88〜278 だけに線が出ています。transform は再レイアウトを起こさないため、動きがなめらかです。

6. 左から入って右へ抜ける

.slide::after {
  /* 5 の .center::after と同じ指定に、次の1行を足す */
  transform-origin: right;
}
.slide:hover::after {
  transform: scaleX(1);
  transform-origin: left;
}

.slide 本体には 5 の .center と同じ3行(position: relative など)を書きます。

左から入り右へ抜ける: 線なし → x40-230 太さ3 → x40-326 太さ3 →(離す) x231-326 太さ3 → 線なし

ホバー中は左端(x=40)から伸び、マウスを離すと右側(x=231〜326)に残りながら消えていきました。 transform-origin をホバー時だけ切り替えるのが仕組みです。

7. 下線の位置・色・太さを動かす

/* 線が下へ離れる */
.drop { text-decoration: underline; text-underline-offset: 2px; transition: text-underline-offset 0.3s; }
.drop:hover { text-underline-offset: 10px; }

/* 線がふわっと現れる */
.fade { text-decoration: underline transparent; text-decoration-thickness: 2px; transition: text-decoration-color 0.3s; }
.fade:hover { text-decoration-color: currentColor; }

/* 線が太くなる */
.thick { text-decoration: underline; text-decoration-thickness: 1px; transition: text-decoration-thickness 0.3s; }
.thick:hover { text-decoration-thickness: 6px; }
text-underline-offset が動く         幅287 上端y=70 太さ3 → 幅287 上端y=76 太さ3 → 幅287 上端y=78 太さ3
text-decoration-color がフェード       線なし → 幅286 上端y=70 太さ3 → 幅287 上端y=70 太さ3
text-decoration-thickness が太くなる   幅287 上端y=69 太さ1 → 幅287 上端y=71 太さ6 → 幅287 上端y=71 太さ6

位置は y=70 → 76 → 78 と途中の値を通っており、text-underline-offset が transition で補間されることがわかります。色と太さも変化しました。text-decoration だけで作る動きは、折り返すリンクでも各行で同じように動くのが利点です。

8. マーカーが引かれていくアニメ

.marker-anim {
  background: linear-gradient(transparent 60%, #fde047 60%) no-repeat left / 0 100%;
  transition: background-size 0.6s;
}
.marker-anim.is-on {
  background-size: 100% 100%;
}
マーカーが引かれるアニメ(2行): 線なし → x40-297 太さ12 / x40-90 太さ12 → x40-297 太さ12 / x40-199 太さ12

途中の時点で1行目は端まで、2行目は途中まで引かれており、ペンで書くように1行目から順に進みます。 is-on クラスは、画面に入ったときに IntersectionObserver で付けると、スクロールに合わせて引かれる演出になります。

const io = new IntersectionObserver((entries) => {
  for (const e of entries) {
    if (e.isIntersecting) { e.target.classList.add('is-on'); io.unobserve(e.target); }
  }
}, { threshold: 1 });
document.querySelectorAll('.marker-anim').forEach((el) => io.observe(el));

(この JavaScript 部分は、クラスを付けたあとの描画のみ確認しています。)

9. 見出しの2色線

.heading {
  position: relative;
  padding-bottom: 10px;
  border-bottom: 4px solid #e5e7eb;
}
.heading::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -4px;
  width: 30%;
  height: 4px;
  background: #e11d48;
}
見出し2色線: x40-159 太さ4

幅 400px の見出しで、左から 30%(120px)だけ色つきの線が重なりました。全幅の薄い線は border-bottom、アクセントは ::after という組み合わせです。

10. 破線・点線・波線

.dashed { text-decoration: underline dashed; text-underline-offset: 0.3em; }
.dotted { text-decoration: underline dotted; text-decoration-thickness: 2px; text-underline-offset: 0.3em; }
.wavy   { text-decoration: underline wavy #e11d48; text-underline-offset: 0.3em; }

/* 線と文字の間隔を padding で決めたいとき */
.dashed-border { border-bottom: 2px dashed currentColor; padding-bottom: 6px; }

用語の補足説明には点線、入力まちがいの指摘には波線、というように形で意味を分けると伝わりやすくなります。

つまずきやすいポイントと直し方

こうなる 理由 こうするとよい
子要素に text-decoration: none を書いても、親の下線が消えない 下線は「継承」ではなく、親が子の文字にも線を引く仕組み 下線を引く範囲を span で分ける。子を display: inline-block にすると親の線の対象から外れる
太さの指定が効かない あとに書いた text-decoration の一括指定が auto に戻した 個別プロパティを一括指定より後ろに書く
text-underline-offset が取り消し線に効かない 下線専用のプロパティ 取り消し線の位置は変えられない。必要なら linear-gradient で線を描く
太い下線が「g」や「y」で途切れる skip-ink の初期値が auto text-decoration-skip-ink: none
::after の線が、折り返すと一部にしか出ない 絶対配置は1つの箱を基準にするため 折り返す文には linear-gradient を使う
border-bottom の線で行間が広がって見える 枠線は箱の外側に足される text-decoration か背景に替える

親の下線が子に及ぶ様子も計測しました。親の段落に下線を引き、2つ目の span に text-decoration: none、3つ目に display: inline-block を指定しています。

親の下線は子に伝わるか: 線の範囲 x 40-260  各spanの範囲 [[40,130],[130,261],[261,428]]

none を指定した2つ目の span(x=130〜261)にも線が引かれ、inline-block の3つ目からは線が消えました。

アクセシビリティの配慮

項目 目安
本文中のリンクは下線を残す 色だけで区別すると、色の見分けがつきにくい人に伝わりにくい。下線は「色以外の手がかり」になる
下線を消すなら別の手がかりを用意する ナビゲーションのように、位置や形でリンクとわかる場所に限る
ホバーだけでなくフォーカスにも反応させる :hover と並べて :focus-visible を書く
マーカーの色と文字のコントラスト 薄い黄色に黒文字など、文字が読みやすい組み合わせにする
動きを減らす設定への配慮 @media (prefers-reduced-motion: reduce) { .grow, .center::after { transition: none; } }

よくある質問

Q. 下線と文字の間隔だけを広げるには? A. text-underline-offset: 0.3em; のように書きます。計測では、指定した長さがそのままベースラインから線までの距離になりました。Chrome 87、Firefox 70、Safari 12.1 以降で使えます。

Q. マーカーは linear-gradient と text-decoration のどちらで作るのがよいですか? A. 引かれていくアニメをつけたい、または対応ブラウザを広く取りたいなら linear-gradient、位置と太さを文字サイズ基準で指定したい、背景を別の用途に使いたいなら text-decoration が向いています。どちらも折り返した各行に帯が入ることを確認しています。

Q. リンクの下線を消して、ホバーのときだけ出すには? A. a { text-decoration: none; } と a:hover { text-decoration: underline; } です。ふわっと出したい場合は、コピペ集7の text-decoration-color を透明から変化させる書き方が使えます。

Q. text-decoration-skip-ink: all は使えますか? A. MDN の対応表では Chrome 148、Firefox 75、Safari 15.4 からです。この記事で使った Chromium 141 では計算値が auto になり、適用されませんでした。未対応のブラウザでは単に無視されるので、書いておいて差し支えはありません。

まとめ

  • 太さは text-decoration-thickness、位置は text-underline-offset、色は text-decoration-color で調整する
  • text-underline-offset の長さは、ベースラインから線までの距離にそのまま反映された(4px で +4px、0.25em で +10px)
  • 一括指定は書かなかった項目を初期値に戻す。 太さを別に書くなら一括指定より後ろに置く
  • 折り返す文に線を引くなら text-decoration か linear-gradient。 ::after は1行だけに線が出た
  • マーカー風は linear-gradient(transparent 60%, 色 60%) が手軽。下線だけで作る方法もある
  • 伸びる線は background-size か ::after の scaleX、位置・色・太さの変化は text-decoration のまま transition できる
  • 本文中のリンクは下線を残し、:focus-visible にも同じ変化をつける

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「CSSで下線の位置・太さ・色を調整|マーカー風コピペ集」

株式会社RJCでは、CSSの下線や装飾の細かな調整方法を仲間と学び合っています。こうした知識を共有しながら、日々技術を磨いています。

株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。

WE ARE HIRING

RJCで一緒に開発しながら、
成長を楽しみませんか?

RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!

  • 127日年間休日
  • 12時間平均残業時間
  • 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!

ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ

RJCで一緒に開発しながら、 成長を楽しみませんか?