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 相关文章推荐
Flash对联广告的关闭按钮讨论
Jan 30 Javascript
JQuery记住用户名密码实现下次自动登录功能
Apr 27 Javascript
浅谈几种常用的JS类定义方法
Jun 08 Javascript
self.attachevent is not a function的解决方法
Apr 04 Javascript
vue实现todolist单页面应用
Apr 11 Javascript
three.js 入门案例详解
Jan 23 Javascript
js实现导航跟随效果
Nov 17 Javascript
JS函数节流和防抖之间的区分和实现详解
Jan 11 Javascript
js中let能否完全替代IIFE
Jun 15 Javascript
js中比较两个对象是否相同的方法示例
Sep 02 Javascript
微信小程序实现滑动操作代码
Apr 23 Javascript
使用jQuery实现购物车
Oct 29 jQuery
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
PHP 日期加减的类,很不错
2009/10/10 PHP
解析用PHP实现var_export的详细介绍
2013/06/20 PHP
二进制交叉权限微型php类分享
2014/02/07 PHP
php文件上传简单实现方法
2015/01/24 PHP
php微信高级接口群发 多客服
2016/06/23 PHP
jquery 查找iframe父级页面元素的实现代码
2011/08/28 Javascript
javaScript实现滚动新闻的方法
2015/07/30 Javascript
jquery左右全屏大尺寸多图滑动效果代码分享
2015/08/28 Javascript
jQuery解析Json实例详解
2015/11/24 Javascript
JavaScript保留关键字汇总
2015/12/01 Javascript
JavaScript学习笔记整理_setTimeout的应用
2016/09/19 Javascript
微信小程序“摇一摇”的实例代码
2017/07/20 Javascript
webstorm和.vue中es6语法报错的解决方法
2018/05/08 Javascript
element-ui 的el-button组件中添加自定义颜色和图标的实现方法
2018/10/26 Javascript
js实现鼠标拖拽缩放div实例代码
2019/03/25 Javascript
JavaScript修改注册表实例代码
2020/01/05 Javascript
解决antd 下拉框 input [defaultValue] 的值的问题
2020/10/31 Javascript
js实现扫雷源代码
2020/11/27 Javascript
Javascript实现单选框效果
2020/12/09 Javascript
深入讲解Python编程中的字符串
2015/10/14 Python
django将图片上传数据库后在前端显式的方法
2018/05/25 Python
使用GitHub和Python实现持续部署的方法
2019/05/09 Python
python将excel转换为csv的代码方法总结
2019/07/03 Python
Django实现微信小程序的登录验证功能并维护登录态
2019/07/04 Python
Django中的cookie和session
2019/08/27 Python
基于Tensorflow批量数据的输入实现方式
2020/02/05 Python
python在不同条件下的输入与输出
2020/02/13 Python
Python 如何实现访问者模式
2020/07/28 Python
利用Python过滤相似文本的简单方法示例
2021/02/03 Python
农林环境专业求职信
2014/03/13 职场文书
2014年大学生四年规划书范文
2014/04/03 职场文书
学校四风问题对照检查材料思想汇报
2014/09/26 职场文书
嘉宾邀请函
2015/01/31 职场文书
Qt自定义Plot实现曲线绘制的详细过程
2021/11/02 Python
详解apache编译安装httpd-2.4.54及三种风格的init程序特点和区别
2022/07/15 Servers
向Spring IOC 容器动态注册bean实现方式
2022/07/15 Java/Android