乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      H5 項目如何適配暗黑模式

       風(fēng)聲之家 2021-06-25

      一、背景

      隨著 iOS 13 的發(fā)布,深色模式(Dark Mode)越來越多地出現(xiàn)在大眾的視野中,支持深色模式已經(jīng)成為現(xiàn)代移動應(yīng)用和網(wǎng)站的一個潮流,前段時間更是因為微信的適配再度引起熱議。深色模式不僅可以大幅減少電量的消耗,減弱強(qiáng)光對比,還能 提供更好的可視性和沉浸感。

      如何切換深色模式

      • iOS:“設(shè)置”--“顯示與亮度”--“外觀”,選擇“深色”

      • Android:“系統(tǒng)設(shè)置”--“顯示”--“深色模式”。

      二、問題

      如果系統(tǒng)設(shè)置了深色模式,H5頁面不做相應(yīng)的處理,會出現(xiàn)背景色沖突、深色文字顯示異常,深色圖標(biāo)顯示異常等一些顯示上的問題。

      所以,需要對深色模式進(jìn)行一些適配。

      我嘗試了一些方案:

      三、H5項目適配深色模式方案

      1.聲明 color-scheme

      color-scheme

      有兩種方式。

      1.1meta

      在head中聲明<meta name="color-scheme" content="light dark">,聲明當(dāng)前頁面支持 light 和 dark 兩種模式,系統(tǒng)切換到深色模式時,瀏覽器默認(rèn)樣式也會切換到深色;

      1.2CSS

      下面的 css 同樣可以實現(xiàn)上面 meta 聲明的效果

      :root {
          color-scheme: light dark;
      }

      注意:此聲明并非為頁面做自動適配,只影響瀏覽器默認(rèn)樣式

      更多信息可查閱 W3C 文檔 《CSS Color Adjustment Module Level 1》

      2.通過 CSS 媒體查詢

      prefers-color-scheme CSS 媒體特性用于檢測用戶是否有將系統(tǒng)的主題色設(shè)置為亮色或者暗色。

      • no-preference

      表示系統(tǒng)未得知用戶在這方面的選項。在布爾值上下文中,其執(zhí)行結(jié)果為 false。

      • light

      表示用戶已告知系統(tǒng)他們選擇使用淺色主題的界面。

      • dark

      表示用戶已告知系統(tǒng)他們選擇使用暗色主題的界面。

      :root {
          color-scheme: light dark;
          background: white;
          color: black;
      }

      @media (prefers-color-scheme: dark) {
          :root {
              background: black;
              color: white;
          }
      }
      //顏色較多的情況,建議使用CSS變量對顏色值進(jìn)行管理

      3.圖片適配

      利用picture+source標(biāo)簽,設(shè)置不同模式下的圖片 url。

      HTML <picture>元素通過包含零或多個 <source> 元素和一個 <img> 元素來為不同的顯示/設(shè)備場景提供圖像版本。瀏覽器會選擇最匹配的子 <source> 元素,如果沒有匹配的,就選擇 <img> 元素的 src 屬性中的URL。然后,所選圖像呈現(xiàn)在<img>元素占據(jù)的空間中。

      <picture>
          <!-- 深色模式下的圖片 -->
          <source srcset="dark.jpg" media="(prefers-color-scheme: dark)" />
          <!-- 默認(rèn)模式下的圖片 -->
          <img src="light.jpg"/>
      </picture>

      4. JavaScript中判斷當(dāng)前模式&監(jiān)聽模式變化

      4.1matchMedia

      Window 的matchMedia() 方法返回一個新的MediaQueryList 對象,表示指定的媒體查詢 (en-US)字符串解析后的結(jié)果。返回的MediaQueryList 可被用于判定Document是否匹配媒體查詢,或者監(jiān)控一個document 來判定它匹配了或者停止匹配了此媒體查詢。

      4.2addListener()

      MediaQueryList接口的addListener()方法向MediaQueryListener添加一個偵聽器,該偵聽器將運(yùn)行自定義回調(diào)函數(shù)以響應(yīng)媒體查詢狀態(tài)的更改。

      JavaScript監(jiān)聽判斷

      const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')

      function darkModeHandler() {
          if (mediaQuery.matches) {
              console.log('現(xiàn)在是深色模式')
          } else {
              console.log('現(xiàn)在是淺色模式')
          }
      }

      // 判斷當(dāng)前模式
      darkModeHandler()
      // 監(jiān)聽模式變化
      mediaQuery.addListener(darkModeHandler)

      轉(zhuǎn)自:網(wǎng)絡(luò)

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多