vue项目前端切换主题,vue主题切换方案less

  vue项目前端切换主题,vue主题切换方案less

  最近一直在做主题。我们的主题不是简单地改变颜色或排版,而是一个变化很大的主题。比如主题1和主题2看起来完全不一样,功能甚至不一样。这样的话,切换css是做不到的,所以我想了很久,用了以下两种方法。

  

目录

  动态改变主题的第一种方法:动态组件的第二种方法,路由隔离的总结,基于css的另外两种方法:一套css方法和两个scss动态切换变量。

  

动态改变主题

  首先要解决的是如何知道自己需要展示哪个主题,并且可以动态切换。我选择的方法是queryString。

  我们打开网址的时候,可以把它贴在后面吗?主题=xx,就看这个xx,储存起来。

  

第一种办法:动态组件

  当主题的路线没变,但是组件的风格和功能变了,我们可以再复制一个组件,修改后通过懒加载和动态组件来实现。

  //页面组件

  模板

  差异

  组件:is=themeName /

  /div

  /模板

  脚本

  导出默认值{

  姓名:家,

  组件:{

  theme 1:()=import( @/theme/theme 1/a ),

  theme 2:()=import( @/theme/theme 2/a ),

  },

  计算值:{

  主题名(){

  retun `theme${this。$store.state.themeId} `

  }

  }

  }

  /脚本

  在组件中,我已经将脚本部分分离出来,因为大部分组件在逻辑上是相同的。即使有一些差异,我们也可以直接在主题2的组件中进行更改,以减少对主题1的影响。

  //action.js

  导出默认值{

  名称:“主题1”,

  .

  }

  模板

  div class=theme1/div

  /模板

  脚本

  导入动作自./component action/操作

  action.name=Theme1

  导出默认操作

  /脚本

  样式范围

  /风格

  这样就可以通过子组件的样式作用域来实现样式隔离,功能数据也会被隔离,比如两个子组件中的swiper就不会互相影响。同时,懒加载也降低了首页的加载量。后期再添加新的主题,也不过是画虎为猫而已。

  

第二种办法,路由隔离

  实际上,路由隔离就是主题1写一个路由数组,主题2写一组路由。

  //router.js

  {

  路径:“/theme3”,

  名称:“主题3索引”,

  组件:()=导入(./views/theme3/Index.vue ),

  儿童:[

  {

  路径:“/theme3/entry”,

  名称:“theme3Entry”,

  组件:()=导入(./views/theme3/entry.vue ),

  }

  ]

  }

  这种方法其实是上策。我用这个主要是因为路线变了。比如我之前直接去a.vue,现在前面多了一个入口页面,只能改路线。这种方法还可以实现更好的隔离。

  

总结

  以上两个想法是我对我们目前业务的思考,仅供参考。

  其实两种方法都有一个共同的问题,就是代码冗余。每个组件都不可避免地有前一个主题的代码的一部分。虽然大部分逻辑代码可以拉出来,但是css和template是拉不出来的。

  如果每次都给一个主题添加一个dom和一个功能块,而且每次都用v-if的话,以后代码会更难维护。所以,我选择了按主题分代码。

  

额外补充基于css的两种方法

  

方法一 多套css

  !-中心-

  模板

  获取动态父类名,并多次定义父类。

   div:class= name

  div class= switch v-on:click= Chang()

  {{ className==box ?开灯:关灯 }}

  /div

  /div

  /模板

  脚本

  导出默认值{

  名称:“中心”,

  data() {

  返回{

  类名:“盒子”

  };

  },

  方法:{

  //更改类

  常(){

  this.className===框

  ?(this.className=boxs )

  :(this . class name=" box ");

  }

  },

  };

  /脚本

  样式lang=scss

  当班级为包厢使用女巫的钢性铸铁

  @import ./style/女巫。scss’;

  当班级为盒子使用黑色的钢性铸铁

  @import ./style/黑色。scss’;开关{

  位置:固定;

  top:4px;

  右:10px

  z指数:50;

  宽度:60px

  高度:60px

  背景:# fff

  行高:60px

  边界半径:20%;

  }

  /风格

  每个钢性铸铁文件样式大致相同,只是最外层的父级不一样,分别为。包厢和。盒子

  

方法二 scss动态切换变量

  我自己是分为了2个主要文件来做的

  _变量。半导体色敏传感器变量管理文件

  风险值()为css3中提出的声明样式变量的方法

  风险值(属性名,属性值)注意属性值不能是字符串

  //主题切换

  $bgColor:var( - backgroundColor,rgb(255,255,255));

  $ font color:var(-fontColor,rgb(0,0,0));

  $ bgm color:var(-背景m色,rgb(238,238,238));

  $tableColor:var( - tableColor,rgb(218,218,218));

  $borderColor:var( - borderColor,rgb(238,238,238));

  $tablesColor:var( - tablesColor,rgb(255,255,255));

  $inputColor:var( - inputColor,rgb(255,255,255))

  创建的_变量。半导体色敏传感器文件我在vue。配置。射流研究…进行了一个全局的配置,没有在组件中引入

  css: {

  loaderOptions: {

  //此文件为主题切换文件

  萨斯:{

  前置数据:` @import ./src/styles/_变量。scss’;`,

  },

  },

  },

  公共风格。射流研究…

  这个方法可以去修改定义变量定义的变量

  文档。getelementsbytagname( body )[0]。风格。设置属性(属性名, 替换的属性值f’);

  //主题切换

  const cut=(cutcheack)={

  文档。getelementsbytagname( body )[0]。风格。设置属性(-背景色),cutcheack?# 121212 : # fff );

  文档。getelementsbytagname( body )[0]。风格。设置属性(-fontcolor),cutcheack?# cece ce : # 333 );

  文档。getelementsbytagname( body )[0]。风格。设置属性(-background mcolor),cutcheack?# 333 : # eee );

  文档。getelementsbytagname( body )[0]。风格。设置属性(-表格颜色),cutcheack?# 000 : # d8d 8 );

  文档。getelementsbytagname( body )[0]。风格。设置属性(-表格颜色),cutcheack?# 222 : # fff );

  文档。getelementsbytagname( body )[0]。风格。设置属性(-输入颜色),cutcheack?# 666 : # fff );

  文档。getelementsbytagname( body )[0]。风格。设置属性(-边框颜色),cutcheack?# 666 : # fff );

  };

  导出默认切割;

  组件中使用

  !-首页-

  模板

  div class=home

  埃尔开关v-model= cutcheack active-color= # 333 inactive-color= # 13ce 66 active-text=主题@change=switchs/el-switch

  /div

  /模板

  脚本

  "导入剪切自"././utils/公共样式。js’;

  导出默认值{

  姓名:家,

  data() {

  返回{

  cutcheack: false,//主题切换

  };

  },

  方法:{

  //左侧导航隐藏或显示

  //切换主题

  开关(){

  切(这个。cutcheack);

  },

  },

  };

  /脚本

  样式lang=scss 范围。主页{

  身高:100%;

  宽度:100%;

  背景:$ bgColor。埃尔-容器{

  身高:100%;

  颜色:$字体颜色;

  }

  }

  /风格

  以上就是某视频剪辑软件实现主题切换的多种思路分享的详细内容,更多关于某视频剪辑软件主题切换的资料请关注我们其它相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: