文字に蛍光ペンのようなマーカーを引くCSSを、linear-gradientを使う方法と、text-decorationを使う方法で比べます。
linear-gradientを使う方法
背景にグラデーションを指定して、下の部分だけに色を付ける方法です。

<span class="marker">マーカー</span>.marker { line-height: 1.6; /* 無くても良い */ background-image: linear-gradient(transparent 60%, #ff6 0%);}メリット
背景なので、paddingを指定すれば、以下のように左右に余白を持たせることができます。

デメリット
マーカーの位置を調整しようとすると、以下のように記述が長くなります。また、単位が%なので、線の太さを固定できません。文字の大きさや行の高さが変わると、線の太さも変わります。
結果的に、感覚での調整になってしまいがちです。
.marker { background-image: linear-gradient(transparent 61%, #ff6 61%, #ff6 85%, transparent 85%);}text-decorationを使う方法
下線を太くして、文字に重なる位置まで上げる方法です。
<mark class="marker">マーカー</mark>.marker { text-decoration-line: underline; text-decoration-color: #ff6; text-decoration-thickness: 14px; text-decoration-skip-ink: none; text-underline-offset: -4px; background-color: unset; /* デフォルトの背景を削除 */}text-decoration-thicknessが線の太さ、text-underline-offsetが線の位置です。text-decoration-skip-ink: noneは、文字と重なる部分で線が途切れないようにする指定です。
<mark>は、ブラウザの既定のスタイルで背景に色が付くので、background-color: unsetで消しています。
メリット
線の太さと位置を、pxなどの単位でそれぞれ指定できます。<mark>タグに共通で上記のCSSを適用して、値をカスタムプロパティにしておけば、位置や色の変更も容易です。
デメリット
下線は文字のある範囲にしか引かれないので、linear-gradientの方法のように左右の余白を調整することはできません。テキストの位置だけに線を引くのであれば、あまり気にすることではないかと思います。
ブラウザの対応状況
text-decoration-skip-inkは、Safariでは15.4から対応しています。それより前のSafariでは、文字と重なる部分で線が途切れます。text-decoration: underline #ff6 14px;のようにショートハンドで色や太さを書く方法は、Safariでは26.2から対応しています。それより前のSafariでは下線が表示されないので、上のコードのように個別のプロパティで書いてください。
参考・引用
この記事をシェア