`

移动端rem单位用法

阅读更多

1.rem(font size of the root element)是指相对于根元素的字体大小的单位,em(font size of the element)是指相对于父元素的字体大小的单位。它们之间其实很相似,只不过一个计算的规则是依赖根元素一个是依赖父元素计算。二者都是相对单位

2.我们现在在切页面布局的使用常用的单位是px,这是一个绝对单位,web app的屏幕适配有很多中做法,例如:流式布局、限死宽度,还有就是通过响应式来做,但是这些方案都不是最佳的解决方法, 例如流式布局的解决方案有不少弊端,它虽然可以让各种屏幕都适配,但是显示的效果极其的不好,因为只有几个尺寸的手机能够完美的显示出视觉设计师和交互最想要的效果,但是目前行业里用流式布局切web app的公司还是挺多的;

流动布局都是通过百分比来定义宽度,但是高度大都是用px来固定住,所以在大屏幕的手机下显示效果会变成有些页面元素宽度被拉的很长,但是高度还是和原来一样,实际显示非常的不协调,这就是流式布局的最致命的缺点,往往只有几个尺寸的手机下看到的效果是令人满意的,其实很多视觉设计师应该无法接受这种效果,因为他们的设计图在大屏幕手机下看到的效果相当于是被横向拉长来一样。

流式布局并不是最理想的实现方式,通过大量的百分比布局,会经常出现许多兼容性的问题,还有就是对设计有很多的限制,因为他们在设计之初就需要考虑流式布局对元素造成的影响,只能设计横向拉伸的元素布局,设计的时候存在很多局限性。

2.固定宽度做法

还有一种是固定页面宽度的做法,早期有些网站把页面设置成320的宽度,超出部分留白,这样做视觉,前端都挺开心,视觉在也不用被流式布局限制自己的设计灵感了,前端也不用在搞坑爹的流式布局。但是这种解决方案也是存在一些问题,例如在大屏幕手机下两边是留白的,还有一个就是大屏幕手机下看起来页面会特别小,操作的按钮也很小,手机淘宝首页起初是这么做的,但近期改版了,采用了rem。

3.响应式做法

响应式这种方式在国内很少有大型企业的复杂性的网站在移动端用这种方法去做,主要原因是工作大,维护性难,所以一般都是中小型的门户或者博客类站点会采用响应式的方法从web page到web app直接一步到位,因为这样反而可以节约成本,不用再专门为自己的网站做一个web app的版本。

4.设置viewport进行缩放

天猫的web app的首页就是采用这种方式去做的,以320宽度为基准,进行缩放,最大缩放为320*1.3 = 416,基本缩放到416都就可以兼容iphone6 plus的屏幕了,这个方法简单粗暴,又高效。说实话我觉得他和用接下去我们要讲的rem都非常高效,不过有部分同学使用过程中反应缩放会导致有些页面元素会糊的情况

rem能等比例适配所有屏幕

上面说过rem是通过根元素进行适配的,网页中的根元素指的是html我们通过设置html的字体大小就可以控制rem的大小。举个例子:

html{

font-size:20px;

}

.btn {

width: 6rem;

height: 3rem;

line-height: 3rem;

font-size: 1.2rem;

display: inline-block;

background: #06c;

color: #fff;

border-radius: .5rem;

text-decoration: none;

text-align: center;   

}

为什么6rem等于60px。如果这个时候我们的.btn的样式不变,我们再改变html的font-size的值,看看按钮发生上面变化(font-size:40px; width:240px):

其实从上面两个案例中我们就可以计算出1px多少rem:

第一个例子:

120px = 6rem * 20px(根元素设置大值)

第二个例子:

240px = 6rem * 40px(根元素设置大值)

1rem=根元素设置的大小,单位px;如:

10px  = 1rem 在根元素(font-size = 10px的时候);

20px  = 1rem 在根元素(font-size = 20px的时候);

40px  = 1rem 在根元素(font-size = 40px的时候);

5.我们知道改变html的font-size可以等比改变所有用了rem单位的元素,所以大家可以通过chrome浏览器的调试工具去切换第三个的demo在不同设备下的展示效果,或者通过缩放浏览器的宽度来查看效果,我们可以看到不管在任何分辨率下,页面的排版都是按照等比例进行切换,并且布局没有乱。我只是通过一段js根据浏览器当前的分辨率改变font-size的值,就简单的实现了上面的效果,页面的所有元素都不需要进行任何改变。

怎么计算出不同分辨率下font-size的值?

首先假设我上面的页面设计稿给我时候是按照640的标准尺寸给我的前提下,(当然这个尺寸肯定不一定是640,可以是320,或者480,又或是375)来看一组表格。

上面的表格蓝色一列是Demo3中页面的尺寸,页面是以640的宽度去切的,怎么计算不同宽度下font-site的值,大家看表格上面的数值变化应该能明白。举个例子:384/640 = 0.6,384是640的0.6倍,所以384页面宽度下的font-size也等于它的0.6倍,这时384的font-size就等于12px。在不同设备的宽度计算方式以此类推。

通过JS去动态计算根元素的font-size,这样的好处是所有设备分辨率都能兼容适配,淘宝首页目前就是用的JS计算。但其实不用JS我们也可以做适配,一般我们在做web app都会先统计自己网站有哪些主流的屏幕设备,然后去针对那些设备去做media query设置也可以实现适配,例如下面这样:

html {

font-size : 20px;

}

@media only screen and (min-width: 401px){

html {

font-size: 25px !important;

}

}

@media only screen and (min-width: 428px){

html {

font-size: 26.75px !important;

}

}

@media only screen and (min-width: 481px){

html {

font-size: 30px !important;

}

}

@media only screen and (min-width: 569px){

html {

font-size: 35px !important;

}

}

@media only screen and (min-width: 641px){

html {

font-size: 40px !important;

}

}

分享到:
评论

相关推荐

    移动端REM布局与ViewportVW布局的实例运用

    - 使用REM设置元素尺寸:`div { width: 2rem; height: 3rem; }` **二、Viewport Width(VW)布局** 1. **VW介绍** VW是相对于视口宽度的单位,1vw等于视口宽度的1%。这意味着元素的尺寸会根据视口的变化实时调整...

    移动端rem布局 demo,可以作为简单参考

    这个"移动端rem布局 demo"提供了一个实用的例子,帮助初学者理解并应用REM布局。 首先,我们需要了解REM的基本概念。REM是CSS3中的一个单位,代表“根元素的em”,即html元素的字体大小。当我们为元素设置宽度、...

    移动端rem布局项目源码.zip

    这个"移动端rem布局项目源码.zip"文件显然包含了在线教育app首页的静态页面,利用REM单位进行尺寸控制,以实现灵活的布局和适应不同屏幕尺寸的效果。以下将详细介绍REM布局及其在移动端应用中的实践。 一、REM单位...

    移动端自适应布局-rem.js

    使用rem单位实现自适应布局,轻松掌握移动端开发。用法简单,比如普遍的设计图宽度为750px,那么在css中设置为7.5rem即可实现宽度100%

    详解H5 活动页之移动端 REM 布局适配方法

    本文将深入探讨移动端REM布局的适配方法,这是H5活动页实现响应式设计的关键技术。 首先,我们需要理解什么是REM(Root EM)。REM是一个相对于根元素(通常是html元素)font-size的长度单位。这意味着,如果我们...

    移动端使用rem布局那些事

    本文将深入探讨rem布局的工作原理、优势、使用方法以及在JavaScript和CSS中的实践。 ### 1. rem单位的定义 rem(root em)是CSS3引入的一个长度单位,代表“根em”。1rem等于html元素的font-size,也就是说,当html...

    3分钟读懂移动端rem使用方法(推荐)

    本文将详细讲解`rem`的使用方法。 首先,为什么我们需要使用`rem`呢?传统的像素(px)单位在固定宽度的布局中很常见,但在移动端,不同设备的屏幕宽度差异较大,固定像素值会导致元素在小屏幕上显示过小或在大屏幕...

    移动端rem布局的两种实现方法

    本文将详细介绍两种在移动端实现rem布局的常见方法:CSS媒体查询和JavaScript动态计算。 ### 方法一:CSS媒体查询 媒体查询是CSS3引入的一种特性,用于定义不同屏幕尺寸下的样式规则。在rem布局中,媒体查询常用来...

    移动端使用 rem 单位时 css sprites 定位问题的解决

    总的来说,解决移动端`rem`单位下的CSS Sprites定位问题需要综合运用CSS技巧,包括转换单位、使用`calc()`函数、调整负边距、设置`image-rendering`属性以及使用媒体查询等。通过这些方法,可以有效地优化图标在不同...

    Js动态设置rem来实现移动端字体的自适应代码

    在这篇文章中,作者详细介绍了如何使用JavaScript(简称JS)动态设置rem来实现移动端字体的自适应。在移动前端开发中,字体自适应是非常关键的一个环节,它能保证不同尺寸的设备上网页文本的显示效果都令人满意。...

    rem.js 移动端 H5 解决各种机型适配问题的js

    rem是 css3一种新的长度单位。它是相对于html标签的字体大小的单位(注意这里泛指是相对于html中的根元素标签也就是html)。 一般用于在移动端H5页面中解决各种机型适配问题的js,文件中详细说明。

    rem移动端h5自适应工具pixelRem.js

    超简单使用方法:import导入默认tool对象;tool.remDefault模式下750设计稿手机全屏CSS设置为750/1000=0.75rem;tool.remHalf模式下为750/100/2=3.75rem;

    一次讲清移动端适配解决方案-rem和vw.docx

    - 易于维护:一旦设置了根元素的字体大小,所有使用rem单位的元素都会根据该值进行缩放。 - 兼容性好:现代浏览器都支持rem单位。 **2. 实现方式** 早期,手淘的`lib-flexible.js`是一个流行的解决方案,它通过...

    rem详细使用案例

    这个"rem详细使用案例"项目就是一个简单的移动端布局示例,旨在帮助开发者快速理解和掌握`rem`单位的运用。 首先,`rem`代表“根元素的em”,这里的“根元素”通常指的是HTML元素。`rem`单位的大小取决于HTML元素的...

    CSS3移动端vw+rem不依赖JS实现响应式布局的方法

    通过调整根元素的font-size,我们可以改变整个页面中所有使用rem单位的元素的大小,实现响应式效果。 3. **vw和rem结合使用**: - 在实现响应式布局时,可以将vw用于设置页面的总体结构,比如布局容器的宽度,而...

    浅谈移动端的自适应布局问题(响应式、rem/em、Js动态)

    自适应网页设计包括响应式设计、使用rem/em单位布局以及结合JavaScript进行动态调整等方法。 1. 响应式网页设计是自适应布局的核心概念之一,它通过使用媒体查询(media queries)来实现。媒体查询可以检测设备的...

    h5rem自适应框架

    "h5rem自适应框架"正是解决这一问题的一种方法,它通过使用rem(root em)单位实现页面元素的自适应布局,确保在不同分辨率和屏幕尺寸的设备上都能保持良好的视觉体验。 rem(root em)单位是相对于根元素(通常是...

Global site tag (gtag.js) - Google Analytics