Rem单位

Rem

现如今移动端的尺寸大小多种导致也页面不能在各种屏幕上适配,许多网站之前主要采取(1)采用的流式布局:通过百分比来定义宽度来实现,但是高度大都是用px来固定住。

这就导致大屏幕的手机页面上宽度被拉的很长,高度很短。

(2)固定宽度做法:早期有些网站把页面设置成320的宽度,超出部分留白。大屏幕手机下留白会特别多,看起来页面会特别小,操作的按钮也很小。

(3)响应式做法:这种做法虽然能展现很好的效果,但大型企业的复杂性的网站在移动端用这种方法去做的话会增加工作量,维护性难。

(4)设置viewport进行缩放:天猫的web app的首页就是采用这种方式去做的,以320宽度为基准,进行缩放,最大缩放为320*1.3 = 416,基本缩放到416都就可以兼容iphone6 plus的屏幕了,这个方法简单粗暴,又高效。但它接下来要说的rem一样高效……

rem具体是怎么用的

_首先rem是根据根元素进行适配的,在网页中的根元素是html,所以我们可以通过设置html的font-size大小来控制rem的大小

例如:

(1)Html{

Font-size:20px;

}

.btn{

width:6rem;相当于=>width:120px(20*6)

height:3rem;相当于=>height:60px(20*3)

line-height:3rem;相当于=>line-height:60px (20*3)

font-size:1.2rem;相当于=>font-size:24px(20*1.2)

border-radius: 0.5rem;相当于=>border-radius: 10px(20*0.5)

}

按钮出来的效果:

如果我们再改变html的font-size的值,看看按钮发生上面变化:

(2)Html{

Font-size:40px;

}

看出我们只需要改变html的font-size的px值a;下面元素px大小就等于rem的数值*a;

我们只要改变html的font-size大小就可以等比缩放下面元素的大小

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

假设设计师给的是以最左边蓝色的640px宽度,

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

根元素html的font-size如何改变

方法(一)添加css3动态设置font-size大小

可以根据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;

}

}

上面的做的设置当然是不能所有设备全适配,但是用JS是可以实现全适配。方法如下

方法(二)添加js代码

var docWidth =

640;//640为标准的屏幕

var fontsize = 54;//字体大小

(function (doc, win) {

var docEl = doc.documentElement,

resizeEvt = ‘orientationchange‘ in window ? ‘orientationchange‘ : ‘resize‘,

recalc = function () {

var clientWidth = docEl.clientWidth;

if (!clientWidth) return;

if (clientWidth >= docWidth ) {

docEl.style.fontSize =fontsize +‘px‘;

} else {

docEl.style.fontSize = fontsize * (clientWidth / docWidth ) + ‘px‘;

}

};

if (!doc.addEventListener) return;

win.addEventListener(resizeEvt, recalc, false);

doc.addEventListener(‘DOMContentLoaded‘, recalc, false);

})(document, window);

假设以640的宽度为例,字体大小为54px,自适应屏幕的大小rem的插件如上

方法(三)使用Flexible实现手淘H5页面的终端适配

目前Flexible会将视觉稿分成100份(主要为了以后能更好的兼容vh和vw),而每一份被称为一个单位a。同时1rem单位被认定为10a。针对我们这份宽750px的视觉稿可以计算出:

1a=7.5px

1rem =75px

那么我们这个示例的稿子就分成了10a,也就是整个宽度为10rem,对应的font-size为75px:

这样一来,对于视觉稿上的元素尺寸换算,只需要原始的px值除以rem基准值即可。例如此例视觉稿中的图片,其尺寸是176px * 176px,转换成为2.346667rem * 2.346667rem。

为减少繁琐的px转换为rem的计算量,可在sublimeText3添加插件(附件提供的cssrem)

插件具体的安装方法:

(1)

工具栏中的preference-》Browse packages(点击进去)

将附件中的cssrem文件夹复制到packages里

重启sublimeText3

(2)设置px-rem的转换值

Preference-》packages settings

–》cssrem-》Settings-Default

在Settings-Default中的参数如下:

其中25的值就是px转换为rem的值(1rem=25px),可以根据不同的情况设置

设置完成后,当在css样式中输入时有以下提示:

时间: 2024-11-06 21:22:44

Rem单位的相关文章

移动端rem单位用法[转]

标签: 1.rem(font size of the root element)是指相对于根元素的字体大小的单位,em(font size of the element)是指相对于父元素的字体大小的单位.它们之间其实很相似,只不过一个计算的规则是依赖根元素一个是依赖父元素计算.二者都是相对单位 2.我们现在在切页面布局的使用常用的单位是px,这是一个绝对单位,web app的屏幕适配有很多中做法, 例如:流式布局.限死宽度,还有就是通过响应式来做,但是这些方案都不是最佳的解决方法, 例如流式布局

关于使用rem单位,calc()进行自适应布局

