rem布局原理解析

yizhihongxing

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日

相关文章

  • CSS设计之页面滚动条出现时防止页面跳动的方法

    标题:CSS设计之页面滚动条出现时防止页面跳动的方法 当页面内容过多,超出浏览器可视范围时,会出现滚动条。但是在实际应用中,页面滚动条出现时,页面的布局可能会因为滚动条的出现而发生跳动,影响用户的体验。本文将介绍两种方法,来防止页面出现滚动条时的跳动问题。 方法一:使用vw作为单位 在CSS中使用vw作为单位,将CSS中的所有尺寸都定义为vw,可以确保页面布…

    css 2023年6月10日
    00
  • Vue中对比scoped css和css module的区别

    请看下面的攻略: Vue中对比scoped css和css module的区别 scoped css Vue的scoped css是一种将css限制在组件内部使用的方法。在Vue组件中,可以给style标签添加scoped属性,它会自动将该样式限制在组件内部使用。 <template> <div class="container&…

    css 2023年6月9日
    00
  • IE6下伪类hover失效问题及解决办法

    IE6下伪类hover失效问题及解决办法的完整攻略如下: 1. 问题描述 在IE6浏览器中,当使用伪类:hover控制元素状态时,会出现失效的问题,即鼠标悬停在元素上时,元素状态未发生改变。 2. 原因分析 IE6浏览器不支持:hover伪类的渲染,即鼠标悬停在元素上时无法触发:hover状态的渲染效果。因此,我们需要使用其他的方法来实现元素状态的控制。 3…

    css 2023年6月9日
    00
  • 独行DIV自适应宽度布局CSS实例与应用范围

    独行DIV自适应宽度布局,是指通过把HTML文档中 元素的display属性值设置为inline-block,来实现元素宽度自适应的布局方式。下面是具体的实现步骤: HTML结构 首先需要在HTML文档中定义 元素的结构,以便实现自适应宽度布局。一般情况下,我们可以按照以下结构来定义: <div class="container"&…

    css 2023年6月10日
    00
  • border-radius是向元素添加圆角边框的方法

    “border-radius” 是CSS3中的一个属性,用于创建圆角边框,它可以通过半径来指定圆角的大小。 语法 /*为元素添加统一的圆角*/ border-radius: 10px; /*为元素添加统一的椭圆圆角*/ border-radius: 50%; /*为元素添加不同的圆角*/ border-radius: 10px 30px 20px 60px;…

    css 2023年6月10日
    00
  • react的滑动图片验证码组件的示例代码

    下面就为大家讲解一下“react的滑动图片验证码组件的示例代码”的完整攻略。 1. 引入组件 首先,我们需要安装并引入react滑动图片验证码组件。在命令行中执行以下代码安装: npm install –save react-slide-captcha 在需要使用的页面中引入组件: import SlideCaptcha from ‘react-slide…

    css 2023年6月10日
    00
  • HTML+CSS项目开发经验总结(推荐)

    当我们进行HTML+CSS项目开发时,需要注意以下几点。建议采取以下攻略: 1. 确定开发需求和设计稿 在开始项目开发之前,我们需要对项目需求进行明确和详细的了解,并获取对应的设计稿。根据设计稿制定项目开发计划和排期。 示例1:例如,我们需要开发一个电商网站,我们可以先了解网站需要提供哪些商品,商品的种类和分类,用户注册和登录等需求,并获取电商网站对应的设计…

    css 2023年6月9日
    00
  • VW、VH适配移动端的解决方案与常见问题

    VW、VH适配移动端的解决方案与常见问题 移动端的界面布局在不同机型、不同屏幕大小下的展示效果通常不一致,导致了很多开发者头疼不已,为了解决这个问题,目前比较常见的解决方案之一是使用Viewport Units(视口单位),其中VW和VH比较广泛使用。本文将介绍使用Viewport Units进行移动端适配时的一些常见问题及其解决方案。 Viewport U…

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