关于rem适配的3种常用封装

请看下面的攻略:

关于rem适配的3种常用封装

什么是rem适配?

rem适配是指将页面布局中的px单位转换成rem单位,以此来适配不同尺寸的设备屏幕。通过rem适配可以使页面在不同尺寸的设备上,都能够正常显示。

常用的3种rem适配封装方式

1. 原生js封装

在原生js封装中,我们可以使用window.onresize方法监听屏幕尺寸的变化,然后动态改变html元素的font-size属性值,从而实现rem适配。示例代码如下:

(function (doc, win) {
  const docEl = doc.documentElement
  const resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize'
  const recalc = function () {
    const clientWidth = docEl.clientWidth
    if (!clientWidth) return
    docEl.style.fontSize = 100 * (clientWidth / 750) + 'px'
  }
  recalc()
  win.addEventListener(resizeEvt, recalc, false)
})(document, window)

2. postcss-pxtorem插件

postcss-pxtorem是一款postcss的插件,可以自动将px单位转换成rem单位。我们只需要在项目中使用postcss-pxtorem插件,并设置相应的rem基准值即可。示例代码如下:

/* 在样式中直接写px */
.box {
  width: 100px;
  height: 200px;
}

/* 经过postcss-pxtorem插件编译后自动转换成rem */
.box {
  width: 1.33333333rem;
  height: 2.66666667rem;
}

/* 配置postcss-pxtorem插件 */
module.exports = {
  plugins: {
    'postcss-pxtorem': {
      rootValue: 75, // 设计稿宽度的1/10
      propList: ['*'],
      exclude: /node_modules/i
    }
  }
}

3. lib-flexible库

lib-flexible是一款由阿里巴巴团队开发的移动端rem适配库,可以根据设备的屏幕尺寸动态设置rem基准值,并且支持手淘、支付宝等多个国内知名移动应用。在使用lib-flexible时,我们只需要在页面html中引入flexible.js库即可。示例代码如下:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <script src="/path/to/flexible.js"></script>
</head>
<body>
  <!-- 页面内容 -->
</body>
</html>

总结

通过以上3种rem适配的封装方式,我们可以很方便地实现移动端的适配。其中原生js封装适用于不需要引入插件的简单项目;postcss-pxtorem插件适用于需要使用postcss进行预处理的项目;lib-flexible库适用于对移动端适配有更高需求的项目。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:关于rem适配的3种常用封装 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • 电脑启动不起来怎么办 电脑启动失败解决办法

    电脑启动不起来怎么办? 当我们打开电脑时,电脑无法正常启动,通常会出现蓝屏、黑屏或卡在启动画面等问题。这些问题可能由于硬件故障、软件问题、驱动程序错误或电源供应问题等多种原因引起。 一、硬件相关故障排查 确认电脑是否插上电源插头并通电 检查电脑电源与显示器的连接是否正确 排查电脑是否存在硬件问题,比如硬盘的坏道、内存的损坏等 如果电脑上有外设(如鼠标、键盘、…

    other 2023年6月27日
    00
  • ASP.NET服务器控件的生命周期分析

    ASP.NET服务器控件生命周期分析可以分为以下几个阶段: 1.初始化阶段(Init):在控件被创建后调用,可以进行一些初始化设置,但此时页面对象还未创建,无法访问其属性或方法。2.加载阶段(Load):当页面对象被创建后,控件会调用其加载方法,此时页面对象可以访问,可以在这个阶段对控件进行一些固定的设置。3.重载阶段(PreRender):在页面控件准备完…

    other 2023年6月27日
    00
  • 深度点评五种常见WiFi搭建方案

    @EnableAutoConfiguration是Spring Boot中的一个注解,它的作用是自动配置Spring Boot应用程序所需的所有组件。本文将详细讲解@EnableAutoConfiguration的使用方法和作用,包括注解的使用、配置文件的使用和示例说明。 注解的使用 在Spring Boot应用程序中,可以使用@EnableAutoConf…

    other 2023年5月5日
    00
  • python字符串不可变数据类型

    Python字符串不可变数据类型攻略 在Python中,字符串是不可变的数据类型,这意味着一旦创建了一个字符串对象,就不能修改它的值。下面是关于Python字符串不可变性的详细解释和示例说明。 什么是不可变数据类型? 不可变数据类型是指一旦创建后,其值就不能被修改的数据类型。在Python中,字符串是不可变的,这意味着不能直接修改字符串的字符。 字符串不可变…

    other 2023年8月19日
    00
  • 两万字详解Java Sring String的常见操作以及StringBuffer StringBuilder的区别

    两万字详解Java String 1. String的常见操作 1.1 字符串拼接 Java中,我们可以使用加号+或concat()方法来进行字符串拼接。例如: String str1 = "Hello"; String str2 = "World!"; String str3 = str1 + " &quo…

    other 2023年6月27日
    00
  • element-ui dialog弹窗增加全屏功能(推荐)

    Element-UI Dialog弹窗增加全屏功能攻略 Element-UI是一款基于Vue.js的组件库,提供了丰富的UI组件,其中包括Dialog弹窗组件。本攻略将详细讲解如何给Element-UI Dialog弹窗增加全屏功能。 步骤一:导入Element-UI和Vue.js 首先,确保你已经正确导入了Element-UI和Vue.js。你可以通过以下…

    other 2023年7月29日
    00
  • spring @Transactional 无效的解决方案

    当我们使用Spring中的@Transactional注解来进行事务处理时,可能会出现无效的情况,即@Transactional注解无法起到事务管理的作用,此时我们需要进行解决。下面,我将详细讲解“spring @Transactional 无效的解决方案”的完整攻略。 问题分析 1.开启了事务管理器,但@Transactional注解无效 2.没有开启事务…

    other 2023年6月26日
    00
  • linux中memset的正确用法

    以下是关于Linux中memset函数的正确用法的详细攻略: memset函数简介 memset函数是C语言中的一个函数,用于将一段存空间设置为指定的值。在Linux,memset函数通常用于初始化内存间或清除内存空间。 memset函数的原型如下: void *(void *s, int c, size_t n); 其中,s 是指向要设置的内存空间的指针,…

    other 2023年5月7日
    00
合作推广
合作推广
分享本页
返回顶部