广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue实现换肤功能
  • 503
分享到

vue实现换肤功能

2024-04-02 19:04:59 503人浏览 薄情痞子
摘要

公司项目要实现Vue项目换肤功能,要求,考虑到最节省时间的就是写两套CSS,一套light.css,一套dark.css,然后切换css 一、实现思路 切换选中的皮肤状态(light

公司项目要实现Vue项目换肤功能,要求,考虑到最节省时间的就是写两套CSS,一套light.css,一套dark.css,然后切换css

一、实现思路

切换选中的皮肤状态(light,或者dark)存储在sessionStorage中,监听sessionStorage数据变化,切换index.html中引入的css文件

二、实现过程

1、在main.vue添加:

 <p style="display: inline-block;"> 切换主题:</p>
  <RadioGroup v-model="theme" @on-change="changeTheme">
        <Radio label="light"></Radio>
        <Radio label="dark"></Radio>
    </RadioGroup>
    
 //methods:
   changeTheme(){
 //localStorage.setItem('themeColor',this.theme); 
 this.resetSetItem('themeColor', this.theme);
   },

2、main.js添加:(参考网上)

Vue.prototype.resetSetItem = function (key, newVal) {
  if (key === 'themeColor') {

      // 创建一个StorageEvent事件
      var newStorageEvent = document.createEvent('StorageEvent');
      const storage = {
          setItem: function (k, val) {
              sessionStorage.setItem(k, val);

              // 初始化创建的事件
              newStorageEvent.initStorageEvent('setItem', false, false, k, null, val, null, null);

              // 派发对象
              window.dispatchEvent(newStorageEvent)
          }
      }
      return storage.setItem(key, newVal);
  }
}

3.index.html 添加

<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width,initial-scale=1.0">
  //添加默认css
  <link rel="stylesheet" href="./static/css/dark.css">
  <title>xxx</title>
</head>

<body>
  <div id="app"></div>
</body>

</html>

<script>
//在js添加默认引入的dark.css,如果不引入,ivew自带的样式会覆盖在html中引入的dark.css,所以需要在js重新引入,用来覆盖ivew的默认样式
  var link = document.createElement("link");
  link.rel = "stylesheet";
  link.type = "text/css";
  link.href = "./static/css/dark.css";
  var head = document.getElementsByTagName("head")[0];
  head.appendChild(link);
  //监听sessionStorage切换主题
  window.addEventListener('setItem', () => {
    var themeColor = sessionStorage.getItem('themeColor');
    let url = "./static/css/" + themeColor + ".css"
    changeStyles(url);
  })

  function changeStyles(url) {
    var links = document.getElementsByTagName("link")
    console.log(links)
    //替换之前引入的css
    if (links.length != 0) {
      for (var i = 0; i < links.length; i++) {
        // links[i].parentnode.removeChild(links[i]);
        links[i].href = url
      }
    }
    var links = document.getElementsByTagName("link")
    //console.log(links)

  }

</script>

4、效果

三、总结

1、在实现的过程中,发现localStorage数据监听不到,在网上的看到数据存储在sessionStorage中
2、css执行顺序需要注意:页面先渲染index.html中head标签引入的dark.css,main.js引入的iview.css后渲染,因此会覆盖head标签引入的dark.css,所以需要在js标签中重新引入一遍。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: vue实现换肤功能

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

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

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

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

下载Word文档
猜你喜欢
  • vue实现换肤功能
    公司项目要实现vue项目换肤功能,要求,考虑到最节省时间的就是写两套css,一套light.css,一套dark.css,然后切换css 一、实现思路 切换选中的皮肤状态(light...
    99+
    2022-11-13
  • vue如何实现换肤功能
    今天小编给大家分享一下vue如何实现换肤功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。首先我们用vue-element-...
    99+
    2023-07-04
  • vue中怎么实现一个换肤功能
    这篇文章给大家介绍vue中怎么实现一个换肤功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1 色值的选取和原则推荐大家看下蚂蚁金服的设计指引,里面对常见的交互和界面设计有一套不错的指...
    99+
    2022-10-19
  • Android编程实现换肤功能实例
    本文实例讲述了Android编程实现换肤功能的方法。分享给大家供大家参考,具体如下: 本系列专题培训适用范围:初级Android程序员,即有J2SE基础和Android初级水平...
    99+
    2022-06-06
    Android
  • js如何实现网页换肤功能
    小编给大家分享一下js如何实现网页换肤功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!html<!DOCTYPE&nbs...
    99+
    2022-10-19
  • 怎么用jQuery.cookie.js插件实现换肤功能
    本篇内容主要讲解“怎么用jQuery.cookie.js插件实现换肤功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用jQuery.cookie.js插件...
    99+
    2022-10-19
  • QSS样式表实现界面换肤功能
    目录前言一、实现效果二、QSS简介及用法1.什么是QSS2.怎么使用QSS三、QSS用法一:单个控件调用setStyleSheet函数四、QSS用法二:编写单个界面.qss文件的并读...
    99+
    2022-11-13
  • jQuery中如何基于cookie实现换肤功能
    这篇文章将为大家详细讲解有关jQuery中如何基于cookie实现换肤功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体如下:换肤,在你使用QQ、浏览器、酷狗等软件时...
    99+
    2022-10-19
  • 怎么在Android 应用中实现一个换肤功能
    今天就跟大家聊聊有关怎么在Android 应用中实现一个换肤功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Android换肤技术总结背景纵观现在各种Android app,其换肤...
    99+
    2023-05-31
    android roi
  • 分析Android App中内置换肤功能的实现方式
    Android平台api没有特意为换肤提供一套简便的机制,这可能是外国的软件更注重功能和易用,不流行换肤。系统不提供直接支持,只能自行研究。 换肤,可以认为是动态替换资源(文...
    99+
    2022-06-06
    app Android
  • vue-element如何实现动态换肤存储
    目录需要实现的效果原理总结需要实现的效果 选择颜色块或者颜色选择器切换网站主题色,选择主题后保存到本地,下次打开页面是缓存的主题色 原理 根据ElementUI官网的自定义主...
    99+
    2023-05-17
    vue element element换肤存储 动态换肤存储
  • iOS实现换肤功能的简单处理框架(附源码)
    前言 换肤功能是在APP开发过程中遇到的比较多的场景,为了提供更好的用户体验,许多APP会为用户提供切换主题的功能。主题颜色管理涉及到的的步骤有 颜色配置 使用颜色 U...
    99+
    2022-06-03
    ios 换肤 框架
  • JS实现网站换肤
    本文实例为大家分享了JS实现网站换肤的具体代码,供大家参考,具体内容如下 先看效果 1、左侧是待选择的图片列表2、点击对应图片自动为当前网站换背景图片3、为当前选择的图片加个2px...
    99+
    2022-11-13
  • js实现网页换肤
    本文实例为大家分享了js实现网页换肤的具体代码,供大家参考,具体内容如下 效果: 代码: <!DOCTYPE html> <html>     <he...
    99+
    2022-11-13
  • vue+element实现动态换肤的示例代码
    有时候一个项目的主题并不能满足所有人的审美,这时候换肤功能就很友好,本项目基于vue+element实现后台管理项目的换肤功能 1.创建换肤组件 <template>...
    99+
    2022-11-12
  • JavaScript实现换肤效果(换背景)
    本文实例为大家分享了JavaScript实现换肤效果的具体代码,供大家参考,具体内容如下 换肤效果:点击不同图片,更换相应页面背景 实现思路 1、定义一组图片,每个src属性赋值背景...
    99+
    2022-11-12
  • js+css实现换肤效果
    本文实例为大家分享了js+css实现换肤效果的具体代码,供大家参考,具体内容如下 效果图如下: 需求:点击对应小圆点,下面内容颜色跟着改变 主要思路: 1.在css中把对应的样式先...
    99+
    2022-11-13
  • JavaScript CSS优雅实现网页多主题风格换肤功能详解
    目录引言简单列举下一些其它实现方式CSS variable的实现方式var() 函数方案落地一、和UI设计师沟通好各主题的色阶二、将各主题色阶抽离为一个字典对象三、通过js设置sty...
    99+
    2023-02-03
    JavaScript CSS网页多主题风格换肤 JavaScript CSS网页换肤
  • 利用JavaScript怎么编写一个换肤功能
    这篇文章给大家介绍利用JavaScript怎么编写一个换肤功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。原理通过点击事件,获取点击的的图片的信息,在HTML背景图片的路径改变css样式<style>&n...
    99+
    2023-06-06
  • js实现一键换肤效果
    本文实例为大家分享了js实现一键换肤效果的具体代码,供大家参考,具体内容如下 方法1 <!DOCTYPE html> <html lang="en"> &l...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作