首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

rem js适配

REM(Root EM)在JS中的适配

基础概念

REM是一个相对单位,它相对于根元素(即HTML元素)的字体大小来设置。在CSS中,通过font-size属性来定义根元素的字体大小,之后在其他元素中使用REM单位,可以实现相对于根元素字体大小的缩放。

优势

  1. 响应式设计:通过调整根元素的字体大小,可以轻松实现整个页面的响应式缩放。
  2. 统一度量:REM为整个页面提供了一个统一的度量单位,使得不同元素之间的尺寸关系更加明确和一致。
  3. 易于维护:修改根元素的字体大小,即可影响所有使用REM单位的元素,大大简化了布局调整的工作量。

类型与应用场景

REM主要应用于移动端和响应式网页设计。在这些场景下,需要确保页面在不同设备和屏幕尺寸上都能保持良好的显示效果。通过使用REM单位,可以轻松实现这一目标。

遇到的问题及解决方法

  1. 浏览器默认字体大小不一致:不同浏览器对根元素的默认字体大小可能有所不同。为了解决这个问题,可以在CSS中显式设置根元素的字体大小,例如:html { font-size: 16px; }
  2. 字体大小计算错误:在某些情况下,使用REM单位可能会导致字体大小计算错误。这通常是由于JavaScript动态修改了根元素的字体大小,或者存在其他CSS规则干扰了REM的计算。解决方法是检查并确保根元素的字体大小在整个页面生命周期中保持一致。
  3. 兼容性问题:虽然现代浏览器都支持REM单位,但在一些旧版本的浏览器中可能不支持。为了确保兼容性,可以使用CSS预处理器(如Sass或Less)来自动添加必要的浏览器前缀,或者使用Polyfill库来模拟REM单位的功能。

示例代码

以下是一个简单的示例,展示如何使用REM单位进行响应式布局:

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>REM适配示例</title>
<style>
  /* 设置根元素的字体大小 */
  html {
    font-size: 16px;
  }

  /* 使用REM单位设置元素尺寸 */
  body {
    font-size: 1rem; /* 16px */
    padding: 1rem; /* 16px */
  }

  .container {
    width: 80rem; /* 1280px,在375px宽度的屏幕上占据大部分宽度 */
    margin: 0 auto;
  }

  .box {
    width: 10rem; /* 160px */
    height: 10rem; /* 160px */
    background-color: #f0f0f0;
    margin: 1rem; /* 16px */
  }
</style>
</head>
<body>
<div class="container">
  <div class="box"></div>
  <div class="box"></div>
  <div class="box"></div>
</div>
</body>
</html>