关于css中的单位 大家都知道在css中的单位,一般都包括有px,%,em等单位,另外css3新增加一个单位rem. 其中px,%等单位平时在传统布局当中使用的比较频繁,大家也比较熟悉,不过px单位在进行自适应布局的过程当中则会有些力不从心,大部分的解决方案是使用%为单位配合@media媒介查询来进行自适应布局.不过还有另外一个css3新添加的单位也同样可以拿来进行自适应布局,在我看来这种方法也更加方便直观. em和rem 首先先介绍一下em,这个单位是根据其父元素的字体大小来进行计算的,即1e

如何在手机项目中使用rem单位

rem这是个低调的css单位,近一两年开始崭露头角,有许多同学对rem的评价不一,有的在尝试使用,有的在使用过程中遇到坑就弃用了.但是我对rem综合评价是用来做web app它绝对是最合适的人选之一. rem是什么? rem(font size of the root element)是指相对于根元素的字体大小的单位.简单的说它就是一个相对单位.看到rem大家一定会想起em单位,em(font size of the element)是指相对于父元素的字体大小的单位.它们之间其实很相似,只不过一

写一个Sublime Text 2插件(CSS文件里px单位替换成rem单位)

三年前我就知道了sublime text 不过那时候用DW还是很爽的样子,后来有天想为难自己了,于是用了两年的vim和五笔,最近又觉得这么好编辑器也可以试试,改变一下自己,用一下的,不过由于工作的原因,没有坚持下来,有时候顺手似乎比先进更重要一些. 最近工作都是做一些移动端的页面,而微信的长按出现二维码有个bug,在ios里缩放的页面长按是不会出现"识别二维码"的.所以需要转换一下,不要让页面缩放,要自适应,这个时候就用rem单位来做的会比较好一些,而我的同事之前开发了一个px to

移动端rem单位用法

1.rem(font size of the root element)是指相对于根元素的字体大小的单位,em(font size of the element)是指相对于父元素的字体大小的单位.它们之间其实很相似,只不过一个计算的规则是依赖根元素一个是依赖父元素计算.二者都是相对单位 2.我们现在在切页面布局的使用常用的单位是px,这是一个绝对单位,web app的屏幕适配有很多中做法,例如:流式布局.限死宽度,还有就是通过响应式来做,但是这些方案都不是最佳的解决方法, 例如流式布局的解决方案

gulp.spritesmith修改px为rem单位

移动端开发中,使用gulp.spritesmith进行小图sprite并生成样式,但由于spritesmith默认是以px为单位,所以就把插件的内容修改了下让生成rem单位并且能把background-size设置为雪碧图的宽高. 1.首先修改gulp.spritesmith\node_modules\spritesheet-templates\lib\spritesheet-templates.js ['x', 'y', 'offset_x', 'offset_y', 'height', 'w

使用rem单位时css sprites的坑

在使用rem单位时,用雪碧图(我不喜欢这个名字!)做背景图片在移动端有时会有错位.pc模拟是没有问题的,而且错位的情况不同的手机还不太一样.这里说几个解决的办法.出现这个问题的原因我找了很久都找不到,再接着找吧! background-size和background-position都用rem 我实际使用中是用这个方法解决问题的.但是据说这样还是会有错位的时候. 转换为px 这个是一定有效的方法.background-size 和 position都用px写死.然后动态增加.zoom{trans

sass中px转rem单位

/*↓↓↓↓↓ @function实现px转化rem单位 推荐使用这种方法 ↓↓↓↓↓↓↓↓*/$browser-default-font-size: 16px !default;//变量的值可以根据自己需求定义html {font-size: $browser-default-font-size;}@function pxTorem($px){//$px为需要转换的字号 @return $px / $browser-default-font-size * 1rem;} .header { fo

关于使用rem单位、css函数calc()进行自适应布局

一.关于css中的单位 大家都知道在css中的单位,一般都包括有px,%,em等单位,另外css3新增加一个单位rem. 其中px,%等单位平时在传统布局当中使用的比较频繁,大家也比较熟悉,不过px单位在进行自适应布局的过程当中则会有些力不从心,大部分的解决方案是使用%为单位配合@media媒介查询来进行自适应布局. 不过还有另外一个css3新添加的单位也同样可以拿来进行自适应布局,在我看来这种方法也更加方便直观. 1.em和rem 首先先介绍一下em,这个单位是根据其父元素的字体大小来进行计算

rem 单位

rem(font size of the root element)是指相对于根元素的字体大小的单位. 主流的一些web app的适配解决方案: 流式布局: 流式布局在页面布局的时候都是通过百分比来定义宽度,但是高度大都是用px来固定住,所以在大屏幕的手机下显示效果会变成有些页面元素宽度被拉的很长,但是高度还是和原来一样,实际显示非常的不协调,这就是流式布局的最致命的缺点 响应式做法: 响应式这种方式在国内很少有大型企业的复杂性的网站在移动端用这种方法去做,主要原因是工作大,维护性难,所以一般都