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 相关文章推荐
AutoSave/自动存储功能实现
Mar 24 Javascript
js 页面关闭前的出现提示的实现代码
May 25 Javascript
jQuery层动画定位滑动效果的方法
Apr 30 Javascript
JS封装通过className获取元素的函数示例
Dec 20 Javascript
JS常见算法详解
Feb 28 Javascript
Angular7创建项目、组件、服务以及服务的使用
Feb 19 Javascript
从0到1构建vueSSR项目之路由的构建
Mar 07 Javascript
Vue自定义全局Toast和Loading的实例详解
Apr 18 Javascript
vue 组件中使用 transition 和 transition-group实现过渡动画
Jul 09 Javascript
微信小程序实现点击图片放大预览
Oct 21 Javascript
weui上传多图片,压缩,base64编码的示例代码
Jun 22 Javascript
详解JS ES6编码规范
May 07 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
模仿OSO的论坛(五)
2006/10/09 PHP
基于magic_quotes_gpc与magic_quotes_runtime的区别与使用介绍
2013/04/22 PHP
php header功能的使用
2013/10/28 PHP
CI框架简单邮件发送类实例
2016/05/18 PHP
PHP封装返回Ajax字符串和JSON数组的方法
2017/02/17 PHP
PHP性能测试工具xhprof安装与使用方法详解
2018/04/29 PHP
javascript 表单验证常见正则
2009/09/28 Javascript
JQuery操作三大控件(下拉,单选,复选)的方法
2013/08/06 Javascript
jquery实现ajax提交form表单的方法总结
2014/03/03 Javascript
绑定回车enter事件代码
2014/05/18 Javascript
node.js中的fs.write方法使用说明
2014/12/15 Javascript
jQuery插件实现控制网页元素动态居中显示
2015/03/24 Javascript
JQuery查找DOM节点的方法
2015/06/11 Javascript
JavaScript基本数据类型及值类型和引用类型
2015/08/25 Javascript
基于JS实现移动端访问PC端页面时跳转到对应的移动端网页
2020/12/24 Javascript
AngularJS入门教程之迭代器过滤详解
2016/08/18 Javascript
基于VUE.JS的移动端框架Mint UI的使用
2017/10/11 Javascript
vue ssr服务端渲染(小白解惑)
2019/11/10 Javascript
vue Treeselect 树形下拉框:获取选中节点的ids和lables操作
2020/08/15 Javascript
[48:31]完美世界DOTA2联赛PWL S3 DLG vs Phoenix 第二场 12.17
2020/12/19 DOTA
python获取一组汉字拼音首字母的方法
2015/07/01 Python
Python构建网页爬虫原理分析
2017/12/19 Python
Python内存读写操作示例
2018/07/18 Python
Python文件常见操作实例分析【读写、遍历】
2018/12/10 Python
Python流程控制语句的深入讲解
2020/06/15 Python
Nike德国官网:Nike.com (DE)
2018/11/13 全球购物
美国购买体育、音乐会和剧院门票网站:SelectATicket
2019/09/08 全球购物
Nike瑞士官网:Nike CH
2021/01/18 全球购物
Java程序员面试90题
2013/10/19 面试题
煤矿班组长岗位职责
2013/12/29 职场文书
创业计划书——互联网商机
2014/01/12 职场文书
管理建议书范文
2014/05/13 职场文书
党员创先争优心得体会
2014/09/11 职场文书
社会体育专业大学生职业生涯规划书
2014/09/17 职场文书
教学反思怎么写
2016/02/24 职场文书
MySQL多表查询机制
2022/03/17 MySQL