vue项目中使用rem,在入口文件添加内容操作


Posted in Javascript onNovember 11, 2020

在使用vue-cli搭建好项目框架后,在目录结构的index.html文件中添加一段js代码:

<script>
   window.onload = function () {
  var setRem = function () {
    // UI设计稿的宽度
    var uiWidth = 1200;

    // 移动端屏幕宽度
    var winWidth = document.documentElement.clientWidth;

    // 比率
    var rate = winWidth / uiWidth;

    // 设置html元素的字体大小
    document.documentElement.style.fontSize = rate * 20 + "px"
  };

  setRem();

  window.onresize = function () {
    setRem();
  }
}
</script>

然后在写css就可以将px单位换成rem.

这里设置的比例是20px=1rem,

例如:宽度为100px时,可以直接写成5rem

(function (doc, win) {
  let fn = () => {
   let docEl = doc.documentElement,
    clientWidth = docEl.clientWidth;
   if (!clientWidth) return;
   docEl.style.fontSize = 16 * (clientWidth / 1920) + 'px';
  }
  if (!doc.addEventListener) return;
  win.addEventListener('resize', fn);
  doc.addEventListener('DOMContentLoaded', fn);
 })(document, window);

补充知识:vue 中使用 rem 布局的两种方法

在使用 vue-cli 开发 H5 项目时,需要进行 rem 适配,下面提供两种常用的方法(以 750 设计稿为例),希望对大家有所帮助。

方法一:在 index.html 或者 main.js 中添加以下代码:

const setHtmlFontSize = () => {
 const htmlDom = document.getElementsByTagName('html')[0];
 let htmlWidth = document.documentElement.clientWidth || document.body.clientWidth;
 if (htmlWidth >= 750) {
  htmlWidth = 750;
 }
 if (htmlWidth <= 320) {
  htmlWidth = 320;
 }
 htmlDom.style.fontSize = `${htmlWidth / 7.5}px`;
};
window.onresize = setHtmlFontSize;
setHtmlFontSize();

注: 这里设置的比例是 100px = 1rem,例如:元素宽度为 100px 时,可以直接写成 1rem

方法二:使用 lib-flexible 和 px2rem-loader 自动转换

1、安装插件

npm install lib-flexible --save

npm install px2rem-loader --save-dev

2、配置插件

在入口文件 main.js 中引入 lib-flexible:

vue项目中使用rem,在入口文件添加内容操作

在 build/utils.js 文件中配置 px2rem-loader:

vue项目中使用rem,在入口文件添加内容操作

安装并配置好 lib-flexible 和 px2rem 之后要重启一下项目,才能自动把 px 转换成 rem。

内联的 px 样式不能自动转换。

另外,px 写法上会有些不同,大家可以参考 px2rem 官方介绍,下面简单介绍一下。

1. 直接写 px,编译后会直接转化成 rem;---- 【除下面两种情况,其他长度用这个】

2. 在 px 后面添加 /*no*/,不会转化 px,会原样输出; ---- 【一般 border 用这个】

3. 在 px 后面添加 /*px*/,会根据 dpr 的不同,生成三套代码。---- 【一般 font-size 用这个】

示例代码如下:

/* 编译前 */
.selector {
  width: 150px;
  height: 64px; /*px*/
  font-size: 28px; /*px*/
  border: 1px solid #ddd; /*no*/
}

/* 编译后 */
.selector {
  width: 2rem;
  border: 1px solid #ddd;
}
[data-dpr="1"] .selector {
  height: 32px;
  font-size: 14px;
}
[data-dpr="2"] .selector {
  height: 64px;
  font-size: 28px;
}
[data-dpr="3"] .selector {
  height: 96px;
  font-size: 42px;
}

