精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何使用可選樣式表為網站或應用添加黑暗模式

開發 前端
黑暗模式已經應用在了許多流行的網站和應用程序中,諸如 Twitter、Instagram、WhatsApp 和 YouTube 等。但是你該怎樣在自己的網站上添加這種模式呢?

[[321227]]

為你的站點添加黑暗模式

黑暗模式 已經應用在了許多流行的網站和應用程序中,諸如 Twitter、Instagram、WhatsApp 和 YouTube 等。但是你該怎樣在自己的網站上添加這種模式呢?

我一直非常喜歡動態的網站顏色主題切換器。它們可以讓你選擇自己喜歡的顏色主題,從而改善了用戶體驗!

例如,下面是在 Twitter 的“顯示設置”下找到的顏色主題選項。

這次就讓我們來創建與之類似的功能吧。也許它不會像 Twitter 的主題更改器那么高大上,但我們會講明白這里會用到的技術細節,告訴大家如何使用可選樣式表(alternate style sheets)和 JavaScript 來切換 CSS 所包含的主題定義。

首先……我們來看一下這篇文章要創建出什么樣的內容。

下面是一個可以切換本網站顏色主題的運行示例:

https://www.javascriptteacher.com/dark-mode-alternate-css-style-sheet.html?rt

單擊各個按鈕就可以立即切換整個網站的 CSS 主題。在本教程的剩余部分,我將向你展示如何向你自己的站點添加黑暗模式功能!

如果你能抓取到這篇黑暗模式教程頁面使用的可選樣式表,那也可以復制到你自己制作的網站上,或者用在你的 Wordpress(或類似的站點構建工具)中。

你可能聽說過 CSS 可以是 內聯 的,內部 的和 外部 的。這決定了 CSS 包含在你的文檔中的方式。但是為了理解可選樣式表的概念,我們首先需要看一下……

層疊樣式表的 3 種類型

但是,層疊樣式表(也就是 CSS)還有其他三種形式。它們分別是 持久 的,首選 的和 可選 的。

持久樣式 指的是始終啟用的 CSS 樣式,并與活動樣式表結合在一起。為了指定持久樣式表,需要將 rel = "stylesheet" 屬性添加到你的 link 標簽,并跳過 title 屬性。

這就是你指定一個樣式表的常規方式。

  1. <!-- Persistent Style Sheet --> 
  2. <link src = "style.css" rel = "stylesheet" 

首選樣式 是頁面加載完成后啟用的默認樣式。要創建它,請向你的 CSS link 標簽添加 title 屬性。

  1. <!-- Alternate Style Sheet (just add a title) --> 
  2. <link src = "dark.css" 
  3.       rel = "stylesheet" 
  4.     title = "dark" /> 

可選樣式 可以實時切換來更改頁面主題,而無需重新加載頁面。

  1. <!-- Dark Mode Alternate Style Sheet --> 
  2. <link src = "dark.css" 
  3.     title = "dark" /> 
  4.       rel = "alternate stylesheet" /> 
  5. <!-- Light Mode Alternate Style Sheet --> 
  6. <link src = "light.css" 
  7.     title = "light" 
  8.       rel = "alternate stylesheet" /> 

為了創建可選樣式表,你要做的就是將 link 標簽中的 rel 屬性設置為“alternate stylesheet”。就這樣即可。這只是第一步。現在我們需要編寫一個腳本來切換樣式表。

在樣式表之間動態切換

我在做相關研究時,在網上發現了不少有些年頭的可選樣式表 JavaScript 函數。但是它們有點過時了,所以我自己寫了一個版本。

