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 相关文章推荐
jQuery ajax(复习)—Baidu ajax request分离版
Jan 24 Javascript
jquery获取tr中控件值并操作tr实现思路
Mar 27 Javascript
JavaScript简单判断复选框是否选中及取出值的方法
Aug 13 Javascript
Javascript基于AJAX回调函数传递参数实例分析
Dec 15 Javascript
Bootstrap学习系列之使用 Bootstrap Typeahead 组件实现百度下拉效果
Jul 07 Javascript
js实现简易聊天对话框
Aug 17 Javascript
基于js中style.width与offsetWidth的区别(详解)
Nov 12 Javascript
vue+echarts实现可拖动节点的折线图(支持拖动方向和上下限的设置)
Apr 12 Javascript
微信小程序用户授权、位置授权及获取微信绑定手机号
Jul 18 Javascript
vue.js实现双击放大预览功能
Jun 23 Javascript
解决vue中的无限循环问题
Jul 27 Javascript
Canvas跟随鼠标炫彩小球的实现
Apr 11 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
人族 TERRAN 概述
2020/03/14 星际争霸
PHP的SQL注入实现(测试代码安全不错)
2011/02/27 PHP
eaglephp使用微信api接口开发微信框架
2014/01/09 PHP
php实现给图片加灰色半透明效果的方法
2014/10/20 PHP
Yii框架核心组件类实例详解
2019/08/06 PHP
Laravel解决nesting level错误和隐藏index.php的问题
2019/10/12 PHP
jQuery图片预加载 等比缩放实现代码
2011/10/04 Javascript
解决html按钮切换绑定不同函数后点击时执行多次函数问题
2014/05/14 Javascript
日常收藏的jquery技巧
2015/12/02 Javascript
js实现n秒倒计时后才可以点击的效果
2015/12/20 Javascript
js实现C#的StringBuilder效果完整实例
2015/12/22 Javascript
JS功能代码集锦
2016/05/04 Javascript
浅谈jQuery中ajaxPrefilter的应用
2016/08/01 Javascript
JavaScript无操作后屏保功能的实现方法
2017/07/04 Javascript
swiper在angularjs中使用循环轮播失效的解决方法
2018/09/27 Javascript
详解webpack打包时排除其中一个css、js文件或单独打包一个css、js文件(两种方法)
2018/10/26 Javascript
详解Vue webapp项目通过HBulider打包原生APP(vue+webpack+HBulider)
2019/02/02 Javascript
Python实现CET查分的方法
2015/03/10 Python
Python 爬虫模拟登陆知乎
2016/09/23 Python
Django视图之ORM数据库查询操作API的实例
2017/10/27 Python
浅谈Python使用Bottle来提供一个简单的web服务
2017/12/27 Python
Python基于lxml模块解析html获取页面内所有叶子节点xpath路径功能示例
2018/05/16 Python
解决seaborn在pycharm中绘图不出图的问题
2018/05/24 Python
在python 中实现运行多条shell命令
2019/01/07 Python
完美解决jupyter由于无法import新包的问题
2020/05/26 Python
pycharm远程连接vagrant虚拟机中mariadb数据库
2020/06/05 Python
Python计算信息熵实例
2020/06/18 Python
Django实现内容缓存实例方法
2020/06/30 Python
Python Pandas数据分析工具用法实例
2020/11/05 Python
Django model class Meta原理解析
2020/11/14 Python
Html5应用程序缓存(Cache manifest)
2018/06/04 HTML / CSS
日本整理专家Marie Kondo的官方在线商店:KonMari
2020/06/29 全球购物
2014年寒假社会实践活动心得体会
2014/04/07 职场文书
出国留学计划书
2014/04/27 职场文书
2015小学教师德育工作总结
2015/05/12 职场文书
2016年国庆节67周年活动总结
2016/04/01 职场文书