Vant+postcss-pxtorem 实现浏览器适配功能


Posted in Javascript onFebruary 05, 2021

Rem 布局适配
Vant 中的样式默认使用 px 作为单位,如果需要使用 rem 单位,推荐使用以下两个工具:
postcss-pxtorem 是一款 postcss 插件,用于将单位转化为 rem
lib-flexible 用于设置 rem 基准值
看到最后有惊喜!

一、npm安装

npm install postcss-pxtorem --save

二、新建.postcssrc.js做如下修改

注:
1、以下注释代码开启后运行脚本会出现报错的提示,虽不知道有什么用,注释就好啦。

module.exports = {
 "plugins": {
 	//"postcss-import": {},
  //"postcss-url": {},
  "autoprefixer": {
   browsers: ['Android >= 4.0', 'iOS >= 7']
  },
  "postcss-pxtorem": {
   "rootValue": 32,
   "propList": ["*"]
  }
 }
}

三、新建rem.js

const baseSize = 32
// 设置 rem 函数
function setRem () {
 // 当前页面宽度相对于 750 宽的缩放比例,可根据自己需要修改。
 const scale = document.documentElement.clientWidth / 750
 // 设置页面根节点字体大小
 document.documentElement.style.fontSize = (baseSize * Math.min(scale, 2)) + 'px'
}
// 初始化
setRem()
// 改变窗口大小时重新设置 rem
window.onresize = function () {
 setRem()
}

四、在main.js中引入rem.js

import "./rem.js"

至此,Vant+postcss-pxtorem 实现浏览器适配就完成了。
即可直接在样式中畅快的使用px且自动转换成rem。
等等先别走!!!客官。
以为到这里就结束了吗?NO,往下看还有一份不基于postcss-pxtorem 来实现的rem适配哦。
话不多说直接上代码。

五、新建rem.js并再main.js中引入

(function (doc, win) {
 var docEl = doc.documentElement
 var resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize'
 var recalc = function () {
  var clientWidth = docEl.clientWidth
  if (!clientWidth) return
  if (parseInt(20 * (clientWidth / 320)) > 35) {
   docEl.style.fontSize = 35 + 'px'
  } else {
   docEl.style.fontSize = 20 * (clientWidth / 320) + 'px'
  }
 }
 if (!doc.addEventListener) return
 win.addEventListener(resizeEvt, recalc, false)
 doc.addEventListener('DOMContentLoaded', recalc, false)
})(document, window)

import "./rem.js"

六、添加样式全局变量并使用

// 当前页面宽度相对于 750 宽的缩放比例,可根据自己需要修改。
$rem: (640/750)/40;
body{
	width: $rem * 24rem;
}

到此这篇关于Vant+postcss-pxtorem 实现浏览器适配的文章就介绍到这了,更多相关Vant+postcss-pxtorem 适配内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
JavaScript窗口功能指南之在窗口中书写内容
Jul 21 Javascript
ie 调试javascript的工具
Apr 29 Javascript
JavaScript实现统计文本框Textarea字数增强用户体验
Dec 21 Javascript
node.js中module.exports与exports用法上的区别
Sep 02 Javascript
AngularJS实现DOM元素的显示与隐藏功能
Nov 22 Javascript
Angularjs中的ui-bootstrap的使用教程
Feb 19 Javascript
AngularJS路由切换实现方法分析
Mar 17 Javascript
vue.js实现标签页切换效果
Jun 07 Javascript
vue中el-upload上传图片到七牛的示例代码
Oct 19 Javascript
微信小程序实现日历效果
Dec 28 Javascript
mock.js模拟数据实现前后端分离
Jul 24 Javascript
vue+导航锚点联动-滚动监听和点击平滑滚动跳转实例
Nov 13 Javascript
JavaScript代码实现微博批量取消关注功能
Feb 05 #Javascript
js属性对象的hasOwnProperty方法的使用
Feb 05 #Javascript
关于element的表单组件整理笔记
Feb 05 #Javascript
详解JavaScript中的this指向问题
Feb 05 #Javascript
JavaScript事件概念详解(区分静态注册和动态注册)
Feb 05 #Javascript
详解javascript脚本何时会被执行
Feb 05 #Javascript
前端如何实现动画过渡效果
Feb 05 #Javascript
You might like
php巧获服务器端信息
2006/12/06 PHP
php对接java现实加签验签的实例
2016/11/25 PHP
php简单中奖算法(实例)
2017/08/15 PHP
关于ThinkPHP中的异常处理详解
2018/05/11 PHP
脚本吧 - 幻宇工作室用到js,超强推荐share.js
2006/12/23 Javascript
JavaScript While 循环基础教程
2007/04/05 Javascript
Raphael一个用于在网页中绘制矢量图形的Javascript库
2013/01/08 Javascript
javascript实现切换td中的值
2014/12/05 Javascript
JS和css实现检测移动设备方向的变化并判断横竖屏幕
2015/05/25 Javascript
JavaScript中的对象和原型(一)
2016/08/12 Javascript
基于jQuery的checkbox全选问题分析
2016/11/18 Javascript
Jquery删除css属性的简单方法
2016/12/04 Javascript
详解JavaScript中this的指向问题
2017/01/20 Javascript
微信小程序 两种为对象属性赋值的方式详解
2017/02/23 Javascript
jQuery UI 实例讲解 - 日期选择器(Datepicker)
2017/09/18 jQuery
ES6中Class类的静态方法实例小结
2017/10/28 Javascript
JavaScript this使用方法图解
2020/02/04 Javascript
[36:52]DOTA2真视界:基辅特锦赛总决赛
2017/05/21 DOTA
[54:06]OG vs TNC 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
[00:14]PWL:老朋友Mushi拍VLOG与中国玩家问好
2020/11/04 DOTA
python生成指定尺寸缩略图的示例
2014/05/07 Python
Python 列表list使用介绍
2014/11/30 Python
详细解析Python当中的数据类型和变量
2015/04/25 Python
Python OS模块常用函数说明
2015/05/23 Python
Django组件之cookie与session的使用方法
2019/01/10 Python
Python中断多重循环的思路总结
2019/10/04 Python
Python如何实现机器人聊天
2020/09/10 Python
call在Python中改进数列的实例讲解
2020/12/09 Python
中国综合网上购物商城:苏宁易购
2016/08/09 全球购物
本科毕业生自我鉴定
2013/11/02 职场文书
在校生自我鉴定
2014/01/23 职场文书
勇敢的心观后感
2015/06/09 职场文书
2016年师德师风学习心得体会
2016/01/12 职场文书
2016年小学端午节活动总结
2016/04/01 职场文书
HTML5中 rem适配方案与 viewport 适配问题详解
2021/04/27 HTML / CSS
vue实现简单数据双向绑定
2021/04/28 Vue.js