<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          H5網(wǎng)頁(yè)適配系統(tǒng)夜間主題

          共 2192字,需瀏覽 5分鐘

           ·

          2021-12-11 02:35

          文章導(dǎo)讀

          現(xiàn)在無(wú)論是在PC端、還是手機(jī)端系統(tǒng)都加入了夜間主題,大多數(shù)App為了提高用戶體驗(yàn)性,也加上了夜間主題。甚至是可以根據(jù)系統(tǒng)切換主題來(lái)變換自身主題,這樣的反饋給用戶還是挺舒適的。

          那么App應(yīng)用上可以跟隨系統(tǒng)主題做自由切換,那么在網(wǎng)頁(yè)上是不是也可以實(shí)現(xiàn)呢?那是肯定的,先看看在實(shí)現(xiàn)的效果圖:

          458bc288e4b481777625bd371f8a15a0.webp

          看看夜間主題:

          d09622feb5e9106e2fe6c002fb9fe7de.webp

          好了,進(jìn)入正題,要實(shí)現(xiàn)上述效果,我們只需要通過(guò)CSS的媒體查詢prefers-color-scheme屬性,用于檢測(cè)用戶是否有將系統(tǒng)的主題色設(shè)置為亮色或者暗色。

          01

          檢測(cè)系統(tǒng)當(dāng)前主題


          @media (prefers-color-scheme: dark) {            body {                background: #121212;                color: #ffffff;            }            article{                color:rgba(255,255,255,.86);            }        }@media?(prefers-color-scheme:?light)?{            body {                background: #fffff;                color: #000;            }            article{                color:rgba(0,0,0,.86);            }        }

          dark和light指的分別是暗黑和亮模式,那么當(dāng)一加載網(wǎng)頁(yè)的時(shí)候,通過(guò)媒體查詢能知道該渲染哪套主題了。

          但是當(dāng)手機(jī)系統(tǒng)切換主題后,怎么讓網(wǎng)頁(yè)也自動(dòng)切換主題顏色呢?

          02

          監(jiān)聽系統(tǒng)主題切換

          可以通過(guò)注冊(cè)監(jiān)聽器,監(jiān)聽prefers-color-scheme的變化。
          /*判斷是否支持主題色*/
          if (window.matchMedia('(prefers-color-scheme)').media === 'not all') { alert('瀏覽器不支持主題模式')
          console.log('Browser doesn\'t support dark mode'); }
          /*判斷是否處于深色模式*/ if(window.matchMedia('(prefers-color-scheme: dark)').matches){ console.log('深色模式', document.getElementsByTagName('html')); document.getElementsByTagName('html')[0].style.background = '#000'; document.getElementsByTagName('html')[0].style.color = '#fff'; }
          /*判斷是否處于淺色模式*/ if(window.matchMedia('(prefers-color-scheme: light)').matches){ //Do some thing console.log('淺色模式'); document.getElementsByTagName('html')[0].style.background = '#fff'; document.getElementsByTagName('html')[0].style.color = '#000'; }

          /*模式切換聽器*/ var listeners={ dark: function(mediaQueryList ){ if(mediaQueryList.matches){ // alert('您切換到深色模式了!') } }, light: function(mediaQueryList){ if(mediaQueryList.matches){ // alert('您切換到淺色模式了!') } } }
          window.matchMedia('(prefers-color-scheme: dark)').addListener(listeners.dark) window.matchMedia('(prefers-color-scheme: light)').addListener(listeners.light)

          網(wǎng)頁(yè)中注冊(cè)了兩個(gè)監(jiān)聽器,當(dāng)監(jiān)聽到手機(jī)系統(tǒng)是否有切換的時(shí)候,會(huì)響應(yīng)對(duì)應(yīng)的事件,到時(shí)候,可以讓網(wǎng)頁(yè)自動(dòng)刷新,或者自動(dòng)更新CSS樣式就看聽君處理了。

          落魄時(shí),一定要把自己當(dāng)回事,發(fā)跡時(shí),一定要把別人當(dāng)回事。

          --《劍來(lái)》



          瀏覽 91
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  青娱网电信一区电信二区电信三区 | 婷婷 影音先锋在线观看 | 人妻无码中文字幕免费视频蜜桃 | 国产一区二区免费播放 | 久久午夜无码鲁丝片午夜精1 |