详解基于vue-cli配置移动端自适应


Posted in Javascript onJanuary 13, 2018

之前写过一篇关于移动端屏幕适配:移动端屏幕适配的解决,今天来聊一聊基于vue-cli配置的移动端屏幕适配问题。

配方还是一样:手淘的 lib-flexible + rem

配置 flexible

安装 lib-flexible

在命令行中运行如下安装:

npm i lib-flexible --save

引入 lib-flexible

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

// main.js
import 'lib-flexible'

添加 meta 标签

在项目根目录的 index.html 中添加如下 meta

<meta name="viewport" content="width=device-width, initial-scale=1.0">

px 转 rem

实际开发中,我们通过设计稿得到的值单位是 px,所以要将 px 转换成 rem 再写进样式中。

将 px 转换成 rem 我们将使用 px2rem 这个工具,它有 webpack 的 loader:px2rem-loader

安装 px2rem-loader

在命令行中运行如下安装:

npm i px2rem-loade --save-dev

配置 px2rem-loade

在 vue-cli 生成的 webpack 配置中,vue-loader 的 options 和其他样式文件 loader 最终是都是由 build/utils.js 里的一个方法生成的。

我们只需在 cssLoader 后再加上一个 px2remLoader 即可,px2rem-loader 的 remUnit 选项意思是 1rem=多少像素,结合 lib-flexible 的方案,我们将 px2remLoader 的 options.remUnit 设置成设计稿宽度的 1/10,这里我们假设设计稿宽为 750px。

// utils.js
var cssLoader = {
 loader: 'css-loader',
 options: {
  minimize: process.env.NODE_ENV === 'production',
  sourceMap: options.sourceMap
 }
}
var px2remLoader = {
 loader: 'px2rem-loader',
 options: {
  remUnit: 75
 }
}
// ...

并放进 loaders 数组中

// utils.js
function generateLoaders(loader, loaderOptions) {
 var loaders = [cssLoader, px2remLoader]
 // ...

修改配置后需要重启,然后我们在组件中写单位直接写 px,设计稿量多少就可以写多少了,舒服多了。

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

Javascript 相关文章推荐
怎么让脚本或里面的函数在所有图片都载入完毕的时候执行
Oct 17 Javascript
javascipt:filter过滤介绍及使用
Sep 10 Javascript
尝试动手制作javascript放大镜效果
Dec 25 Javascript
基于JavaScript实现窗口拖动效果
Jan 18 Javascript
JS中SetTimeout和SetInterval使用初探
Mar 23 Javascript
Vue引入sass并配置全局变量的方法
Jun 27 Javascript
angular6.0使用教程之父组件通过url传递id给子组件的方法
Jun 30 Javascript
webpack优化的深入理解
Dec 10 Javascript
使用pm2部署node生产环境的方法步骤
Mar 09 Javascript
浅谈layer的Icon样式以及一些常用的layer窗口使用方法
Sep 11 Javascript
layui 解决form表单点击无反应的问题
Oct 25 Javascript
javascript设计模式 ? 单例模式原理与应用实例分析
Apr 09 Javascript
javascript用rem来做响应式开发
Jan 13 #Javascript
深入理解ES6之数据解构的用法
Jan 13 #Javascript
详解ES6语法之可迭代协议和迭代器协议
Jan 13 #Javascript
详解如何在React组件“外”使用父组件的Props
Jan 12 #Javascript
vue使用element-ui的el-input监听不了回车事件的解决方法
Jan 12 #Javascript
微信小程序实现的涂鸦功能示例【附源码下载】
Jan 12 #Javascript
js 索引下标之li集合绑定点击事件
Jan 12 #Javascript
You might like
PHP5 的对象赋值机制介绍
2011/08/02 PHP
thinkphp数据查询和遍历数组实例
2014/11/28 PHP
Yii不依赖Model的表单生成器用法实例
2014/12/04 PHP
PHP join()函数用法与实例讲解
2019/03/11 PHP
php输出反斜杠的实例方法
2019/09/19 PHP
php策略模式简单示例分析【区别于工厂模式】
2019/09/25 PHP
php模拟实现斗地主发牌
2020/04/22 PHP
JavaScript Prototype对象
2009/01/07 Javascript
javascript 对象比较实现代码
2009/04/27 Javascript
jquery实现图片左右间隔滚动特效(可自动播放)
2013/05/08 Javascript
JavaScript 操作table,可以新增行和列并且隔一行换背景色代码分享
2013/07/05 Javascript
JS.getTextContent(element,preformatted)使用介绍
2013/09/21 Javascript
JQEasy-ui在IE9以下版本中二次加载的问题分析及处理方法
2014/06/23 Javascript
Nodejs学习笔记之测试驱动
2015/04/16 NodeJs
javascript跨域的方法汇总
2015/10/23 Javascript
前端学习笔记style,currentStyle,getComputedStyle的用法与区别
2016/05/28 Javascript
require、backbone等重构手机图片查看器
2016/11/17 Javascript
ES6新特性之解构、参数、模块和记号用法示例
2017/04/01 Javascript
js Dom实现换肤效果
2017/10/21 Javascript
Vue之mixin全局的用法详解
2018/08/22 Javascript
微信小程序 setData 对 data数据影响问题
2019/04/18 Javascript
nodemon实现Typescript项目热更新的示例代码
2019/11/19 Javascript
微信小程序添加插屏广告并设置显示频率(一天一次)
2019/12/06 Javascript
JavaScript switch语句使用方法简介
2019/12/30 Javascript
[08:04]TI4西雅图DOTA2前线报道 海涛探访各路人马
2014/07/09 DOTA
[02:17]TI4西雅图DOTA2前线报道 啸天mik夫妻档解说
2014/07/08 DOTA
python基于pyDes库实现des加密的方法
2017/04/29 Python
简单易懂的python环境安装教程
2017/07/13 Python
对Python random模块打乱数组顺序的实例讲解
2018/11/08 Python
tensorflow使用range_input_producer多线程读取数据实例
2020/01/20 Python
欧舒丹俄罗斯官方网站:L’OCCITANE俄罗斯
2019/11/22 全球购物
什么样的创业计划书可行性高?
2014/02/01 职场文书
应聘医药销售自荐书范文
2014/02/08 职场文书
优秀党员自我评价范文
2014/09/15 职场文书
生死牛玉儒观后感
2015/06/11 职场文书
元宵节晚会主持词
2015/07/01 职场文书