iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >Vue怎么用CSS变量实现切换主题功能
  • 234
分享到

Vue怎么用CSS变量实现切换主题功能

2024-04-02 19:04:59 234人浏览 独家记忆
摘要

本篇内容介绍了“Vue怎么用CSS变量实现切换主题功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  

本篇内容介绍了“Vue怎么用CSS变量实现切换主题功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

Vue怎么用CSS变量实现切换主题功能

  可行性测试

  为了检验方法的可行性,在public文件夹下新建一个themes文件夹,并在themes文件夹新建一个default.css文件:

  :root{

  --color:red;

  }

  在public文件夹的index.html文件中引入外部样式theme.css,如下:

  <!DOCTYPEhtml>

  <html>

  <head>

  <metacharset="utf-8">

  <metaHttp-equiv="X-UA-Compatible"content="IE=edge">

  <metaname="viewport"content="width=device-width,initial-scale=1.0">

  <linkrel="icon"href="<%=BASE_URL%>favicon.ico">

  <title>vue-skin-peeler-demo</title>

  <!--引入themes文件夹下的default.css-->

  <linkrel="stylesheet"type="text/css"href="src/themes/default.css"rel="externalnofollow">

  </head>

  <body>

  <noscript>

  <strong>We'resorrybutvue-skin-peeler-demodoesn'tworkproperlywithoutjavascriptenabled.Pleaseenableittocontinue.</strong>

  </noscript>

  <divid="app"></div>

  <!--builtfileswillbeautoinjected-->

  </body>

  </html>

  然后,在Home.vue中使用CSS变量:

  <template>

  <div>

  <div:class="$style.demo">变红色</div>

  </div>

  </template>

  <script>

  exportdefault{

  name:'home'

  }

  </script>

  <stylemodule>

  .demo{

  color:var(--color);

  }

  </style>

  然后,运行项目并在浏览器中打开页面,页面显示效果正常。

  注意:@vue/cli使用link标签引入css样式可能报错“We'resorrybutvue-skin-peeler-demodoesn'tworkproperlywithoutJavaScriptenabled.Pleaseenableittocontinue.”。这是因为@vue/cli将src目录下的文件都通过webpack打包所引起,所以,静态文件资源要放在public(如果是@vue/cli2.x版本放在static)文件夹下。

  实现主题切换

  这里主题切换的思路是替换link标签的href属性,因此,需要写一个替换函数,在src目录下新建themes.js文件,代码如下:

  //themes.js

  constcreateLink=(()=>{

  let$link=null

  return()=>{

  if($link){

  return$link

  }

  $link=document.createElement('link')

  $link.rel='stylesheet'

  $link.type='text/css'

  document.querySelector('head').appendChild($link)

  return$link

  }

  })()

  

  consttoggleTheme=(theme='default')=>{

  const$link=createLink()

  $link.href=`./themes/${theme}.css`

  returntheme

  }

  exportdefaulttoggleTheme

  然后,在themes文件下创建default.css和dark.css两个主题文件。创建CSS变量,实现主题化。CSS变量实现主题切换请参考另一篇文章初次接触css变量

  兼容性

  IE浏览器以及一些旧版浏览器不支持CSS变量,因此,需要使用css-vars-ponyfill,是一个ponyfill,可在旧版和现代浏览器中为CSS自定义属性(也称为“CSS变量”)提供客户端支持。由于要开启watch监听,所以还有安装MutationObserver.js。

  安装:

  npminstallcss-vars-ponyfillmutationobserver-shim--save

  然后,在themes.js文件中引入并使用:

  //themes.js

  import'mutationobserver-shim'

  importcssVarsfrom'css-vars-ponyfill'

  cssVars({

  watch:true

  })

  constcreateLink=(()=>{

  let$link=null

  return()=>{

  if($link){

  return$link

  }

  $link=document.createElement('link')

  $link.rel='stylesheet'

  $link.type='text/css'

  document.querySelector('head').appendChild($link)

  return$link

  }

  })()

  

  consttoggleTheme=(theme='default')=>{

  const$link=createLink()

  $link.href=`./themes/${theme}.css`

  returntheme

  }

  exportdefaulttoggleTheme

  开启watch后,在IE11浏览器点击切换主题开关不起作用。因此,每次切换主题时都重新执行cssVars(),还是无法切换主题,原因是开启watch后重新执行cssVars()是无效的。最后,只能先关闭watch再重新开启。成功切换主题的themes.js代码如下:

  //themes.js

  import'mutationobserver-shim'

  importcssVarsfrom'css-vars-ponyfill'

  constcreateLink=(()=>{

  let$link=null

  return()=>{

  if($link){

  return$link

  }

  $link=document.createElement('link')

  $link.rel='stylesheet'

  $link.type='text/css'

  document.querySelector('head').appendChild($link)

  return$link

  }

  })()

  

  consttoggleTheme=(theme='default')=>{

  const$link=createLink()

  $link.href=`./themes/${theme}.css`

  cssVars({

  watch:false

  })

  setTimeout(function(){

  cssVars({

  watch:true

  })

  },0)

  returntheme

  }

  exportdefaulttoggleTheme

“Vue怎么用CSS变量实现切换主题功能”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: Vue怎么用CSS变量实现切换主题功能

