rem布局原理解析

Rem布局原理解析

在移动端页面开发中,由于设备尺寸的不同,为了适配不同分辨率的设备,我们需要用到不同的布局方法。其中,rem布局是一种比较实用的布局方案。通过本文,我们可以了解到什么是rem布局,以及如何使用rem布局。

什么是rem布局?

rem,全称为“root em”,它是相对于根元素的font-size大小来进行设置元素尺寸的单位。rem布局的原理就是通过改变其根元素的font-size大小来达到整个页面的缩放目的。

一般情况下,我们使用的rem的单位大小为root font size,即根字体大小(html标签的字体大小)。我们可以通过javascript脚本让根字体随着设备宽度的变化而发生变化,从而实现移动端适配。

rem布局的实现方式

方式一:js动态修改html根元素的font-size

function setRem(){
    var whdef = 100/1920;// 表示1920的设计图,使用100PX的默认值,(实际的750的设计图根号为50)
    var wH = window.innerHeight;// 当前窗口的高度
    var wW = window.innerWidth;// 当前窗口的宽度
    var rem = wW * whdef;// 以默认比例值乘以当前窗口宽度,得到该宽度下的相应font-size值
    document.getElementsByTagName("html")[0].style.fontSize = rem + "px";
}

setRem();
window.addEventListener("resize",function(){
    setRem();
})

这段代码中,首先定义了一个计算rem值的函数setRem(),计算公式为 wW * whdef,具体解释如下:

  • whdef是我们自定义的根元素默认比例值,本例中设为100/1920,即1920px宽设计图下,1rem=100px。
  • wW是当前设备的屏幕宽度,即我们现在要适配的窗口大小。
  • 计算出的rem值,在赋值给根元素html标签的font-size属性。

我们在窗口大小变化时,通过事件监听来动态的调整rem的比例值。

方式二:使用第三方库

此外,还有一种更加方便的方式,即使用第三方的库,如flexible.js、amfe-flexible.js等。

以amfe-flexible.js为例,其使用方法如下:

第一步:安装

我们可以通过npm安装该库,在终端中运行以下命令:

npm install amfe-flexible --save-dev

第二步:使用

main.js中引入该库,并调用一次它的init()方法即可。如下所示:

import flexible from 'amfe-flexible'

flexible.init()

在引入该库之后,它会在页面渲染的时候,自动计算出一个rem的比例值,并根据该比例值来设置根元素的font-size。

注意事项

在使用rem布局的时候,需要注意以下几点:

  • 根元素html必须设定font-size。
  • 1rem不应该等于某个具体的像素值,而应该等于视口的宽度 所占的比例值。
  • 使用rem布局时,尽可能将元素宽度、高度、间距等设置为整数类型。这是为了避免一像素问题。
  • 当屏幕的横向尺寸小于375px时,可以使用fixed布局。

示例说明

示例一:使用js动态设置rem的值

设想我们有一个设计稿,宽度为750px,如何使用rem布局来进行适配呢?

首先,我们定义设计稿与rem的转换关系:1rem=100px,即baseSize = 100 / 750 * window.innerWidth;

接着,我们可以通过如下代码来动态设置rem的值:

(function () {
    var baseSize = 100 / 750 * window.innerWidth + 'px';
    document.getElementById('html').style.fontSize = baseSize;
})()

这段代码中,我们首先将设备宽度乘以比例值,计算出一个rem的值,然后将该值通过style属性设置到根元素html上。

示例二:使用amfe-flexible库

amfe-flexible是一个流行的用于设置rem的库,下面是该库的使用方法:

  1. 安装:
npm install amfe-flexible --save
  1. 引入:
import 'amfe-flexible'
  1. 编写:

在写页面的时候,我们可以直接在CSS文件中使用rem单位来进行页面布局:

.s-box {
    width: 2rem;
    height: 1.5rem;
    margin: 0.5rem;
    padding: 0.2rem;
    font-size: .15rem;
    line-height: .2rem;
    border-radius: .2rem;
    box-shadow: 0 1px 1px rgba(0,0,0,.2);
    background: #fff;
}

