返回顶部
首页 > 资讯 > 精选 >vue怎么实现更换主题功能
  • 656
分享到

vue怎么实现更换主题功能

2023-07-04 13:07:24 656人浏览 泡泡鱼
摘要

这篇文章主要讲解了“Vue怎么实现更换主题功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue怎么实现更换主题功能”吧!方式一:class切换方式实现:在每个需要更换的页面定义多个cla

这篇文章主要讲解了“Vue怎么实现更换主题功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue怎么实现更换主题功能”吧!

方式一:class切换方式

实现:

在每个需要更换的页面定义多个class,根据运行时标识动态的切换class名称实现加载不同的样式,这种方式较为简单

优点:

  • 不需要修改构建工具相关

  • 业务开发过程可以实现,没有限制

  • 支持动态切换

缺点:

  • 逻辑分散耦合在各个页面,一旦需要修改,涉及修改的页面较多

  • 代码需要预先内置,不支持动态颜色修改

方式二:ElementUI的实现

实现:

对主题涉及的颜色使用特殊值

如:UI需要白色#ffffff色值的时候使用一个相近的特征值颜色 如:#fffffe

// 将默认样式特征值替换为变量,用于多次替换   getStyleTemplate(data) {    const colORMap = {     '#fffffe': 'text_color'    };    Object.keys(colorMap).forEach(key => {     const value = colorMap[key];     data = data.replace(new RegExp(key, 'ig'), value);    });    return data;   },

在代码运行时动态获取到需要修改的颜色值

如: 需要修改#fffffe =》 #ff00ff

// 通过用户操作或者接口,获取到要替换的色值 colors:{     text_color: '#ff00ff'    }

查找页面所有style标签将其色值#fffffe正则匹配出来,替换为 #ff00ff

// 获取默认样式,可以从已加载的 style 中获取也可以从 CSS link 获取   getIndexStyle() {    document.querySelectorAll('style').forEach(item=>{     this.originalStyle += this.getStyleTemplate(item.textContent);    })   },   getCssLink(){     this.get('./cssPath.css').then(JSON=>{       this.originalStyle = this.getStyleTemplate(json.data);     })   }

在页面新加标签style覆盖默认值

// 替换默认样式表,插入 style 标签覆盖样式   writeNewStyle() {    let cssText = this.originalStyle;    log(cssText)    Object.keys(this.colors).forEach(key => {     cssText = cssText.replace(new RegExp('(:|\\s+)' + key, 'g'), '$1' + this.colors[key]);    });    cssText = cssText.replace(/\n/g,'')    if (this.originalStylesheetCount === document.styleSheets.length) {     const style = document.createElement('style');     style.innerText = cssText;     document.head.appendChild(style);    } else {     document.head.lastChild.innerText = cssText;    }   },

优点:

  • 支持动态切换

  • 支持动态色值

  • 不需要内置多份样式

缺点:

  • 业务开发过程中需要对ui给出的色值重定义,业务开发需要有一定的规则

  • 无法修改背景图片

  • 无法对懒加载的样式做处理,需要初始化加载全局所有样式

const ExtractTextPlugin = require('extract-text-webpack-plugin')// 抽离css module: { loaders: [      {//抽离css 通过link加载        test: /\.css$/,        loader: ExtractTextPlugin.extract({         fallback: 'style-loader',         use: 'css-loader'        })      }      ...       plugins: [    new ExtractTextPlugin({     filename: 'css/[name].css'    allChunks: true // 打包所有页面css到同一个css 文件    })  ]
  • 无法动态修改背景图片

方式三:编译时多主题全量构建

实现:

  • 定义多套样式

  • 构建时将多套样式主题作为独立构建入口,构建出主题静态文件css文件

  • 业务运行时动态加载不同的主题文件

优点:

  • 支持动态切换主题

  • 业务开发样式分离

  • 编译时构建性能较好 缺点:

  • 构建工具配置较为复杂,适用单入口应用,对多入口的支持不友好

  • 需要定义全局 less 文件,在入口引入

  • 业务需要额外操作

