vue中利用scss实现整体换肤和字体大小设置
一、前言
利用Sass预处理实现换肤和字体大小调整。
思路及达到的效果:字体大小的适配使用window.devicePixelRatio的值和需要调整的差量进行控制。页面初始化是的字体适配可以根据devicePixelRatio和css3 media进行适配.
实现方法:1.利用全局变量和bus事件,使用js方式调整字体和颜色(这里暂不讨论);
2.利用scss预处理方式实现
主题更换:使用setAttribute()为html根节点添加属性,根据属性的值再进行不同主题的切换;
字体大小的调整:
第一种方法利用不同的class名调用相应的方法传入不同的参数进行控制,对不同的字体进行差量调整(优点:可以对不同的字体大小进行调整,缺点:class可能会很多);
第二种方法利用一个方法、一个参数进行整体(优点:方法、参数简单,缺点:只能对一种字体大小进行调整).
这里采用第一种方式进行实现。
二、实现步骤
Sass的安装和环境配置不做介绍
demo文件目录:

1.自定义的一些变量
//颜色定义
$background-color-theme: #2474a5;//背景主题颜色默认
$background-color-theme1: red;//背景主题颜色1
$background-color-theme2: #652BF5;//背景主题颜色2
$background-color-theme3: deepskyblue;//背景主题颜色3
$background-color-themesec: #edc148;//背景次要主题颜色
//字体大小定义
$font_size_12:12px;
$font_size_14:14px;
$font_size_16:16px;
$font_size_18:18px;
$font_size_20:20px;
//字体调整的差量
$size:0;
$size_4:1px;
$size_6:2px;
$size_8:3px;
2.使用@mixin封装对应的方法,这些方法都通过@include 方法名(arg) 来实现调用.
@mixin font_color($color){/*通过该函数设置字体颜色,后期方便统一管理;*/
color:$color; //默认时的color
[data-theme="theme1"] & {
color:$font-color-theme1;
}
[data-theme="theme2"] & {
color:$font-color-theme2;
}
[data-theme="theme3"] & {
color:$font-color-theme3;
}
}
@mixin add_size($val,$size){
//这里我的$size分了三种大小分别为1px,2px,3px进行差量增加,再根据不同的dpr来加载不同的css
[data-size="0"][data-dpr="1"] & {
font-size:($val+$size) * 1.8 ;
}
[data-size="4"][data-dpr="1"] & {
font-size:($val+$size_4) * 1.8 ;
}
[data-size="6"][data-dpr="1"] & {
font-size:($val+$size_6) * 1.8 ;
}
[data-size="8"][data-dpr="1"] & {
font-size:($val+$size_8) * 1.8 ;
}
[data-size="0"][data-dpr="2"] & {
font-size:($val+$size) * 1.8 ;
}
[data-size="4"][data-dpr="2"] & {
font-size:($val+$size_4) * 1.8 ;
}
[data-size="6"][data-dpr="2"] & {
font-size:($val+$size_6) * 1.8 ;
}
[data-size="8"][data-dpr="2"] & {
font-size:($val+$size_8) * 1.8 ;
}
[data-size="0"][data-dpr="3"] & {
font-size:($val+$size) * 1.8 ;
}
[data-size="4"][data-dpr="3"] & {
font-size:($val+$size_4) * 1.8 ;
}
[data-size="6"][data-dpr="3"] & {
font-size:($val+$size_6) * 1.8 ;
}
[data-size="8"][data-dpr="3"] & {
font-size:($val+$size_8) * 1.8 ;
}
}
3.字体调整方法的调用




4.主题的更换