在这个示例中,我们通过设置根元素的字体大小为16px,并使用REM单位来定义其他元素的尺寸。这样,当根元素的字体大小发生变化时(例如,通过JavaScript动态调整),所有使用REM单位的元素都会自动缩放,从而实现响应式布局。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • rem适配布局

    2.使用媒体查询根据不同设备按比例设置html的字体大小,然后页面元素使用rem做尺寸单位,当html字体大小变化,元素尺寸也会发生变化,从而达到等比缩放的适配。...4.1 rem实际开发适配方案 ①按照设计稿与设备宽度的比例,动态计算并设置html根标签的font-size大小; ( 媒体查询) ②CSS中,设计稿元素的宽、高、相对位置等取值,按照同等比例换算为rem...为单位的值; 4.2 rem适配方案技术使用(市场主流) 技术方案1 rem 媒体查询 less 技术方案2 (推荐) flexible.js rem rem实际开发适配方案...rem值 = 页面元素值( px) / html font-size字体大小 rem适配方案2 简洁高效的rem适配方案flexible.js 手机淘宝团队出的简洁高效移动端适配库 我们再也不需要在写不同屏幕的媒体查询...,因为里面js做了处理 它的原理是把当前设备划分为10等份,但是不同设备下,比例还是一致的。

    1.9K30

    rem+css预处理+媒体查询与rem+flexible.js做网页适配

    由于rem是基于html的字体大小,所以我们在不同屏幕大小的时候只需要设置html的font-size即可实现整体控制,以实现页适配 媒体查询 争对不同的屏幕尺寸设置不同的样式 @media mediatype...适配方案 一、 css预处理语言 媒体查询 rem 二、 flexible.js rem 动态设置html标签font-size的大小 案例 如果设计稿是750px 2.假如我们把整个屏幕划分为15等份...(这里的标准是指以哪个尺寸的设计稿算出来的font-size值) rem配合 flexible.js 使用第一种方式有点麻烦 如下代码 很多媒体查询 /* 设置常见屏幕尺寸,修改html文字大小*/ /...10rem / @baseFont } } 每次设计到高宽都要除下font-size 解决办法是通过flexible.js github 它是手机淘宝团队出的简洁高效移动端适配库 我们不需要在写不同屏幕的媒体查询...75px(750px/10)就可以 里面页面元素rem值:页面元素的px值 / 75 剩下的交给flexible.js 如下 html{ font-size: 20px!

    2.1K20

    移动端适配动态rem方案

    # 1 前言 设计师交付给前端开发一张宽度为750px的视觉稿,设计稿上元素的尺寸、颜色、位置等已做过标注,要求工程师工在适配不同屏幕尺寸的设备时采用等比缩放的方案。...使用viewport缩放方案实现页面级的缩放适配。但该方案有个问题,1px的边框在大屏手机被放大后显得很粗,在小屏手机上被缩小后又显得太细。...可以使用动态REM方案。 # 2 原理 在使用单位控制页面元素大小时,可以使用固定单位px,也可以使用相对单位rem。2rem 等于html标签font-size的2倍。...基于这个原理,对于需要适配屏幕等比缩放的元素可以选用rem作为单位,对于不需要等比缩放的元素依旧使用px作为单位。...如果html的font-size 设置为 50*屏幕宽度/设计稿宽度,那么div的宽度就应该是7.5rem了。换算起来就没那么直观了。 # 3 适配代码 <!

    78410

    移动端网页布局适配rem方案小结

    0.75rem; //12÷16=0.75(rem) } 使用rem这个字体单位进行适配,就是利用它作为一个全局字体固定参照单位的特性。...如果改变html元素的字体大小,rem的值也就跟着改变,对应的其他使用rem的布局尺寸,也会跟着改变,从而达到适配的目的,保证比例一致。...rem适配具体实现方案: 设计稿尺寸宽度为750px,如果设计稿是640px,下边js会自动计算rem的值(比如rem:75px -> rem: 64px),具体的尺寸rem不用调整(例如 padding...: 1.5rem,不用调整,这是一个比例大小),对应的元素大小px值会根据新的rem(比如rem: 64px, padding等于 1.5 * 64)改变,从而按照比例适配。...适配 doesn't work properly without JavaScript enabled.

    1.3K40

    移动web开发之rem适配布局

    移动web开发之rem适配布局 方案: 页面布局文字能否随着屏幕大小变化而变化 流式布局和flex布局主要针对于宽度布局,那高度如何布局?...适配方案 让一些不能等比自适应的元素,达到当设备尺寸发生改变的时候,等比例适配当前设备。...4.1 rem实际开发适配方案 按照设计稿与设备宽度的比例,动态计算并设置html根标签的font-size大小;(媒体查询) css中,设计稿元素的宽、高、相对位置等取值,按照同等比例换算为rem...为单位的值; 4.2 rem适配方案技术使用(市场主流) 技术方案一 less 媒体查询 rem 技术方案二(推荐) flexible.js rem 总结: 两种方案现在都存在...方案二更简单 4.3 rem实际开发适配方案一 rem+媒体查询+less技术 1.设计稿常见尺寸宽度 设备 常见宽度 iPhone4.5 640px iphone678 750px android

    1.9K20

    简单粗暴的移动端适配方案 - REM

    原本可能通过百分比/媒体查询等简单手段就可以常见的适配问题,但是对于页面有复杂结构或者视觉上有特殊要求的,就需要通过其他手段来解决了。 ?...3.1 JS计算 通过JavaScript读取屏幕宽度,然后根据宽度计算出对应的尺寸并设置根元素的font-size。...使用JS来获取屏幕宽度的好处在于可以100%适配所有的机型宽度,因为其元素的基准尺寸是直接算出来的。...更加详细的实现,感兴趣的同学可以看这片文章:Rem自适应js-优化flexible.js。...4. rem存在的问题 rem作为一种简单粗暴解决不同屏幕下视图的区别的一种方案,它可以解决本文出现的问题以及绝大多数移动端适配屏幕尺寸的问题。

    1.4K10

    移动web开发(5)之rem适配布局

    虽然说子盒子为弹性容器的时候,虽然是没有行内元素和块级元素的区别了,但是当里面没有内容的时候,设置了大小也还是不生效的.案例自己做的时候发现也没那么麻烦啦,只是刚学习了新的知识点 , 所以写起来还是比较慢的. 01 rem...单位 rem(root em)是一个相对单位,类似于em,em是父元素字体大小....不同的是rem的基准是相对于html元素的字体大小.比如,根元素(html)设置font-size=12px;非根元素设置width:2rem,则换成px表示就是24px.也就是说rem这个单位之看html...实现元素动态大小变化 rem单位是跟着html来走的,有了rem页面元素可以设置不同大小尺寸,媒体查询可以根据不同设备宽度来修改样式,媒体查询+rem就可以实现不同设备宽度,实现页面元素大小的动态变化...,使用媒体查询修改通过判断屏幕的大小改变html字体的大小 让文字垂直居中利用的是line-height,这里也可以 不定死,用rem单位,将line-height设置成height一样就可以. <

    1.2K30

    简单粗暴的移动端适配方案 - REM

    原本可能通过百分比/媒体查询等简单手段就可以常见的适配问题,但是对于页面有复杂结构或者视觉上有特殊要求的,就需要通过其他手段来解决了。 ?...3.1 JS计算 通过JavaScript读取屏幕宽度,然后根据宽度计算出对应的尺寸并设置根元素的font-size。...使用JS来获取屏幕宽度的好处在于可以100%适配所有的机型宽度,因为其元素的基准尺寸是直接算出来的。...更加详细的实现,感兴趣的同学可以看这片文章:Rem自适应js-优化flexible.js。...4. rem存在的问题 rem作为一种简单粗暴解决不同屏幕下视图的区别的一种方案,它可以解决本文出现的问题以及绝大多数移动端适配屏幕尺寸的问题。

    2K101
    领券