配合 rel="alternate stylesheet" 可预加载备选主题样式

方式四: 编译时选择性构建

实现:

  • 内置多套皮肤

  • 构建时传入参数,根据不同的构建参数加载不同的主题样式文件

优点:

  • 构建工具配置较为简单,不需要业务做额外操作

  • 多入口应用支持度好

缺点:

  • 不支持动态切换

  • 多个项目需要构建多次,需要构建系统支持

方式五:less动态变量

实现:

  • 修改构建脚本,将所有页面less文件抽到同一个文件中

  • 不编译less,页面直接加载less文件

  • 使用less.js 在客户端编译less 文件

less: {    modifyVars: {},    javascriptEnabled: true   }

优点:

  • 支持动态切换

  • 支持动态色值

缺点:

  • 客户端编译较耗性能/耗时

  • 需要额外加载less.js mini文件size: 131KB

方式六:css变量

实现:

在需要变化的css属性定义变量

:root { --main-bg-color: pink;}body { background-color: var(--main-bg-color);}

在运行时动态的修改变量

document.body.style.setProperty('--primary', '#7F583F');

优点:

  • 浏览器原生支持,无需额外操作

  • 支持动态色值

缺点:

  • 低版本兼容性不好 iOS Safari 9.3、 Android 5、 chrome forAndroid 76

UC、QQ、Baidu 等国内浏览器支持度较差

方式七: import动态加载

实现:

  • 业务中预定义多套主题

  • 运行时根据变量动态加载对应主题

if(a){  import('./thems/a/base.less')}else if(b){   import('./thems/b/base.less')}

优点:

  • 支持动态切换

  • 实现简单

缺点:

  • 不支持动态色值

  • 需要全局定义多套样式表

  • 全局定义 class 无法定义变量在 vue style 中引用变量

方式动态切换动态色值支持变量实现复杂度兼容性性能维护性
class切换方式简单良好良好
ElementUI的实现中等良好一般
编译时多主题全量构建复杂良好一般
编译时选择性构建中等良好良好
less变量复杂良好
css变量中等良好
import动态加载简单良好良好

注:

  • 动态切换:是否支持在运行时切换皮肤

  • 动态设置:是否支持在运行时动态设置皮肤颜色

  • 支持变量:是否可以再全局定义变量 less 文件,然后在不同的页面引用 less,依赖其中的变量,还是需要在全局 less 文件里面定义全局 class

  • 实现复杂度: 需要修改的代码量包括构建工具和业务代码

  • 兼容性: 主流浏览器支持程度

  • 性能:包括代码的首屏加载的 size、切换的速度、切换的时候会不会有闪动

Vue的优点

Vue具体轻量级框架、简单易学、双向数据绑定、组件化、数据和结构的分离、虚拟DOM、运行速度快等优势,Vue中页面使用的是局部刷新,不用每次跳转页面都要请求所有数据和dom,可以大大提升访问速度和用户体验。

感谢各位的阅读,以上就是“vue怎么实现更换主题功能”的内容了,经过本文的学习后,相信大家对vue怎么实现更换主题功能这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: vue怎么实现更换主题功能

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

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

