· 1分で読了
1行のCSSでsmooth-scrollを実現する方法
この記事は中国語から自動翻訳されたものです。翻訳によりニュアンスが失われている場合があります。
僕がSvelteを使ってご機嫌でsmooth-scrollを実装したあと、実はCSS 1行で実現できることに気づいた:
html {
scroll-behavior: smooth;
}
ブラウザのサポート状況を少し気にする必要があるかもしれないが、ライブラリを導入したり自前で実装したりする開発者の手間が完全に省ける。

smooth-scroll が完璧に実現でき、もうhashchangeやstate changeの挙動を書き換える必要もない。また日を改めて、CSSを使わずにsmooth-scrollを実現する方法についての記事も書こうと思う。
関連記事
- Three.js で僕の部屋を表現する 僕が React Three Fiber を使って実際の自分の部屋をブラウザ上に再現し、実世界のオブジェクトを目録に見立て、空間の記憶を通してここ数年の生活と仕事について語った話。
- フロントエンドで画像を扱う際に注意すべきこと Jake Archibaldの記事を起点に、現代のレスポンシブ画像の書き方を整理する。なぜwidth/heightを付ける必要があるのか、CSSのaspect-ratioはいつ使うべきか、AVIFとWebPの選び方、そしてpicture/source/srcsetを使ったモバイル向け画像の切り替えについて。
- CSS field-sizing — たった1行のCSSでフォーム要素を自動リサイズする かつてtextareaの自動高さ調整は、JavaScriptでscrollHeightを監視するしかなかった。しかしCSSのfield-sizing: contentなら、わずか1行で代替でき、textarea、input、selectに対応している。本記事では従来のやり方のペインポイントと、field-sizingの使い方をまとめる。
- リンクの下線をもっと見栄え良くする:text-underline-offset デフォルトでは下線と文字が近すぎて、このスタイルを好まないデザイナーもいるし、僕自身もあまり綺麗ではないと感じていた。