在上面的代码中,我们使用了rem作为单位,这样就可以实现一个在不同设备上都具有相同尺寸的盒子了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:rem布局原理解析 - Python技术站

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

相关文章

  • clearfix:after清除浮动的用法及测试代码

    当元素设置了浮动之后,该元素在文档中的高度可能会被忽略,导致相邻元素产生不必要的重叠。为了解决这个问题,可以使用“clearfix:after”清除浮动。在下面的文本中,我们将针对“clearfix:after”的使用方法及相应的测试代码进行详细的介绍和说明。 一、什么是clearfix:after? “clearfix:after”是一种在CSS中常见的技…

    css 2023年6月10日
    00
  • CSS布局带来的巨大影响:CSS display属性值

    当我们使用CSS来设计页面布局时,CSS的display属性值可以给我们带来巨大的帮助。在此,我将为大家讲解一些关于CSS布局和display属性的完整攻略。 一、CSS布局基础 在CSS布局中,有很多关键概念需要掌握。其中,盒子模型和定位是常见的两种布局方式。 1.盒子模型 盒子模型是CSS中最基本的概念之一。每一个HTML元素都可以看作是一个盒子,盒子可…

    css 2023年6月10日
    00
  • 2019腾讯暑期实习面试(offer)前端经验

    2019腾讯暑期实习前端经验攻略 一、准备阶段 熟悉面试流程和常见问题:腾讯的前端面试一般包括以下环节:自我介绍、技术问题、项目经验、算法题目等。在准备阶段,需要认真思考自己的经历,总结符合岗位需求的项目经验,预习算法和数据结构的基本知识。同时,可以查询和分析往年的招聘信息和面试体验,了解面试官可能提出的问题。 提前评估自身水平:对于前端开发而言,需要重点掌…

    css 2023年6月9日
    00
  • html中把多余文字转化为省略号的实现方法方法

    实现方法: 在CSS中使用text-overflow:ellipsis; 属性可以把多余的文字自动转化为省略号。需要注意的是,为了使该属性生效,需要同时设置overflow:hidden;和white-space:nowrap;属性。 示例1: <p class="ellipsis">这是一段非常非常长的文字,它可能显示不完&…

    css 2023年6月10日
    00
  • vue做移动端适配最佳解决方案(亲测有效)

    作为网站的作者,我很高兴为大家讲解“vue做移动端适配最佳解决方案”,以下是详细的攻略: 1. Meta标签设置 在Vue项目中,我们可以通过设置viewport的Meta标签来适配不同的手机屏幕大小。 <meta name="viewport" content="width=device-width, initial-s…

    css 2023年6月10日
    00
  • js实现感应鼠标图片透明度变化的方法

    实现感应鼠标图片透明度变化的方法可以通过JavaScript来实现。在下面的攻略中,我将介绍如何使用JavaScript实现该功能的两个示例。 示例一:基础效果 以下是如何实现鼠标滑过时图片透明度变化的基础效果的代码: <!DOCTYPE HTML> <html> <head> <meta charset=&quot…

    css 2023年6月10日
    00
  • 瀑布流的实现方式(原生js+jquery+css3)

    瀑布流是一种常见的页面布局方式,它会随着内容的不断加载,自动填充页面的空白区域,达到良好的视觉效果和用户体验。下面我来详细介绍一下瀑布流的实现方式(原生JS + jQuery + CSS3)。 HTML 结构 首先要有一个类似于如下的 HTML 结构: <div class="waterfall"> <div class…

    css 2023年6月10日
    00
  • 实现CSS圆环的5种方法(小结)

    下面是“实现CSS圆环的5种方法(小结)”完整攻略: 目录 方法一:用border实现圆环 方法二:用box-shadow实现圆环 方法三:用伪元素实现圆环 方法四:用svg和stroke-dasharray实现圆环 方法五:用动画实现圆环 方法一:用border实现圆环 通过CSS的border属性可以实现一个长方形的框,而假如一个元素的圆角半径与边框宽度…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部