序文ダーク モードの概念は、 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. まず、2つ以上の隣接する通常フローブロック要素の垂直マージンの崩壊を引き起こす原因を知る必要が...
<br />オリジナル: http://www.alistapart.com/artic...
目次Vuex とは何ですか? Vuex 使用サイクル図私のストアディレクトリvuexの例の実装要約す...
目次MySQL クエリツリー構造1. ツリー構造について2. MySQLでカスタム関数を定義する方法...
この間、プロジェクトに取り組んでいるときに、データ間の接続が非常に複雑なモジュールに遭遇しました。テ...
1. Windows 版の Docker をインストールしたら、Docker クイックスタート ター...
目次インストール: 1. ファイアウォールの基本的な使い方2. ファイアウォールd-cmdを設定する...
1. Docker Secretとは1. シナリオ表示MySQL サービスなど、一部のサービスではパ...
mysql5.7.18のインストール時に次の問題が発生しました: プログラム入力ポイントfesetr...
序文現在、フロントエンドは主に webpack の devServer の構成を通じてクロスドメイン...
トリガー:トリガーの使用シナリオと対応するバージョン:トリガーは次の MySQL バージョンで使用で...
React Native は、2015 年 4 月に Facebook によってオープンソース化され...
1. 全体的な手順冒頭で、RabbitMQ サービスをインストールして実行する方法を紹介しましたが、...
この記事では、例を使用して MySQL カーソルの原理と使用方法を説明します。ご参考までに、詳細は以...
123WORDPRESS.COM では、FileZilla のダウンロード リンクを提供しています:...