以上这篇vue项目中使用rem,在入口文件添加内容操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript replace方法与正则表达式
Feb 19 Javascript
js处理表格对table进行修饰
May 26 Javascript
浅谈jQuery的offset()方法及示例分享
Jul 17 Javascript
轻松实现js图片预览功能
Jan 18 Javascript
JS模拟简易滚动条效果代码(附demo源码)
Apr 05 Javascript
JS封装的自动创建表格的实现代码
Jun 15 Javascript
Jquery针对tr td的一些实用操作方法(必看篇)
Oct 05 Javascript
Vue.js常用指令汇总(v-if、v-for等)
Nov 03 Javascript
Vue项目自动转换 px 为 rem的实现方法
Oct 29 Javascript
原生js实现3D轮播图
Mar 21 Javascript
vue2路由方式--嵌套路由实现方法分析
Mar 06 Javascript
react 原生实现头像滚动播放的示例
Apr 21 Javascript
VUE前端从后台请求过来的数据进行转换数据结构操作
Nov 11 #Javascript
Vue 防止短时间内连续点击后多次触发请求的操作
Nov 11 #Javascript
Vue 401配合Vuex防止多次弹框的案例
Nov 11 #Javascript
VUE-ElementUI 自定义Loading图操作
Nov 11 #Javascript
在elementui中Notification组件添加点击事件实例
Nov 11 #Javascript
vue.js+element 默认提示中英文操作
Nov 11 #Javascript
Vue 解决在element中使用$notify在提示信息中换行问题
Nov 11 #Javascript
You might like
main.php
2006/12/09 PHP
Gregarius中文日期格式问题解决办法
2008/04/22 PHP
使用GD库生成带阴影文字的图片
2015/03/27 PHP
Laravel模型事件的实现原理详解
2018/03/14 PHP
laravel5.6 框架操作数据 Eloquent ORM用法示例
2020/01/26 PHP
Javascript模块模式分析
2008/05/16 Javascript
jquery ajax 同步异步的执行示例代码
2010/06/23 Javascript
jquery trim() 功能源代码
2011/02/14 Javascript
仅IE9/10同时支持script元素的onload和onreadystatechange事件分析
2011/04/27 Javascript
非html5实现js版弹球游戏示例代码
2013/09/22 Javascript
把字符串按照特定的字母顺序进行排序的js代码
2014/01/28 Javascript
JavaScript中奇葩的假值示例应用
2014/03/11 Javascript
javascript中加号(+)操作符的一些神奇作用
2014/06/06 Javascript
java和javascript获取word文档的书签位置对比
2014/06/19 Javascript
javascript数组详解
2014/10/22 Javascript
jQuery中hide()方法用法实例
2014/12/24 Javascript
jQuery实现炫酷的鼠标轨迹特效
2015/02/01 Javascript
JQ技术实现注册页面带有校验密码强度
2015/07/27 Javascript
jQuery easyui的validatebox校验规则扩展及easyui校验框validatebox用法
2016/01/18 Javascript
js登录滑动验证的实现(不滑动无法登陆)
2018/01/03 Javascript
jQuery获取随机颜色的实例代码
2018/05/21 jQuery
微信小程序仿美团城市选择
2018/06/06 Javascript
详解微信小程序网络请求接口封装实例
2019/05/02 Javascript
微信小程序websocket实现即时聊天功能
2019/05/21 Javascript
gulp构建小程序的方法步骤
2019/05/31 Javascript
怎么使用javascript深度拷贝一个数组
2019/06/06 Javascript
[00:36]TI7不朽珍藏III——斯温不朽展示
2017/07/15 DOTA
教你用Python脚本快速为iOS10生成图标和截屏
2016/09/22 Python
详解Python Matplotlib解决绘图X轴值不按数组排序问题
2019/08/05 Python
python进度条显示-tqmd模块的实现示例
2020/08/23 Python
社区六一儿童节活动总结
2015/02/11 职场文书
2016应届大学生自荐信模板
2016/01/28 职场文书
投资入股协议书
2016/03/22 职场文书
2016年区委书记抓基层党建工作公开承诺书
2016/03/25 职场文书
Element-ui Layout布局(Row和Col组件)的实现
2021/12/06 Vue.js
MySQL安装失败的原因及解决步骤
2022/06/14 MySQL