最重要的是,你需要在要啟用的可選樣式表對象上將屬性 disabled 設置為 false。

  1. <!-- Switch to a named alternate stylesheet --> 
  2. function setActiveStyleSheet(title) { 
  3.     let css = `link[rel="alternate stylesheet"]`; 
  4.     let stylesheets = document.querySelectorAll(css); 
  5.     stylesheets.forEach(sheet => sheet.disabled = true); 
  6.     let selector = `link[title="${title}"]`; 
  7.     let stylesheet = document.querySelector(selector); 
  8.     stylesheet.disabled = false

要動態切換到新樣式表上,首先你必須禁用所有可用的可選樣式表。如果你沒能做到這一點,則會發現你的可選樣式表不起作用(無法切換)。因此,在這個函數的第一步中,我們禁用了所有可用的可選樣式表。完成后,我們啟用了 title 參數中指定的那個。

  1. <!-- Attach event to a button --> 
  2.     let DarkModeButton = document.getElementById("DarkModeButton"); 
  3.     DarkModeButton.addEventListener("click", 
  4.         event => setActiveStyleSheet("darkmode")); 

你可以將 setActiveStyleSheet 函數作為回調附加到負責切換它的按鈕的“click”事件上。請注意,上面的示例假設我們有一個 title = "darkmode" 的樣式表。或者,你可以直接在元素上直接使用 onclick 屬性即可:

  1. <div id = "DarkModeButton" 
  2. onclick = "setActiveStyleSheet('darkmode')"> 

就動態切換 CSS 樣式表需要的工作來說,到這里就都完成了。但是還有一件事!如果用戶在選擇其他主題之后離開站點,則需要確保當用戶返回時網站加載了他們最后選擇的那個主題。這可以使用 cookie 來實現,但是在本教程中,我將使用 HTML5 localStorage 來完成它。

記憶所選主題

我們可以使用 localStorage 來記住用戶之前所選擇的主題。這里的代碼是直截了當的。每次選擇主題時,我們都會將其標題名稱存儲在名為 "theme" 的 localStorage 項目中。下面我們來更新上一步中已經編寫好的那個函數:

  1. <!-- Switch to a named alternate stylesheet --> 
  2. function setActiveStyleSheet(title) { 
  3.     let css = `link[rel="alternate stylesheet"]`; 
  4.     let stylesheets = document.querySelectorAll(css); 
  5.     stylesheets.forEach(sheet => sheet.disabled = true); 
  6.     let selector = `link[title="${title}"]`; 
  7.     let stylesheet = document.querySelector(selector); 
  8.     stylesheet.disabled = false
  9.     localStorage.setItem("theme", title); 

請注意,這里我們添加了一個新的 localStorage 調用。現在,每次切換到一個可選樣式表上時,它將存儲在關鍵字 "theme" 下。

現在,如果用戶離開站點并(在關閉瀏覽器選項卡之后)再次進入站點,我們需要恢復保存在 localStorage 中的默認主題。

為了做到這一點,我們需要從 DOMContentLoaded 事件上讀取本地存儲(時間就在 DOM 加載完畢之后不久),并使用存儲在主題項目中的值來選擇樣式表:

  1. <!-- Switch to a named alternate stylesheet --> 
  2. window.addEventListener('DOMContentLoaded', (event) => { 
  3.     console.log('DOM fully loaded and parsed'); 
  4.     let title = localStorage.getItem("theme"); 
  5.     setActiveStylesheet(title); 
  6. }) 

這樣就搞定啦!現在,你有了一個完整的,可選 CSS 主題的主題選擇器。當然比較困難的部分是制作一套漂亮的 CSS 布局,但這塊內容就等下一篇教程來具體講解吧!

 

責任編輯:趙寧寧 來源: 前端之巔
相關推薦

2012-10-29 11:34:26

IBMdw

2010-08-10 11:08:32

Flex外部樣式表

2010-08-31 09:39:17

CSS樣式表

2011-12-07 12:01:50

ibmdw

2010-08-26 09:16:23

CSS樣式表

2010-09-06 16:09:58

CSS樣式CSS

2010-08-06 14:52:35

FlexCSS層疊樣式表

2012-07-04 15:10:34

ibmdw

2012-07-09 10:11:58

ibmdw

2010-08-26 11:19:31

CSS樣式表

2010-09-14 11:11:09

DIV+CSS樣式表

2010-09-06 14:11:32

CSS

2010-09-03 14:57:33

CSS樣式表CSS

2010-09-07 13:10:48

CSS樣式表CSS

2010-09-03 14:39:53

CSSCSS樣式表

2010-09-06 10:04:31

CSS樣式表

2009-08-26 09:48:14

DIV+CSS樣式表命

2025-05-16 07:00:00

OpenAIChatGPT-4oAI暗黑模式

2019-01-24 16:50:35

Windows 10設備設置應用

2012-02-08 16:22:26

ibmdw
點贊
收藏

51CTO技術棧公眾號

99re久久精品国产| 精品国产三级a∨在线| 香蕉免费毛片视频| 免费看成人吃奶视频在线| 欧美图区在线视频| 国产日韩第一页| 人妻少妇一区二区三区| 天堂成人免费av电影一区| 日韩中文在线中文网三级| 农村末发育av片一区二区| 不卡av影片| 亚洲视频免费看| 国产在线一区二| 中文字幕一区二区久久人妻| 欧美日本免费| 亚洲福利在线看| 日本 片 成人 在线| 牛牛精品在线| 久久久久久久久久久99999| 成人亲热视频网站| 久久久精品免费看| 在线成人直播| 亚洲午夜av久久乱码| 在线观看一区二区三区视频| 日韩中文在线播放| 精品欧美一区二区三区| 裸体大乳女做爰69| a√资源在线| 91网上在线视频| 91国产在线免费观看| 国产一卡二卡三卡| 亚洲欧洲日本mm| 欧美精品一区在线播放| 少妇一级黄色片| 欧美18免费视频| 日韩精品在线看片z| 日韩一区二区三区久久| 亚洲第一影院| 大伊人狠狠躁夜夜躁av一区| 欧美少妇在线观看| 久久五月精品| 亚洲欧洲三级电影| 性欧美大战久久久久久久免费观看 | 黄色片一区二区| 国产真实乱偷精品视频免| 国产精品爽爽ⅴa在线观看| 青青青国产在线| 亚洲精选91| 久久久久久久久久久国产| 免费在线黄色网| 天天做天天爱综合| 久久精品最新地址| 疯狂撞击丝袜人妻| 欧美高清视频在线观看mv| 在线播放国产精品| 蜜桃久久精品成人无码av| 国产区精品区| 一区二区三区国产在线观看| 91中文字幕永久在线| 伊人久久大香线蕉综合网站| 亚洲国产欧美一区二区三区久久| 男男一级淫片免费播放| 久久久伦理片| 日韩成人在线电影网| 亚洲av网址在线| 西瓜成人精品人成网站| 精品亚洲夜色av98在线观看| 精品少妇人妻一区二区黑料社区 | 亚洲国产私拍精品国模在线观看| 久久国产劲爆∧v内射| 国产精品17p| 日韩精品福利在线| 亚洲黄色免费视频| 色婷婷亚洲mv天堂mv在影片| 久久久www成人免费精品| 天天鲁一鲁摸一摸爽一爽| 中文字幕一区二区三区乱码图片 | 国产精品自拍av| 99久久无色码| 天堂中文字幕在线| 日本一区二区综合亚洲| 国产精品久久成人免费观看| 日本高清成人vr专区| 亚洲成人自拍偷拍| 成人精品视频一区二区| 亚洲91在线| 精品成人一区二区三区四区| 大又大又粗又硬又爽少妇毛片 | 99re成人精品视频| 久久久水蜜桃| 免费在线看黄| 亚洲午夜一区二区三区| 人妻有码中文字幕| 日韩在线电影| 亚洲精品www久久久| 在线观看日本中文字幕| 中出一区二区| 欧美一区二三区| 97视频免费在线| 成人免费av网站| 先锋影音网一区| 91美女主播在线视频| 欧美亚洲一区三区| 亚洲成a人无码| 欧美日中文字幕| 欧美疯狂xxxx大交乱88av| 国产成人无码av| 国产美女一区二区| 日本一区美女| 美女精品视频| 7777精品伊人久久久大香线蕉经典版下载| 性活交片大全免费看| 99久久精品费精品国产风间由美| 性欧美xxxx| 99精品在线看| 欧美激情一区二区在线| av免费观看大全| 日韩第二十一页| 亚洲精品第一国产综合精品| 在线看的片片片免费| 性欧美videos另类喷潮| 99久久精品免费看国产一区二区三区 | 在线观看亚洲欧美| 国产麻豆午夜三级精品| 日韩中文字幕av在线| 手机在线观看av| 欧美一级电影网站| 永久免费未视频| 石原莉奈一区二区三区在线观看| 国产精品一区二区欧美黑人喷潮水 | 国产亚洲观看| 中文字幕精品在线| 免费又黄又爽又猛大片午夜| 99久久99久久久精品齐齐| 青青在线视频免费观看| 久久久久久久久成人| 中文字幕最新精品| 国产精品第6页| 久久久国产精华| 国产男女无遮挡| 国产精品白丝一区二区三区| 欧美激情在线视频二区| 国产黄色小视频在线观看| 亚洲欧美在线视频| 国产成人在线综合| 99国产精品一区二区| 国产精品视频免费观看www| 国产尤物视频在线| 日韩欧美在线观看视频| 午夜一区二区三区免费| 亚洲专区免费| 久久99精品久久久久久三级| 激情黄产视频在线免费观看| 亚洲国产成人精品久久久国产成人一区 | 高清一区在线观看| 成人黄色av| 国产美女91呻吟求| 69xxx在线| 精品少妇一区二区三区视频免付费| 99精品久久久久| 国产成人在线视频网址| 日韩中文字幕在线免费| 老司机aⅴ在线精品导航| 97色在线播放视频| 色av男人的天堂免费在线| 在线一区二区三区| 国产精品www爽爽爽| 国产综合色在线| 久久亚洲a v| 激情亚洲另类图片区小说区| 2019av中文字幕| 超碰免费在线| 欧美精品精品一区| 国产在线欧美在线| 久久综合九色综合97婷婷| 欧美日韩第二页| 我不卡手机影院| 国产一级精品aaaaa看| 在线一区av| 中文一区二区视频| а√天堂资源在线| 色婷婷av一区| 登山的目的在线| thepron国产精品| 国产九九在线视频| 欧美高清不卡| 你懂的网址一区二区三区| 久久电影天堂| 久久久久久久久久久网站| 你懂的免费在线观看| 欧美精品v国产精品v日韩精品 | 午夜男人的天堂| 日韩在线一二三区| 欧美日韩在线免费观看视频| 噜噜噜天天躁狠狠躁夜夜精品| 国产精品久久久久999| 亚洲夜夜综合| 亚洲色图在线观看| 亚洲国产精品一| 欧洲av在线精品| 精品视频一区二区在线观看| 国产欧美日韩三区| 中文字幕精品视频在线| 日韩高清不卡在线| 欧美男女爱爱视频| 国产精品久久久久久久| 精品欧美一区二区在线观看视频 | 日本在线观看网址| www.亚洲色图| 两性午夜免费视频| 日韩精品免费专区| 精品国产一区三区| 亚洲网色网站| 亚洲日本精品| 中文精品一区二区| 国产一区二区不卡视频在线观看| 美女视频一区| 国产精品久久色| 白浆在线视频| 欧美激情极品视频| 黄色在线论坛| 少妇高潮久久77777| 日本不卡视频一区二区| 欧美精品一区二区久久婷婷| 国产精品久久影视| 欧美日本韩国一区二区三区视频| av一级在线观看| 精品久久久久久久久久久久久久 | 免费在线观看你懂的| 国产成人99久久亚洲综合精品| 制服丝袜中文字幕第一页 | 国产在线视频三区| 裸体在线国模精品偷拍| 国产精品亚洲二区在线观看| 国产亚洲在线观看| 青春草国产视频| 韩国久久久久| 无码 制服 丝袜 国产 另类| 国产精品av一区二区| 国产手机视频在线观看| 伊人成综合网| 国产又粗又大又爽的视频| 欧美第一精品| 五月天av影院| **女人18毛片一区二区| 亚洲在线播放电影| 久久国产成人精品| 在线国产伦理一区| 亚洲网色网站| 国产美女作爱全过程免费视频| 综合亚洲视频| 乱熟女高潮一区二区在线| 韩国在线视频一区| 成人黄色大片网站| 国产日韩欧美| 99视频精品免费| 日本不卡123| 五月花丁香婷婷| 国产美女精品一区二区三区| 亚洲成人av免费观看| 国产99久久久国产精品潘金网站| 亚洲精品乱码久久久久久蜜桃欧美| 成人精品视频.| 国产一级二级视频| 国产亚洲污的网站| 国产精品免费在线视频| 亚洲精品一卡二卡| 国产污视频在线看| 日韩欧美在线观看视频| 一级特黄录像免费看| 日韩精品中文字幕在线一区| 天天干,天天操,天天射| 亚洲午夜未删减在线观看 | 欧美一乱一性一交一视频| 厕沟全景美女厕沟精品| 国产一区二区在线播放| 精品国产亚洲一区二区三区大结局 | 国产亚洲婷婷免费| tube国产麻豆| 精品久久香蕉国产线看观看亚洲| 69亚洲精品久久久蜜桃小说 | 色窝窝无码一区二区三区成人网站| 亚洲黄色www| 五月香视频在线观看| 久久99青青精品免费观看| 中国字幕a在线看韩国电影| 国产主播在线一区| 欧美变态挠脚心| 亚洲一区二区三区午夜| 亚洲无吗在线| 手机看片一级片| 成人黄色国产精品网站大全在线免费观看| 人妻精品久久久久中文字幕| 国产精品萝li| wwwxxx亚洲| 欧美一区三区二区| 国产视频精品久久| 欧美黄色小视频| 欲香欲色天天天综合和网| 国产一区在线播放| 天堂综合网久久| 永久免费看av| 日韩影院免费视频| 国产精品熟妇一区二区三区四区| 久久精品一区四区| 久久久精品91| 欧美无砖专区一中文字| 性插视频在线观看| 美女啪啪无遮挡免费久久网站| 电影一区二区三| 成人免费看片网站| 久久伦理在线| 欧美牲交a欧美牲交aⅴ免费下载| 国产成人aaa| 国产视频精品免费| 在线视频一区二区免费| 午夜视频免费在线| 久久99精品国产99久久6尤物| 欧美极品在线| 欧美二区在线看| aⅴ色国产欧美| 国产伦精品一区二区三区妓女下载| 亚洲国产成人自拍| 福利网址在线观看| 日韩精品极品视频| 2024最新电影在线免费观看| 国产精品一区二区三| 美女久久久久| 国产91对白刺激露脸在线观看| 高清成人免费视频| 欧美成人一二三区| 欧美高清www午色夜在线视频| av在线女优影院| 国产精品91久久| 蜜桃成人av| 黄色一级一级片| 91麻豆国产在线观看| 西西44rtwww国产精品| 日韩精品免费在线播放| 国产传媒在线观看| 精品在线视频一区二区| 99国产精品视频免费观看一公开| 精品国产一二区| 亚洲一区在线视频| 乱色精品无码一区二区国产盗| 久久99久久久久久久噜噜| av日韩在线播放| 久青草视频在线播放| 成人网男人的天堂| 日韩三级视频在线| 日韩国产高清污视频在线观看| 亚洲天堂手机| 日本成人三级| 麻豆精品久久久| 精品女人久久久| 91麻豆精品国产自产在线| 影音先锋中文在线视频| 国产99视频精品免费视频36| 激情综合久久| 人妻丰满熟妇aⅴ无码| 一本一道久久a久久精品| jzzjzzjzz亚洲成熟少妇| 国产中文欧美精品| 欧美三级午夜理伦三级中文幕| 娇妻高潮浓精白浆xxⅹ| 欧美午夜女人视频在线| av中文资源在线| 91久久精品www人人做人人爽| 好看的av在线不卡观看| 成人影视免费观看| 欧美色手机在线观看| 亚洲夜夜综合| 欧美激情www| 久久精品国产在热久久| 亚洲国产成人精品综合99| 日韩av资源在线播放| 欧美精品总汇| 日韩视频在线观看视频| av不卡在线播放| 糖心vlog精品一区二区| 欧美乱大交做爰xxxⅹ性3| 天美av一区二区三区久久| 国产aaaaa毛片| 亚洲夂夂婷婷色拍ww47| 欧美挠脚心网站| 91情侣在线视频| 久久激情综合| 欧美三级免费看| 亚洲全黄一级网站| 久久精品一级| 国产激情在线观看视频| 亚洲精品你懂的| 婷婷五月综合激情| 国产一区二区在线免费| 性高湖久久久久久久久| 玖玖爱免费视频| 中文字幕精品www乱入免费视频| 超碰在线成人| 狠狠操狠狠干视频| 欧美性猛交xxxx富婆|