vue中rem的配置的方法示例


Posted in Javascript onAugust 30, 2018

在用vue或react等工具搭建一个移动端项目时,怎样做到自适应呢? 当然选择rem布局比较方便快捷.

开发移动端,我们常常要用到rem+flex,那么vue中如何配置呢,我的做法是这样:

1、在js中统一计算配置

代码如下:

export default function() {
  // var devicePixelRatio = 1;
  // var scale = 1 / devicePixelRatio;
  // document.querySelector('meta[name="viewport"]').setAttribute('content','initial-scale=' + scale + ', maximum-scale=' + scale + ', minimum-scale=' + scale + ', user-scalable=no');
  // 7.5根据设计稿的横向分辨率/100得来
  // alert(document.documentElement.clientWidth)
  var deviceWidth = document.documentElement.clientWidth;
  // var deviceWidth = window.screen.availWidth
  // alert(navigator.userAgent)
  // alert(deviceWidth)
  // console.log(navigator.userAgent)
  if(deviceWidth > 750) {
    // deviceWidth = 750;
    deviceWidth = 7.5 * 50;
  }

  document.documentElement.style.fontSize = deviceWidth / 7.5 + 'px';

  // 禁止双击放大
  document.documentElement.addEventListener('touchstart', function (event) {
    if (event.touches.length > 1) {
      event.preventDefault();
    }
  }, false);
  var lastTouchEnd = 0;
  document.documentElement.addEventListener('touchend', function (event) {
    var now = Date.now();
    if (now - lastTouchEnd <= 300) {
      event.preventDefault();
    }
    lastTouchEnd = now;
  }, false);
}

然后在main.js中引入使用。

vue中rem的配置的方法示例

结构

vue中rem的配置的方法示例

main.js

然后在index.css中设置默认大小:

 vue中rem的配置的方法示例

基础css

index.scss一般也在main.js里面引入:

vue中rem的配置的方法示例

main.js

2、借助px2rem 插件

安装

npm install px2rem-loader lib-flexible --save

在项目入口文件main.js中引入lib-flexible

import 'lib-flexible/flexible.js'

在build下的 utils.js中,找到generateLoaders 方法,在这里添加 。

const px2remLoader = {
loader: 'px2rem-loader',
options: {
remUnit: 37.5
}
}

function generateLoaders (loader, loaderOptions) {
const loaders = [cssLoader, px2remLoader]
if (loader) {
loaders.push({
loader: loader + '-loader',
options: Object.assign({}, loaderOptions, {
sourceMap: options.sourceMap
})
})
}

重启项目,会发现自己设置的px被转为rem 了

vue中rem的配置的方法示例

效果

以上实现转换适用于:

(1)组件中编写的<style></style>下的css

(2)从index.js或者main.js中import ‘../../static/css/reset.css'引入css

(3)在组件的<script type=”text/ecmascript-6″> import ‘../../static/css/reset.css'</script>中引入css

另外的情况不适用:

(1)组件<style></style>中@import “../../static/css/reset.css (可考虑上面(2)、(3)的形式引入)

(2)外部样式:<link rel=”stylesheet” href=”static/css/reset.css”>

(3)元素内部样式:style=”height: 417px; width: 550px;”

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 事件的一些重要说明
Oct 25 Javascript
jQuery中[attribute!=value]选择器用法实例
Dec 31 Javascript
jQuery获取页面及个元素高度、宽度的总结——超实用
Jul 28 Javascript
jQuery Mobile开发中日期插件Mobiscroll使用说明
Mar 02 Javascript
php输出全部gb2312编码内的汉字方法
Mar 04 Javascript
JavaScript ES6中export、import与export default的用法和区别
Mar 14 Javascript
浅析为什么a=&quot;abc&quot; 不等于 a=new String(&quot;abc&quot;)
Oct 25 Javascript
详解vue项目的构建,打包,发布全过程
Nov 23 Javascript
webpack 插件html-webpack-plugin的具体使用
Apr 09 Javascript
Swiper 4.x 使用方法(移动端网站的内容触摸滑动)
May 17 Javascript
javascript使用substring实现的展开与收缩文字功能示例
Jun 17 Javascript
微信小程序开发(三):返回上一级页面并刷新操作示例【页面栈】
Jun 01 Javascript
Vue2实时监听表单变化的示例讲解
Aug 30 #Javascript
vue-swiper的使用教程
Aug 30 #Javascript
分享vue里swiper的一些坑
Aug 30 #Javascript
详解Vue CLI3 多页应用实践和源码设计
Aug 30 #Javascript
小程序图片长按识别功能的实现方法
Aug 30 #Javascript
解决vue中监听input只能输入数字及英文或者其他情况的问题
Aug 30 #Javascript
解决Js先触发失去焦点事件再执行点击事件的问题
Aug 30 #Javascript
You might like
《PHP边学边教》(02.Apache+PHP环境配置――下篇)
2006/12/13 PHP
利用php获取服务器时间的实现代码
2013/06/07 PHP
php使用正则过滤js脚本代码实例
2014/05/10 PHP
php简单实现文件或图片强制下载的方法
2016/12/06 PHP
PHP基于简单递归函数求一个数阶乘的方法示例
2017/04/26 PHP
PHP实现动态添加XML中数据的方法
2018/03/30 PHP
Laravel 加载第三方类库的方法
2018/04/20 PHP
JQuery从头学起第一讲
2010/07/04 Javascript
手把手教你自己写一个js表单验证框架的方法
2010/09/14 Javascript
javascript使用prototype完成单继承
2014/12/24 Javascript
关于JSON与JSONP简单总结
2016/08/16 Javascript
基于JavaScript实现随机颜色输入框
2016/12/10 Javascript
react实现pure render时bind(this)隐患需注意!
2017/03/09 Javascript
Node.JS更改Windows注册表Regedit的方法小结
2017/08/18 Javascript
Angularjs自定义指令实现分页插件(DEMO)
2017/09/16 Javascript
ES6 javascript中class静态方法、属性与实例属性用法示例
2017/10/30 Javascript
js中url对象化管理分析
2017/12/29 Javascript
[56:42]完美世界DOTA2联赛循环赛 Matador vs Forest 第二场 11.06
2020/11/06 DOTA
Python中的True,False条件判断实例分析
2015/01/12 Python
利用Python的Flask框架来构建一个简单的数字商品支付解决方案
2015/03/31 Python
python学习数据结构实例代码
2015/05/11 Python
python实现支持目录FTP上传下载文件的方法
2015/06/03 Python
利用python实现数据分析
2017/01/11 Python
python3实现全角和半角字符转换的方法示例
2017/09/21 Python
Python 随机生成测试数据的模块:faker基本使用方法详解
2020/04/09 Python
python下载的库包存放路径
2020/07/27 Python
css3中单位px,em,rem,vh,vw,vmin,vmax的区别及浏览器支持情况
2016/12/06 HTML / CSS
判断单链表中是否存在环
2012/07/16 面试题
市场总经理岗位职责
2014/04/11 职场文书
大学教师师德师风演讲稿
2014/08/22 职场文书
2014年高三班主任工作总结
2014/12/05 职场文书
中学校园广播稿
2015/08/18 职场文书
聊一聊Redis与MySQL双写一致性如何保证
2021/06/26 Redis
Python道路车道线检测的实现
2021/06/27 Python
阿里云ECS云服务器快照的概念以及如何使用
2022/04/21 Servers
MySQL下载安装配置详细教程 附下载资源
2022/09/23 MySQL