Html5プロジェクト適応システムダークカラーモードプログラム概要の詳細説明
I. 背景
iOS 13のリリースに伴い、ダークモードはますます世間の注目を集め、少し前にWeChatの適応が改めて話題になるなど、最近のモバイルアプリやWebサイトではダークモードへの対応がトレンドになっています。ダークモードは、消費電力を劇的に削減し、明るいコントラストを弱めるだけでなく、視認性と没入感を向上させることができます。
ダークモードへの切り替え方法
- iOS: 設定 - ディスプレイと明るさ - 外観 - 暗い色 を選択します。
- Android: "システム設定"-"ディスプレイ"-"ダークモード".
II. 問題点
システムがダークカラーモードを設定した場合、H5ページが対応する処理を行わないため、背景色の衝突、暗いテキストの異常表示、暗いアイコンの異常表示など、表示上の問題が発生します。
そのため、ダークモードに何らかの適応をする必要があります。
いろいろと試してみました。
第三に、H5プロジェクトは、ダークカラーモードスキームを適応させる
1. カラースキームの宣言
これには2つの方法があります。
1.1meta
ヘッドで宣言する
<meta name="color-scheme" content="light dark">
現在のページがライトとダークの両方のモードをサポートしており、システムがダークモードに切り替わると、ブラウザのデフォルトのスタイルもダークに切り替わることを宣言しています。
1.2 CSS
以下のcssでも、上記のmeta宣言の効果を得ることができます。
:root {
color-scheme: light dark;
}
注:この宣言はページを自動適応させるものではなく、ブラウザのデフォルトのスタイルにのみ影響します
詳細については、W3Cのドキュメントを参照してください。 CSSカラーアジャストメントモジュールレベル 1
2. CSSメディアによるクエリ
CSSのメディア機能を利用して、ユーザーがシステムのテーマカラーを「明るい」「暗い」のどちらに設定しているかを検知しています。
ノープレファレンス
この領域でのユーザーの選択肢をシステムが認識していないことを示す。ブーリアンコンテキストでは、falseの結果で実行される。
ライト
ユーザーがインターフェイスにライトテーマを使用することをシステムに通知したことを示す。
暗い
ユーザーがインターフェイスにダークテーマを使用することをシステムに通知したことを示す。
:root {
color-scheme: light dark;
background: white;
color: black;
}
@media (prefers-color-scheme: dark) {
:root {
background: black;
color: white;
}
}
// For more colors, it is recommended to use CSS variables to manage the color values
3. 画像の適応
picture+sourceタグを使用して、異なるモードの画像のurlを設定します。
HTMLの <picture> 要素は、0個以上の <source> 要素と <img> 要素を含んで、異なるディスプレイ/デバイスのシナリオに対応した画像バージョンを提供します。
ブラウザは、最も適合する子要素の <source> を選択し、適合するものがない場合は <img> 要素の src 属性にある URL を選択します。選択された画像は、<img> 要素が占めるスペースにレンダリングされます。
<picture>
<! -- picture in dark mode -->
<source srcset="dark.jpg" media="(prefers-color-scheme: dark)" />
<! -- image in default mode -->
<img src="light.jpg"/>
</picture>
4. JavaScript &で現在のモードを決定し、モード変更をリッスンする。
4.1MatchMedia
ウインドウの matchMedia() メソッドは、指定されたメディアクエリー (en-US) 文字列を解析した結果を表す新しい MediaQueryList オブジェクトを返します。返された MediaQueryList は,文書がメディアクエリに一致するかどうかを決定するため,又はメディアクエリに一致するか又は一致しなくなるかを決定するために文書を監視するために使用されることができる。
4.2addListener()
のMediaQueryListインターフェイスは
addListener()
メソッドは、メディアクエリの状態への変更に応じてカスタムコールバック関数を実行するリスナーをMediaQueryListenerに追加します。
JavaScriptリスナー決定
const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')
function darkModeHandler() {
if (mediaQuery.matches) {
console.log('Now in dark mode')
} else {
console.log('Now in light mode')
}
}
// Determine the current mode
darkModeHandler()
// Listen for mode changes
mediaQuery.addListener(darkModeHandler)
今回紹介したのはHtml5プロジェクト適応システムダークモードの概要で、もっと関連するHtml5ダークモード内容はスクリプトハウスの過去記事を検索するか、以下の関連記事を引き続き閲覧してください、今後ともスクリプトハウスを応援してくださいね。
関連
-
ピクセル画像を描画するCanvasのサンプルコード
-
Canvasでイベントを追加する方法を説明する
-
HTML5ページの要素と属性の分析
-
Canvasでグラフィックス/イメージバインディングのイベントリスナーを実装する方法
-
キャンバスの内容を消去する(点消去+線消去)
-
キャンバスの描画は、contain または cover モードで適応され、中央に配置されます。
-
画像リソースが同一ドメイン下にないために、キャンバスがクロスドメインで汚染される場合の解決策
-
html2canvas.jsを使用してページのスクリーンショットを撮影し、表示またはアップロードするサンプルコード
-
html5 postMessageのフロントエンドクロスドメインとフロントエンドのリスニング方式の例
-
モバイルでiframeを拡大縮小するサンプルコード
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
サンプルレートとビットレートを設定してmp3オーディオを録音するhtml5
-
Html5 Streamを用いたリアルタイムモニタリングシステムの開発
-
中国語の文字にピンインを追加してコンポーネントを折りたたみ、展開するためのHTML5コード
-
canvas.toDataURL()エラーの詳細な解決策はすべてこちら
-
HTML5 のタッチ イベント(touchstart、touchmove、touchend)の実装
-
SVG描画をHTMLページに持ってくる実装
-
画像にタイル状の透かしを追加するためのhtml5キャンバス
-
HTML5ページの長押しで画像を保存する機能を解決するための記事
-
異なるiosデバイスでのh5ページの詳細 問題点まとめ
-
キャンバス・クロスドメイン・デピットの実践の説明