一、前言
利用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 ...
随机推荐
-
php.ini 安全配置
(1) 打开php的安全模式 php的安全模式是个非常重要的内嵌的安全机制,能够控制一些php中的函数,比如system(),同时把很多文件操作函数进行了权限控制,也不允许对某些关键文件的文件,比如/ ...
-
ubuntu12.04安装mysql
首先下载ubuntu 12.04 64位对应的myqsl版本 http://dev.mysql.com/downloads/file/?id=464508 然后按照如下 ...
-
Java 之HashMap.values()方法误用
1.出错 今天在测试代码的时候发现程序报错,看代码才知道是使用HashMap.values()方法的时候出错.因为项目中需要获取Map的值的集合然后进行遍历,所以就很自然的调用了HashMap.val ...
-
一起来学linux:用户与用户组
linux的文件属性以及管理方法和windows是完全不同的,所以学习linux首先来了解下用户以及文件权限是怎么回事 p { margin-bottom: 0.25cm; line-height: ...
-
(转)Ubuntu 12.04 中安装和配置 Java JDK
http://www.cnblogs.com/bluestorm/archive/2012/05/10/2493592.html 先去 Oracle下载Linux下的JDK压缩包,我下载的是jdk-7 ...
-
Django Channels简明实践
1.安装,如果你已经安装django1.9+,那就不要用官方文档的安装指令了,把-U去掉,直接用: sudo pip install channels 2.自定义的普通Channel的名称只能包含a- ...
-
hive的join
第一:在map端产生join mapJoin的主要意思就是,当链接的两个表是一个比较小的表和一个特别大的表的时候,我们把比较小的table直接放到内存中去,然后再对比较大的表格进行m ...
-
hdu 5060 五种情况求圆柱体与球体交
http://acm.hdu.edu.cn/showproblem.php?pid=5060 官方题解http://bestcoder.hdu.edu.cn/给复杂了 实际上用圆柱体与球体体积差的积分 ...
-
ipsec在企业网中的应用(IKE野蛮模式)(转)
from:http://lulu1101.blog.51cto.com/4455468/817954 ipsec在企业网中的应用(IKE野蛮模式) 案例: 本实验采用华为三台F100防火墙,和一台s3 ...
-
sql 字符串函数、数学函数
-- 字符函数:-- 查询结果姓名小写 select lower(ename), sal, job from emp;-- 查询结果姓名大写 select upper(ename), sal, job ...