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 相关文章推荐
修改js Calendar日历控件 兼容IE9/谷歌/火狐
Jan 04 Javascript
深入探讨JavaScript、JQuery屏蔽网页鼠标右键菜单及禁止选择复制
Jun 10 Javascript
javascript手风琴下拉菜单实现代码
Nov 12 Javascript
JS刷新父窗口的几种方式小结(推荐)
Nov 09 Javascript
js实现滑动到页面底部自动加载更多功能
Feb 15 Javascript
JavaScript实现带有子菜单和控件的slider轮播图效果
Nov 01 Javascript
详解vuex的简单使用
Mar 12 Javascript
JavaScript实现区块链
Mar 14 Javascript
详解Vue项目部署遇到的问题及解决方案
Jan 11 Javascript
vue基础之data存储数据及v-for循环用法示例
Mar 08 Javascript
Vue实现表格批量审核功能实例代码
May 28 Javascript
nuxt.js服务端渲染中axios和proxy代理的配置操作
Nov 06 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 增加了对 .ZIP 文件的读取功能
2006/10/09 PHP
php关联数组快速排序的方法
2015/04/17 PHP
CodeIgniter中使用Smarty3基本配置
2015/06/29 PHP
jquery中show()、hide()和toggle()用法实例
2015/01/15 Javascript
解决angular的$http.post()提交数据时后台接收不到参数值问题的方法
2015/12/10 Javascript
AngularJS进行性能调优的7个建议
2015/12/28 Javascript
微信小程序 ecshop地址三级联动实现实例代码
2017/02/28 Javascript
jQuery插件HighCharts实现2D柱状图、折线图的组合多轴图效果示例【附demo源码下载】
2017/03/09 Javascript
element-ui 限制日期选择的方法(datepicker)
2018/05/16 Javascript
vuejs 切换导航条高亮(路由菜单高亮)的方法示例
2018/05/29 Javascript
vscode中vue-cli项目es-lint的配置方法
2018/07/30 Javascript
js中async函数结合promise的小案例浅析
2019/04/14 Javascript
javascript头像上传代码实例
2019/09/28 Javascript
Vue页面刷新记住页面状态的实现
2019/12/27 Javascript
python实现的udp协议Server和Client代码实例
2014/06/04 Python
Python 的 with 语句详解
2014/06/13 Python
python进阶教程之函数参数的多种传递方法
2014/08/30 Python
理解Python中的类与实例
2015/04/27 Python
利用Anaconda简单安装scrapy框架的方法
2018/06/13 Python
解决Python print输出不换行没空格的问题
2018/11/14 Python
python实现定时压缩指定文件夹发送邮件
2020/12/22 Python
pycharm访问mysql数据库的方法步骤
2019/06/18 Python
Pandas的read_csv函数参数分析详解
2019/07/02 Python
Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件封装函数的方法
2019/09/23 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
2020/07/07 Python
Django celery异步任务实现代码示例
2020/11/26 Python
Django 权限管理(permissions)与用户组(group)详解
2020/11/30 Python
尼克松手表官网:Nixon手表
2019/03/17 全球购物
如何设置Java的运行环境
2013/04/05 面试题
Sql面试题
2013/03/20 面试题
What's the difference between an interface and abstract class? (接口与抽象类有什么区别)
2012/10/29 面试题
高三复习计划
2015/01/19 职场文书
世界卫生日宣传活动总结
2015/02/09 职场文书
争做文明公民倡议书
2019/06/24 职场文书
浅谈移动端中的视口(viewport)的具体使用
2021/04/13 HTML / CSS
九大龙王魂骨,山龙王留下躯干骨,榜首死的最憋屈(被捏碎)
2022/03/18 国漫