本文链接: https://www.lsjlt.com/news/88673.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue怎么用CSS变量实现切换主题功能
    本篇内容介绍了“Vue怎么用CSS变量实现切换主题功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  ...
    99+
    2024-04-02
  • vue+element-ui实现主题切换功能
    element-ui提供了自定义主题 自定义主题 一、安装 npm i element-theme -gnpm i element-theme-chalk -Dnpm i https...
    99+
    2024-04-02
  • Vue UI框架的主题切换功能实现
    目录AntD 的方式1. 创建黑暗主题文件2. 创建切换主题的函数3. 切换主题Quasar 的方式ElementUI 的方式NaiveUI 的方式在如今,很多网页已经可以手动切换明...
    99+
    2022-12-08
    vue主题切换 vue ui框架主题切换
  • 利用JetpackCompose实现主题切换功能
    目录前言color.ktTheme.kt关于compositionLocalOf完整代码前言 新建的Compose项目默认的 Material 主题为我们提供了一...
    99+
    2024-04-02
  • 使用vue怎么实现主题切换
    这篇文章给大家介绍使用vue怎么实现主题切换,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。第一种办法:动态组件当主题的路由并没有发生变化,仅是组件内部的样式,功能发生了变化,我们可以将一个组件复制一遍,修改完后,通过懒...
    99+
    2023-06-15
  • vue怎么实现更换主题功能
    这篇文章主要讲解了“vue怎么实现更换主题功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue怎么实现更换主题功能”吧!方式一:class切换方式实现:在每个需要更换的页面定义多个cla...
    99+
    2023-07-04
  • 怎么简单实现CSS主题的切换
    这篇文章给大家分享的是有关怎么简单实现CSS主题的切换的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。HTML首先,我们需要包含“按钮”,这些按钮将触发主题根据选择的主题进行切换。(注:你总是可以使这些作为 opt...
    99+
    2023-06-08
  • Vue怎么使用Less与Scss实现主题切换
    这篇文章主要介绍“Vue怎么使用Less与Scss实现主题切换”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue怎么使用Less与Scss实现主题切换”文章能帮助大家解决问题。一、Less/Scs...
    99+
    2023-07-05
  • css如何实现3D切换功能
    这篇文章主要介绍css如何实现3D切换功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!   <!DOCTYPEhtml>   <html>   <...
    99+
    2024-04-02
  • 怎么使用Vue实现一个tab栏切换功能
    本篇内容介绍了“怎么使用Vue实现一个tab栏切换功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、创建Vue项目首先需要安装Vue C...
    99+
    2023-07-05
  • 使用vue怎么实现一个用户登录切换功能
    今天就跟大家聊聊有关使用vue怎么实现一个用户登录切换功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Vue的优点Vue具体轻量级框架、简单易学、双向数据绑定、组件化、数据和结构的...
    99+
    2023-06-14
  • Vue怎么实现裁切图片功能
    今天小编给大家分享一下Vue怎么实现裁切图片功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。效果:1)、安装 vue-cr...
    99+
    2023-06-30
  • vue中如何实现选项卡点击切换且能滑动切换功能
    这篇文章主要介绍vue中如何实现选项卡点击切换且能滑动切换功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体代码如下所述: <div>  &nbs...
    99+
    2024-04-02
  • vue实现主题切换的多种思路分享
    目录动态改变主题 第一种办法:动态组件 第二种办法,路由隔离 总结 额外补充基于css的两种方法方法一 多套css方法二 scss动态切换变量 动态改变主题 首先需要解决的是如何知...
    99+
    2024-04-02
  • Vue项目如何实现切换主题色思路
    目录Vue项目切换主题色思路需求实现效果实现思路总结Vue项目切换主题色思路 需求 用户通过取色器选择自己喜欢的颜色,替换项目中的主题色 实现效果 实现思路 在项目中使用的是les...
    99+
    2023-01-13
    Vue主题色 Vue切换主题色 Vue主题色切换
  • WinForm中怎么实现主题和皮肤切换
    在WinForm中实现主题和皮肤切换通常可以通过以下步骤来实现: 创建多个不同主题或皮肤的样式文件,比如XML文件或INI文件等,...
    99+
    2024-04-08
    winform
  • MySQL主从切换怎么实现
    这篇文章主要介绍“MySQL主从切换怎么实现”,在日常操作中,相信很多人在MySQL主从切换怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL主从切换怎么实现”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-07-02
  • winform多个窗口切换功能怎么实现
    要在WinForm中实现多个窗口切换功能,可以使用以下几种方法:1. 使用多个Form窗体:创建多个Form窗体,并在切换按钮的点击...
    99+
    2023-09-08
    winform
  • Vue使用Less与Scss实现主题切换方法详细讲解
    目录一、Less/Scss变量换肤二、element-UI组件的换肤一、Less/Scss变量换肤 具体实现: 1、初始化vue项目 2、安装插件: npm install styl...
    99+
    2023-02-25
    Vue主题切换 Vue Less Scss实现主题切换
  • Android使用ViewFlipper实现图片切换功能
    今天给大家简单的讲一下Android手势,目前市场上的App中手势的运用比较少。 Android提供了两种手势: ①.Android提供了手势检测,并为手势检测提供了相应的监听器 ②.Android允许开发者添加手势,并提供了相应的API识...
    99+
    2023-05-30
    android viewflipper 图片切换
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作