l

o

a

d

i

n

g

.

.

.

[CSS] scroll-markerの深掘り

2026/03/26

CSS

t f B! P L
eyecatch CSSの:target-currentのPolifillを作っていると、::scroll-markerが必ず出てきます。 実はこのscroll-markerという命令を全く知らなかったので、今回はその仕様について調べてブログに残しておきます。

[擬似要素] ::scroll-marker-group

MDN : https://developer.mozilla.org/ja/docs/Web/CSS/Reference/Selectors/::scroll-marker 合わせて覚えておくべき、CSS機能に「scroll-marker-group」というのがあります。 これは、カルーセルの下によくある、ポッチのことをscroll-marker(スクロールマーカー)と言うんですが、アレです。
※デモではないです、サンプル画像です。 これまでJavascriptで作り出していたこのマーカーも、DOM構築しなくても簡単に作り出すことができるようになっています。

ブラウザ対応(2026年3月時点)

Operaも対応しているようですが、日本とiPhone使用率の高いSafariとFirefoxが、まるで対応されていません。(現時点では)

::scroll-markerの使い方

MDNに書かれているサンプルコードは次の通りです。 li { counter-increment: markers; } li::scroll-marker { content: counter(markers); font-family: sans-serif; width: fit-content; height: 1em; padding: 5px; color: black; text-decoration: none; border: 2px solid rgb(0 0 0 / 0.15); border-radius: 0.5em; background-color: #eeeeee; } li:first-child::scroll-marker { content: "最初"; } li:last-child::scroll-marker { content: "最後"; } ::scroll-marker:hover { background-color: #ddcccc; } ::scroll-marker:target-current { background-color: purple; color: white; } ::scroll-markerという「擬似要素」で、::beforeとか、::afterと同じ感じで、 カルーセルなどの内部スクロールのスクロールするアイテムが今どの位置にいるのかというマーキングしてくれる表示を 擬似要素として表示してくれる便利機能です。 この機能実装してみると分かったんですが、スクロールする時って、通常、"overflow:hidden;" として、スクロール内のはみ出した箇所は非表示にするんですが、 scroll-markerは、スクロールエリアの外に表示するため、このルールを逸脱して、表示してくれます。 なので、DOM構造で同じことをやろうとすると、スクロールエレメントの横または下などに、別要素を作らないといけないので、欄外(階層外)になり、CSSで連結して書くのが難しくなってしまうんです。 ということで、便利な機能だということが改めて理解できました。

あとがき

GoogleChromeが、CSSの新機能を前進的に取り入れてくれるのはありがたいのですが、他のブラウザで使えないという状態では、本番のWebサイトで採用するわけにはいかんのですよ。 ということで、この機能も、先日作った、Polyfillに機能追加して入れ込むようにしました。 このブログが公開される時には、Githubに反映されていると思いますので、便利に使えるようになっていることでしょう。 Github : css_scroll_target_polyfill

人気の投稿

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。

ブログ アーカイブ