序文ダーク モードの概念は、 Apple の担当者が徐々にすべての主要システム プラットフォームに 私を知っている友人は皆、私が熱烈な CSS 愛好家であることを知っているはずです。もちろん、今回も純粋な CSS を使用してこのソリューションを実装しています。はい、JS を追加しなくても、CSS の威力が再び証明されました。 アイデアアイデアはシンプルで、ボタンを使用してテーマ スタイルを切り替えるだけです。ボタンのチェックを外すと、 :checked : オプションがチェックされたフォーム要素 + : 要素の隣接する兄弟要素
<本文> <input class="ios-switch" type="checkbox"> <div class="main">ウェブサイト本文</div> </本文> セレクターの機能と分類の詳細については、私の記事「おそらく最も完全で覚えやすい CSS セレクター分類方法」を参照してください。 トグルボタン見た目の良いボタンをデザインしたいと思っていましたが、特にアイデアがなかったので、iPhoneを開いて、純粋な CSS を使用して設定に サイズと色はiPhoneのスイッチボタンと一致しています。アイデアとしては、 <input class="ios-switch" type="checkbox"> .btn{ 境界線の半径: 31px; 幅: 102px; 高さ: 62px; 背景色: #e9e9eb; } .ios-スイッチ{ 位置: 相対的; 外観: なし; カーソル: ポインタ; 遷移: すべて 100 ミリ秒; @extend .btn; &::前に { 位置: 絶対; コンテンツ: ""; 遷移: すべて 300ms cubic-bezier(.45, 1, .4, 1); @extend .btn; } &::後 { 位置: 絶対; 左: 4px; 上: 4px; 境界線の半径: 27px; 幅: 54px; 高さ: 54px; 背景色: #fff; ボックスの影: 1px 1px 5px rgba(#000, .3); コンテンツ: ""; 遷移: すべて 300ms cubic-bezier(.4, .4, .25, 1.35); } &:チェック済み{ 背景色: #5eb662; &::前に { 変換: スケール(0); } &::後 { 変換: translateX(40px); } } } オンラインデモとソースコードを表示するにはここをクリックしてください。 ダークモード4月4日にインターネット全体が追悼モードになった時のことを覚えていますか?著者は、強力な CSS 属性 html{ フィルター:グレースケール(1); } 本当にたった 1 行のコードで、今回も例外ではありません。 html{ フィルター: 反転(1) 色相回転(180度); } この invert() : 画像を反転して逆向きに出力します。0 hue-rotate() : 色相回転、画像の色を弱める、白黒以外の色を処理する、
上記の分析によると、ボタンが選択状態にある場合、 .ios-スイッチ{ ... &:チェック済み{ ... & + .main { フィルター: 反転(1) 色相回転(180度); } } } 。主要 { 背景色: #fff; 遷移: すべて 300 ミリ秒; } CodePen での効果をよりわかりやすく示すために、 最適化 注意深い生徒は、写真がすべて超音波写真のように見えることに気付くかもしれません。 設計原則によれば、スキニングはコンポーネントのみを対象とします。背景、画像、ビデオなどの一部のメディア要素は直接処理することができず、そのまま残す必要があります。 画像、 ビデオ フィルター: 反転(1) 色相回転(180度); } もう一つの疑問は、背景をどう扱うかということです。ご存知のとおり、背景は 画像、 ビデオ、 .アバター、 。画像、 .サムネイル{ フィルター: 反転(1) 色相回転(180度); } 一般的なウェブサイトでは、このクラス名は自分で定義できます。最も実現可能な方法は、特定のクラス .除外{ フィルター: 反転(1) 色相回転(180度); } 改修 コードのデモンストレーションを容易にするために、CodePen デモでは <本文> <div id="__nuxt">...</div> </本文> <本文> <input class="ios-switch" type="checkbox"> <div id="__nuxt">...</div> </本文> 次の .btn{ 境界線の半径: 31px; 幅: 102px; 高さ: 62px; 背景色: #e9e9eb; } .ios-スイッチ{ 位置: 相対的; 外観: なし; カーソル: ポインタ; 遷移: すべて 100 ミリ秒; @extend .btn; &::前に { 位置: 絶対; コンテンツ: ""; 遷移: すべて 300ms cubic-bezier(.45, 1, .4, 1); @extend .btn; } &::後 { 位置: 絶対; 左: 4px; 上: 4px; 境界線の半径: 27px; 幅: 54px; 高さ: 54px; 背景色: #fff; ボックスの影: 1px 1px 5px rgba(#000, .3); コンテンツ: ""; 遷移: すべて 300ms cubic-bezier(.4, .4, .25, 1.35); } &:チェック済み{ 背景色: #5eb662; &::前に { 変換: スケール(0); } &::後 { 変換: translateX(40px); } & + #__nuxt { フィルター: 反転(1) 色相回転(180度); 画像、 ビデオ、 .アバター、 。画像、 .サムネイル{ フィルター: 反転(1) 色相回転(180度); } } } } #__nuxt { 背景色: #fff; 遷移: すべて 300 ミリ秒; } 完了後、 .ios-スイッチ{ 位置: 絶対; 右: 0; 上: 0; zインデックス: 99999; アウトライン: なし; } または、 説明が少しわかりにくいと感じた場合は、少し整理して、上記の操作を 3 つのステップで完了することができます。 ナゲッツコミュニティのウェブサイトを開く
コピー&ペーストを容易にするために、著者は上記の分析から得られた CSS コードを圧縮しました。 <style> .btn、.ios-switch :: before、.ios-switch {border-radius:31px; width:102px; height:62px; background-color:#e9e9eb;}。ios-switch {position:relative; lative; ligate; ligate:none:none; cursor:coursor:contert:all copest: Ubic-Bezier(0.45,1,0.4,1);}。iOS-switch :: after {position:absolute; left:4px; top:4px; width:54px; MS Cubic-Bezier(0.4,0.4,0.25,1.35);}。iOS-Switch:checked {background-color:#5eb662;}。ios-switch:checked :: before {transform:scale(0);} :(1)Hue-Rotate(180Deg);}。iOS-Switch:チェック +#__nuxt img:checked +#__nuxt video、.ios-switch:checked +#_nuxt .avatar、.ios-switch:checked +#__nuxt .is-switch:hid + 0deg);} #__ nuxt {background-color:#fff; transition:すべて300ms;}。ios-switch {position:aspolute; right:0; top:0; z-index:99999; outline:none;} </style>
<本文> <input class="ios-switch" type="checkbox"> <div id="__nuxt">...</div> </本文> このように、純粋な CSS 実装により、Web サイトに 要約する
<本文> <input class="ios-switch" type="checkbox"> <div class="main">ウェブサイト本文</div> </本文> .ios-スイッチ{ ... &:チェック済み{ ... & + .main { フィルター: 反転(1) 色相回転(180度); 画像、 ビデオ、 .除外{ フィルター: 反転(1) 色相回転(180度); } } } } 。主要 { 背景色: #fff; 遷移: すべて 300 ミリ秒; } このソリューションには次の機能があります。
やってみるのもいいですよ。終わって結果が良かったと思ったら、上司に昇給をお願いしてみましょう:stuck_out_tongue_winking_eye:、ハハ! 純粋な CSS を使用して Web サイトのダーク モード切り替えを無料で有効にする方法についての記事はこれで終わりです。CSS ダーク モード切り替えの詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 |
>>: LinuxでIPアドレスが表示されない問題の解決方法
1. ポート2375を開くdocker.serviceを編集する vim /lib/systemd/...
最近、データベースについて学び始めました。最初にやったことは、データベースとは何か、データベースとデ...
今夜、数日間悩まされていた問題を解決しました。本当に解決したかどうかはわかりませんが、解決されている...
MySQL をインストールした後、初めてmysql -uroot -pを実行したときに、root パ...
コードを書くのに 30 分かかりましたが、この HTML5 Canvas New Year Fire...
目次簡単な紹介1. 現在のgccバージョンを確認する2. gccインストールパッケージ(バージョン1...
1. SQL インジェクションとは何ですか? SQL インジェクションは、入力パラメータに SQL ...
React プロジェクトで要素フレームワークを使用するのは今回が初めてです。非常に単純な問題に遭遇し...
概要今日は主に、NGINX を Web サーバーとして設定する方法を共有します。内容は次のとおりです...
元のコード: center.html : <!DOCTYPE html> <htm...
目次1. 問題の説明2. 問題分析3. 問題解決1. Dockerのディスク使用量を確認する2. 再...
1. 遭遇した問題分散プロジェクトの展開プロセスでは、サーバーの再起動後にアプリケーション(データベ...
リンクを使用する必要がある場合もありますが、リンクする必要はありません。onclick イベントを処...
一般的なブラウザでテスト ページを開き、Fiddler で http リクエストを表示してください。...
目次1. サーバー2. クライアント3. テストサービス1. サーバー1. YUMソースを使用してN...