Safari 12.1から外観モード(ライト/ダーク)の判定をCSSで行えるように!

Safari 12.1から、Macの外観モードの状態に応じてメディアクエリで判定できるようになりました。
ちなみに、外観モードはmacOS Mojave以降で[システム環境設定]→[一般]→「外観モード:」で変更できる、UIの色を選択できる機能の事です。

対応ブラウザが現状Safariの12.1でないと使えないので、わざわざ実装する機会は少ないと思いますが、Macのシステム環境内の状態を判定できるのは面白いので紹介しておきます。
実際の動作
Safari 12.1からCSSでダークモードの判定が出来るようになった。メディアクエリで「prefers-color-scheme: dark」を指定する。https://t.co/d9EeFLze3x pic.twitter.com/yX3E1NPNef
— サイトウ マサカズ (@31mskz10) February 2, 2019
実際の動作を確認するためにはSafariのバージョンが12.1以上の必要があるため、AppleのDeveloperサイトよりSafariの12.1のベータ番をダウンロード(もしくはSadari Technology Previewをダウンロード)してください。
Safari12.1で下のプレビューを見ながらダークモードに切り替えると、それに合わせてスタイルが変わります。
実装方法
実装方法は非常に簡単で、メディアクエリで「prefers-color-scheme: dark」または「prefers-color-scheme: light」を指定するだけです。Safari 12.1のRelease Notesにもそのように書かれています。
Added support for the CSS media queries prefers-color-scheme: light and prefers-color-scheme: dark.
@media (prefers-color-scheme: dark){
ダークモード時の内容
}
@media (prefers-color-scheme: light){
ライトモード時の内容
}この感じだと、iOSにもダークモードが搭載されそうですね。
そうなってくると、ブログやニュースサイトなどの読み物系のサイトには、どんどんダークモードが実装されていきそうです。


Font Awesome 5の基本的な使い方と、Font Awesome 4との違い
Visual Studio CodeをMarkdownエディターとして使用する
iOS Safariでinputタグにフォーカスを合わせると、自動で画面が拡大してしまう原因と解決方法
SafariでFacebookのPage Pluginに「リクエストを処理できませんでした」とダイアログが表示される問題
コーディングで「スペース」と「タブ」のどちらを使えばいいのか?
Visual Studio Codeでできる最低限のGit操作方法
gulpでPostCSSを使う方法
スマホやPCにプッシュ通知をしてくれる「Push7」をブログに追加する方法
CodeAnywhereでターミナルに触る練習をする
SafariのURLメニュー部分も考慮できるCSSの単位「dvh」
AirPodsで片耳を外しても再生が止まらないようにする方法
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
ウェブ開発時のテスト環境と本番環境の取り違えを防ぐChrome拡張機能「Environment Marker」
【2026年版】Karabiner-Elementsで実現する右commandキー活用のススメ
Bartender ProのTop Shelf機能でできること
高機能なスクリーンショットアプリ「CleanShot X」
macOSの効率化に関するDiscordコミュニティ「CMD-F」を立ち上げました
Default Folder Xで保存ダイアログ内のファイルリストにフォーカスする方法
Obsidianで整理した知識をAnkiで定着させる方法
Figma × Keyboard Maestroでどこまで効率化できる?
マウス操作の完成度が高いウインドウリサイズアプリ「Magnet」