猜你喜欢
  • vue怎么实现更换主题功能
    这篇文章主要讲解了“vue怎么实现更换主题功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue怎么实现更换主题功能”吧!方式一:class切换方式实现:在每个需要更换的页面定义多个cla...
    99+
    2023-07-04
  • vue+element-ui实现主题切换功能
    element-ui提供了自定义主题 自定义主题 一、安装 npm i element-theme -gnpm i element-theme-chalk -Dnpm i https...
    99+
    2024-04-02
  • Vue怎么用CSS变量实现切换主题功能
    本篇内容介绍了“Vue怎么用CSS变量实现切换主题功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  ...
    99+
    2024-04-02
  • Vue UI框架的主题切换功能实现
    目录AntD 的方式1. 创建黑暗主题文件2. 创建切换主题的函数3. 切换主题Quasar 的方式ElementUI 的方式NaiveUI 的方式在如今,很多网页已经可以手动切换明...
    99+
    2022-12-08
    vue主题切换 vue ui框架主题切换
  • 使用vue怎么实现主题切换
    这篇文章给大家介绍使用vue怎么实现主题切换,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。第一种办法:动态组件当主题的路由并没有发生变化,仅是组件内部的样式,功能发生了变化,我们可以将一个组件复制一遍,修改完后,通过懒...
    99+
    2023-06-15
  • 利用JetpackCompose实现主题切换功能
    目录前言color.ktTheme.kt关于compositionLocalOf完整代码前言 新建的Compose项目默认的 Material 主题为我们提供了一...
    99+
    2024-04-02
  • vue实现换肤功能
    公司项目要实现vue项目换肤功能,要求,考虑到最节省时间的就是写两套css,一套light.css,一套dark.css,然后切换css 一、实现思路 切换选中的皮肤状态(light...
    99+
    2024-04-02
  • 怎么使用Vue实现鼠标悬浮更换图片功能
    今天小编给大家分享一下怎么使用Vue实现鼠标悬浮更换图片功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。首先将所有的选中后...
    99+
    2023-07-04
  • vue中怎么实现一个换肤功能
    这篇文章给大家介绍vue中怎么实现一个换肤功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1 色值的选取和原则推荐大家看下蚂蚁金服的设计指引,里面对常见的交互和界面设计有一套不错的指...
    99+
    2024-04-02
  • ubuntu主题怎么更换
    要更改Ubuntu的主题,您可以按照以下步骤进行操作:1. 打开终端。2. 安装 Gnome Tweaks 工具,它允许您更改主题和...
    99+
    2023-08-30
    ubuntu
  • Vue实现答题功能
    1、请求答题接口 2、判断用户是否答对,答对的话跳到下一题,答错的话弹窗告诉用户有错题,请重新答题 <div class="active_title"> ...
    99+
    2024-04-02
  • JavaScript实现更换头像功能
    本文实例为大家分享了JavaScript实现更换头像功能的具体代码,供大家参考,具体内容如下 最主要的是使用jquery的插件 cropper 1、基本使用步骤 1.在 <he...
    99+
    2024-04-02
  • vue如何实现换肤功能
    今天小编给大家分享一下vue如何实现换肤功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。首先我们用vue-element-...
    99+
    2023-07-04
  • Vue怎么使用Less与Scss实现主题切换
    这篇文章主要介绍“Vue怎么使用Less与Scss实现主题切换”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue怎么使用Less与Scss实现主题切换”文章能帮助大家解决问题。一、Less/Scs...
    99+
    2023-07-05
  • windows系统不能更换系统主题怎么办?
    经常使用电脑的我们是否厌倦了那一成不变的系统自带的主题呢?是否想换一个与众不同,却不失优雅的主题呢?但在更换主题时又会遇到这样、那样的问题。以小编的为例。 1、先在网上下载喜欢的系统主题文件,大家可以百度&ldquo...
    99+
    2023-06-16
    windows 主题 系统
  • 怎么使用Vue实现一个tab栏切换功能
    本篇内容介绍了“怎么使用Vue实现一个tab栏切换功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、创建Vue项目首先需要安装Vue C...
    99+
    2023-07-05
  • Vue + Vue-router如何实现同名路由切换数据不更新功能
    这篇文章将为大家详细讲解有关Vue + Vue-router如何实现同名路由切换数据不更新功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在默认情况下, 同名路由之间的...
    99+
    2024-04-02
  • vue中怎么实现directive功能
    这篇文章主要介绍了vue中怎么实现directive功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。构思API<div i...
    99+
    2024-04-02
  • Vue怎么实现支付功能
    这篇“Vue怎么实现支付功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Vue怎么实现支付功能”文章吧。 代码如...
    99+
    2023-07-04
  • 怎么在Linux Mint中更换主题
    这篇文章主要介绍“怎么在Linux Mint中更换主题”,在日常操作中,相信很多人在怎么在Linux Mint中更换主题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么在Linux Mint中更换主题”的疑...
    99+
    2023-06-16
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作