根据changeTheme方法传入的参数,改变更节点中data-theme的属性值。当调用到bg_color()方法时使用[]css属性选择器进行'判断'加载对应的样式(其它方法同理)
三、总结
1.字体大小和换肤
2.在设置字体大小时,适配不同分辨率屏幕及初始化字体的适配
2.保存设置操作后,初始化时应该先动态添加根节点的属性data-theme、data-size、data-dpr
vue中利用scss实现整体换肤和字体大小设置的更多相关文章
- vue 中使用sass实现主体换肤
有如下代码要实现换肤功能 <template> <div class="app-root" :class="themeClass"> & ...
- vue中使用echarts,地图上的涟漪特效大小设置
在使用echarts进行开发大屏时,使用到了地图这个组件 我们会根据返回的值来决定涟漪的大小 这时则使用 其它的value为返回的数组,一般格式为[经度,维度,值] 这样就能动态设置效果的大小了
- Vue中利用$emit实现子组件向父组件通信
Vue中利用$emit实现子组件向父组件通信 父组件 <template> <div> <p>我是父组件</p> <child :isShow=& ...
- Android中插件开发篇之----应用换肤原理解析
一.前言 今天又到周末了,感觉时间过的很快呀.又要写blog了.那么今天就来看看应用的换肤原理解析.在之前的一篇博客中我说道了Android中的插件开发篇的基础:类加载器的相关知识.没看过的同学可以转 ...
- 在vue中引入scss
先npm安装stylus和stylus-loader (我安装后,报错提示缺少stylus,所以第一步安装stylus,如果没有提示可省略第一步) 1.到 package.json ----- de ...
- 在vue中使用scss的配置
1.创建一个基于 webpack 模板的新项目 $ vue init webpack myvue 2.在当前目录下,安装依赖 $ cd myvue$ npm install 3.安装sass的依赖包 ...
- vue中利用.env文件存储全局环境变量,以及配置vue启动和打包命令
目录 1,前言 2,.env文件的作用 3,配置.env文件 4,配置启动命令 5,获取.env中的全局变量 5,实际用处 1,前言 分享一下vue项目中利用.env文件存储全局环境变量,以及利于项目 ...
- jquery.cookie中的操作之与换肤
jquery.cookie.js的插件,插件的源代码如下: /** * Cookie plugin * * Copyright (c) 2006 Klaus Hartl (stilbuero.de) ...
- Eclipse背景与字体大小和xml文件中字体大小设置
1.打开window / Preference,弹出Preference面板 2.展开General标签,选中Editors选项,展开. 3.选中 Text Editors,右边出现 TestEd ...
随机推荐
- SpringDataRedis依赖
<dependencies> <dependency> <groupId>junit</groupId> ...
- apue.h报错问题
下载apue.3e后进入make,提示错误如下: collect2: error: exit status Makefile:: recipe for target 'badexit2' failed ...
- Android中如何搭建一个WebServer
今天终于把老大交代的任务搞完了,感觉收获挺多的,所以就写一篇来记录一下吧,首先还是来看一下,老大们的需求 需求: 希望移动端的用户标识(IMEI)和HTML页面的用户标识(Cookie)连接起来,其中 ...
- kubernetes(k8s)集群安全机制RBAC
1.基本概念 RBAC(Role-Based Access Control,基于角色的访问控制)在k8s v1.5中引入,在v1.6版本时升级为Beta版本,并成为kubeadm安装方式下的默认选项, ...
- centos修改、保存文件的详细步骤
[一]修改文件 如果是使用普通用户登录的,需要先切换到管理员用户,打开终端,输入:su,接着按提示输入密码即可:然后使用命令进入需要修改文件的所在目录,常用的几个命令如下: ① cd + 目录名 ② ...
- docker的备份和迁移
备份与迁移 容器保存为镜像 我们可以通过以下命令将容器保存为镜像 docker commit pyg_nginx mynginx pyg_nginx是容器名称 mynginx是新的镜像名称 此镜像的内 ...
- (转)oracle group by 和order by的关系(在一起使用注意事项)
转:http://lzfhope.blog.163.com/blog/static/636399220092554045196/ 环境:oracle 10g单单group by 或者order by本 ...
- Java的poi技术遍历Excel时进行空Cell,空row,判断
/** * 导入信息 */ @Override public List<Object> add(HttpServletRequest request) { // TODO Auto-gen ...
- 浅谈学习selenium的一些知识点的总结
学习自动化测试,先得学习一门语言.自动化对语言要求掌握的程度不深,但必须得会基本的入门语法. 我学习的是python2,简单,易懂,上手快. 每天敲就是了. 我的学习路径是: 先学习一段时间pytho ...
- Win7下使用DbgPrint
在Win7下默认DbgPrint输出信息后,使用DbgView看不到内容. 新建一个reg文件,双击导出就行了. Windows Registry Editor Version 5.00 [HKEY_ ...