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

yizhihongxing

请看下面的攻略:

关于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日

相关文章

  • Win7系统打开网页提示应用程序已被JAVA安全阻止的解决方法

    针对“Win7系统打开网页提示应用程序已被JAVA安全阻止”的问题,以下为解决方法的详细攻略。 问题原因 这个错误通常是因为Java在安全更新中增加了默认的安全设置,不信任在不同来源和网站上执行的应用程序。因此,当你打开一个需要使用Java的网站时,系统就会弹出提示,警告你该网站的应用程序可能存在安全风险,并要求你在运行应用程序之前确认这是你自己预期的。如果…

    other 2023年6月25日
    00
  • C++字符串反转的几种方法

    C++字符串反转的几种方法 在C++中,要反转一个字符串并不是一项难事,本篇文章介绍了一些最常见的字符串反转方法。 方法一:使用reverse函数 C++ STL中的reverse函数可以用来翻转一个字符串。 #include <iostream> #include <algorithm> #include <string&gt…

    other 2023年6月20日
    00
  • 如何理解Vue的作用域插槽的实现原理

    如何理解Vue的作用域插槽的实现原理 Vue的作用域插槽是一种强大的特性,它允许我们在父组件中定义模板,并将子组件的内容插入到模板中的特定位置。这样可以实现更灵活的组件复用和定制化。 实现原理 Vue的作用域插槽的实现原理可以分为以下几个步骤: 父组件定义插槽模板:父组件通过<slot>标签定义插槽模板,并可以在标签中添加属性来指定插槽的名称。 …

    other 2023年8月20日
    00
  • SpringBoot项目读取外置logback配置文件的问题及解决

    当使用Spring Boot项目作为Web应用程序时,日志是不可或缺的。 Spring Boot可以使用Logback作为默认的日志框架,而Logback则可以使用XML或Groovy文件进行配置。但是,在某些情况下,您可能需要将Logback配置文件从应用程序打包的JAR文件中移动到应用程序所在的外部文件夹中。这里提供了一份完整攻略,帮助您解决Spring…

    other 2023年6月25日
    00
  • postgresql高级应用之行转列&汇总求和

    以下是详细讲解“PostgreSQL高级应用之行转列&汇总求和的完整攻略”的标准Markdown格式文本,包含两个示例说明: PostgreSQL高级应用之行转列&汇总求和的完整攻略 PostgreSQL是一款开源的关系型数据库管理系统,支持行转列和汇总求和等高级应用。本攻略将介绍PostgreSQL中行转列和汇总求和的基本用法、常用函数和示…

    other 2023年5月10日
    00
  • C++中的extern声明变量详解

    C++中的extern声明变量详解 什么是extern声明变量 extern关键字用于声明一个变量是在其他文件中定义的,可以在当前文件中使用。其作用是告诉编译器不要在当前文件中寻找这个变量的定义,而在其他文件中寻找。 为什么要使用extern声明变量 当我们在一个项目中使用多个文件时,每个文件都有自己的作用域。如果我们想在多个文件中使用同一个变量,那么就需要…

    other 2023年6月26日
    00
  • Python爬虫实现selenium处理iframe作用域问题

    Python爬虫实现selenium处理iframe作用域问题攻略 在使用Python编写爬虫时,有时候需要处理网页中的iframe(内嵌框架)元素。使用selenium库可以方便地实现对iframe的操作。本攻略将详细介绍如何使用Python爬虫和selenium库来处理iframe作用域问题,并提供两个示例说明。 1. 安装selenium库 首先,确保…

    other 2023年8月20日
    00
  • 手把手教你如何用fiddler抓取手机数据包(ios+android)

    手把手教你如何用Fiddler抓取手机数据包(iOS+Android) 如果你是一名开发者或者测试人员,在某些场景下,需要通过抓包来获取手机端和服务器之间的通信数据,以进行测试和分析。而目前市面上最为流行和实用的抓包工具,非Fiddler莫属。 本教程将以iOS和Android设备为例,演示使用Fiddler进行手机数据包抓取的具体方法。 一、安装Fiddl…

    其他 2023年3月29日
    00
合作推广
合作推广
分享本页
返回顶部