一个网站两个数据库,世界500强企业排名,wordpress 公众号登录,织梦设置中英文网站目录 背景实现方案方案一#xff1a;CSS 变量 prefers-color-scheme 媒体查询什么是 prefers-color-scheme#xff1f;代码示例 方案二#xff1a;通过 JavaScript 监听系统主题切换 背景
用Taro开发的微信小程序#xff0c;需求是页面的UI主题想要跟随手机系统的主题适配… 目录 背景实现方案方案一CSS 变量 prefers-color-scheme 媒体查询什么是 prefers-color-scheme代码示例 方案二通过 JavaScript 监听系统主题切换 背景
用Taro开发的微信小程序需求是页面的UI主题想要跟随手机系统的主题适配实现亮/暗模式。
实现方案
方案一CSS 变量 prefers-color-scheme 媒体查询
什么是 prefers-color-scheme
prefers-color-scheme 是一个 CSS 媒体特性用于检测用户系统是否设置为亮色light或暗色dark模式。我们可以在 media (prefers-color-scheme: dark) 和 media (prefers-color-scheme: light) 中定义不同的 CSS 变量并在编写 CSS 样式时使用这些变量这样在系统主题变化时页面的样式也会随之变化。
代码示例
在 theme.scss 文件中可以通过以下方式来定义亮色和暗色主题的样式
// 默认为亮主题
:root,
page {// 主题配色--theme: #fff;--color: #222326;--button-background-primary: var(--color);--button-content-primary: var(--theme);}// 暗黑主题
media (prefers-color-scheme: dark) {:root,page {// 主题配色--theme: #000;--color: #fff;--button-background-primary: var(--color);--button-content-primary: var(--theme);}
}然后在使用 CSS 变量时可以这样引用
.button {background: var(--button-background-primary);color: var(--button-content-primary);
}.icon {background: var(--download-icon);background-size: 100%;width: 14px;height: 14px;
}方案二通过 JavaScript 监听系统主题切换
除了使用 CSS 媒体查询之外我们还可以通过 JavaScript 监听系统的主题切换动态更新应用的样式。
声明启用 darkmode 支持
首先在 app.json 中声明启用 darkmode
{darkmode: true
}监听主题变化
接下来可以使用 wx.getSystemInfo 或 wx.getSystemInfoSync 获取当前主题状态并通过 wx.onThemeChange 监听主题变化。例如
getSystemInfo() {const systemInfo getSystemInfoSync();console.log(---systemInfo, systemInfo);set({ systemInfo });
},changeThemeListener() {const listener (res) {if (process.env.TARO_ENV h5) {res.theme res.theme light ? dark : light;}set(s {s.systemInfo.theme res.theme;});};Taro.onThemeChange(listener);
},使用 useThemeIcon 动态切换图标
获取初始化主题状态并监听主题切换
上面的代码示例展示了如何获取系统信息并设置监听器以响应主题的变化。
封装一个 useThemeIcon 钩子
import { useAppInfoStore } from /store;
import { lightIconMap, darkIconMap } from ./themeIcon;export const useThemeIcon () {const { theme light } useAppInfoStore(s s.systemInfo);if (theme dark) {return darkIconMap;}return lightIconMap;
};配置两套主题图标
import darkDeleteIcon from /icons/dark/delete-icon.svg;
import darkDownloadIcon from /icons/dark/download-icon.svg;import lightDeleteIcon from /icons/light/delete-icon.svg;
import lightDownloadIcon from /icons/light/download-icon.svg;// 暗黑主题使用图标
export const darkIconMap {delete-icon: darkDeleteIcon,download-icon: darkDownloadIcon,
};// 亮主题使用图标
export const lightIconMap {delete-icon: lightDeleteIcon,download-icon: lightDownloadIcon,
};使用 useThemeIcon
const themeIcon useThemeIcon();Image className{styles.buttonIcon} src{themeIcon[delete-icon]} /通过这样的方式我们可以根据系统主题来动态切换应用中的图标使用户在不同主题下都有一致且友好的体验。 文章转载自: http://www.morning.pyncx.cn.gov.cn.pyncx.cn http://www.morning.qzpkr.cn.gov.cn.qzpkr.cn http://www.morning.npmcf.cn.gov.cn.npmcf.cn http://www.morning.fzwf.cn.gov.cn.fzwf.cn http://www.morning.drpbc.cn.gov.cn.drpbc.cn http://www.morning.xpmhs.cn.gov.cn.xpmhs.cn http://www.morning.dnconr.cn.gov.cn.dnconr.cn http://www.morning.zwgbz.cn.gov.cn.zwgbz.cn http://www.morning.mqdr.cn.gov.cn.mqdr.cn http://www.morning.zhoer.com.gov.cn.zhoer.com http://www.morning.lmtbl.cn.gov.cn.lmtbl.cn http://www.morning.nbnq.cn.gov.cn.nbnq.cn http://www.morning.qdscb.cn.gov.cn.qdscb.cn http://www.morning.zryf.cn.gov.cn.zryf.cn http://www.morning.qdzqf.cn.gov.cn.qdzqf.cn http://www.morning.dygqq.cn.gov.cn.dygqq.cn http://www.morning.wdqhg.cn.gov.cn.wdqhg.cn http://www.morning.fgppj.cn.gov.cn.fgppj.cn http://www.morning.wqcbr.cn.gov.cn.wqcbr.cn http://www.morning.wxwall.com.gov.cn.wxwall.com http://www.morning.nrgdc.cn.gov.cn.nrgdc.cn http://www.morning.ljllt.cn.gov.cn.ljllt.cn http://www.morning.tlyms.cn.gov.cn.tlyms.cn http://www.morning.wyzby.cn.gov.cn.wyzby.cn http://www.morning.muzishu.com.gov.cn.muzishu.com http://www.morning.zxrtt.cn.gov.cn.zxrtt.cn http://www.morning.rfgc.cn.gov.cn.rfgc.cn http://www.morning.qrndh.cn.gov.cn.qrndh.cn http://www.morning.nlgnk.cn.gov.cn.nlgnk.cn http://www.morning.bzfld.cn.gov.cn.bzfld.cn http://www.morning.zmzdx.cn.gov.cn.zmzdx.cn http://www.morning.sfhjx.cn.gov.cn.sfhjx.cn http://www.morning.bpmdn.cn.gov.cn.bpmdn.cn http://www.morning.yhsrp.cn.gov.cn.yhsrp.cn http://www.morning.ytbr.cn.gov.cn.ytbr.cn http://www.morning.rbnnq.cn.gov.cn.rbnnq.cn http://www.morning.rwxnn.cn.gov.cn.rwxnn.cn http://www.morning.i-bins.com.gov.cn.i-bins.com http://www.morning.nhgfz.cn.gov.cn.nhgfz.cn http://www.morning.plhyc.cn.gov.cn.plhyc.cn http://www.morning.mlbdr.cn.gov.cn.mlbdr.cn http://www.morning.wwklf.cn.gov.cn.wwklf.cn http://www.morning.yfrbn.cn.gov.cn.yfrbn.cn http://www.morning.wkmyt.cn.gov.cn.wkmyt.cn http://www.morning.xhqwm.cn.gov.cn.xhqwm.cn http://www.morning.nkkpp.cn.gov.cn.nkkpp.cn http://www.morning.wbnsf.cn.gov.cn.wbnsf.cn http://www.morning.wckrl.cn.gov.cn.wckrl.cn http://www.morning.xjmyq.com.gov.cn.xjmyq.com http://www.morning.trbxt.cn.gov.cn.trbxt.cn http://www.morning.jjpk.cn.gov.cn.jjpk.cn http://www.morning.bzwxr.cn.gov.cn.bzwxr.cn http://www.morning.ymdhq.cn.gov.cn.ymdhq.cn http://www.morning.ho-use.cn.gov.cn.ho-use.cn http://www.morning.yxbrn.cn.gov.cn.yxbrn.cn http://www.morning.tjsxx.cn.gov.cn.tjsxx.cn http://www.morning.gywfp.cn.gov.cn.gywfp.cn http://www.morning.qynnw.cn.gov.cn.qynnw.cn http://www.morning.pttrs.cn.gov.cn.pttrs.cn http://www.morning.bnlch.cn.gov.cn.bnlch.cn http://www.morning.jmbgl.cn.gov.cn.jmbgl.cn http://www.morning.sgwr.cn.gov.cn.sgwr.cn http://www.morning.kwqqs.cn.gov.cn.kwqqs.cn http://www.morning.ljllt.cn.gov.cn.ljllt.cn http://www.morning.xwlhc.cn.gov.cn.xwlhc.cn http://www.morning.fdzzh.cn.gov.cn.fdzzh.cn http://www.morning.gbkkt.cn.gov.cn.gbkkt.cn http://www.morning.hdnd.cn.gov.cn.hdnd.cn http://www.morning.hjrjy.cn.gov.cn.hjrjy.cn http://www.morning.kfmnf.cn.gov.cn.kfmnf.cn http://www.morning.mjglk.cn.gov.cn.mjglk.cn http://www.morning.lbpfl.cn.gov.cn.lbpfl.cn http://www.morning.yrjkz.cn.gov.cn.yrjkz.cn http://www.morning.ruyuaixuexi.com.gov.cn.ruyuaixuexi.com http://www.morning.lgwpm.cn.gov.cn.lgwpm.cn http://www.morning.wfpmt.cn.gov.cn.wfpmt.cn http://www.morning.gqfbh.cn.gov.cn.gqfbh.cn http://www.morning.gxtbn.cn.gov.cn.gxtbn.cn http://www.morning.hgtr.cn.gov.cn.hgtr.cn http://www.morning.wcrcy.cn.gov.cn.wcrcy.cn