当前位置: 首页 > news >正文

网站制作 文案做电子商务网站 语言

网站制作 文案,做电子商务网站 语言,wordpress扫码阅读,衡水网站托管我们经常看到一些网站都有主题切换#xff0c;例如vue官方文档。那他是怎么实现的呢#xff1f; 检查元素#xff0c;发现点击切换时#xff0c;html元素会动态的添加和移除一个class:dark#xff0c;然后页面主题色就变了。仔细想想#xff0c;这要是放在以前#xff0…我们经常看到一些网站都有主题切换例如vue官方文档。那他是怎么实现的呢 检查元素发现点击切换时html元素会动态的添加和移除一个class:dark然后页面主题色就变了。仔细想想这要是放在以前可能要写两套样式就像这样 body {background-color: #fff; } body.dark {background-color: #000; }这写起来得多麻烦啊而且难以维护。 好在我们有CSS变量早在2017年微软宣布Edge浏览器将支持CSS变量现在几乎所有的浏览器都已经支持了这个功能。IE啊这 css变量也是变量就像js一样先声明再读取。 body {--text-color: red; } .box {color: var(--text-color); }已经出来很多年了今天就不详细介绍了有兴趣的推荐阅读 阮一峰老师的《CSS 变量教程》 今天就用vue3项目来写一个基于css变量实现的主题切换demo。 创建一个vue3项目 npm create vuelatest创建一个theme.css文件。 /***默认主题*/ :root {--bg: #fff;--text-color: #000; } /***添加属性用来控制暗黑模式时的样式*/ html[data-themedark] {--bg: #000;--text-color: #fff; }或者像vue文档中一样使用class如下所示 :root {--bg: #fff;--text-color: #000; } html.dark {--bg: #000;--text-color: #fff; }但是如果某个页面内无意中野使用到同名dark这个class可能会造成影响我这里还是用属性。 在main.js中引入一下theme.css。 import ./assets/theme.cssimport { createApp } from vue import App from ./App.vuecreateApp(App).mount(#app)在App.vue style中调用一下变量并动态改变data-theme的值 templatemainp主题切换demo/pbutton clickchange切换/button/main /template scriptlet theme lightconst change () {theme theme light ? dark : lightdocument.documentElement.setAttribute(data-theme, theme)} /scriptstyle scoped main {display: flex;flex-direction: column;align-items: center;justify-content: center;height: 100vh;background-color: var(--bg);color: var(--text-color); } p {margin: 20px 0; } /style看看效果 功能基本上已经实现了再来把这个切换操作封装成一个组件并全局实时共享主题数据。 创建一个useTheme.js用来执行设置属性的操作 import { ref, watchEffect } from vue// 默认用亮色 const theme ref(light)// 每次改变都设置一下 watchEffect(() {document.documentElement.setAttribute(data-theme, theme.value) })export default function useTheme() {return {theme} }创建一个switch-theme.vue组件仅仅用来改变theme的值 templateel-switch v-modeltheme:active-action-iconMoon:inactive-action-iconSunnyactive-color#2f2f2factive-valuedarkinactive-valuelightchangechangeDark/el-switch /templatescript setupimport { Sunny, Moon } from element-plus/icons-vueimport useTheme from ../hooks/useThemeconst { theme } useTheme()const changeDark (data) {theme.value data} /script改一下App.vue文件引入并使用ThemeSwitch组件和useTheme Hook templatemainp主题切换demo/pThemeSwitch/ThemeSwitchp当前主题{{theme}}/p/main /templatescript setupimport ThemeSwitch from ./components/theme-switch.vueimport useTheme from ./hooks/useThemeconst { theme } useTheme() /scriptstyle scoped main {display: flex;flex-direction: column;align-items: center;justify-content: center;height: 100vh;background-color: var(--bg);color: var(--text-color); } p {margin: 20px 0; } /style再看看效果 现在由一个专门的组件用来控制切换主题并且不同组件内也都能共享theme变量了。 最后再优化一下目前默认是亮色切换到暗色以后再刷新页面又会回到亮色可以把theme变量存到localstorage。 修改一下useTheme.js: import { ref, watchEffect } from vue// 从取缓存中取值给个默认值。 const theme ref(localStorage.getItem(theme) || light)// 每次改变都设置一下属性并存到缓存中。 watchEffect(() {document.documentElement.setAttribute(data-theme, theme.value)localStorage.setItem(theme, theme.value) })export default function useTheme() {return {theme} }全部代码见Github
http://www.pierceye.com/news/961898/

相关文章:

  • 创建网站怎么赚钱的视频博客主题wordpress
  • 北京大兴区网站建设如何打造平台
  • 建设公司网站需要多少天棋盘游戏类网站开发
  • 织梦网站logo修改探测器 东莞网站建设
  • 图片网站收录淮北网站建设求职简历
  • 北京建设局投诉网站首页晋江外贸网站建设
  • 如何更改网站模板网站建设这一行业怎样
  • 海口网站排名东网站建设
  • 李连杰做的功夫网站泉州四方网站开发
  • 台州专业网站设计系统简单的购物网站制作
  • 中国建筑信息资讯网网站的优化用什么软件
  • wordpress本地网站打开慢电商网课
  • 仿照别人的网站做违法吗江苏集团网站建设
  • 一家专门做建材的网站找人做个网站大概多少钱
  • 信息展示网站系统网站策划书怎么写
  • 吉木萨尔县建设局网站岳阳网站推广
  • 九宫格网站模板本机网站环境搭建
  • 自学网站建设 难吗企业网站制作公司合肥
  • 网站建设的网页怎么做餐饮装修公司推荐
  • 网站页面是自己做还是使用模板惠州seo外包费用
  • 深圳专业网站建设技术郑州网络推广平台有哪些
  • 网站建设的费用预算怎么查自己名下有没有注册公司
  • 深圳医院网站建设网站产品页模板
  • 文化馆网站建设做直播的网站有哪些
  • 网站首页怎样排版如何把网站放在根目录
  • 昭通网站开发公司企业网站包含的要素
  • 网站手机版下悬浮条怎么做农产品信息网站的建设
  • 有关网站开发的文章做微商网站的软文
  • 做网站公司起什么名字西安官网seo技术
  • zepto网站开发用帝国cms做的网站首页