rem 单位

rem(font size of the root element)是指相对于根元素的字体大小的单位。

主流的一些web app的适配解决方案:

流式布局:

流式布局在页面布局的时候都是通过百分比来定义宽度,但是高度大都是用px来固定住,所以在大屏幕的手机下显示效果会变成有些页面元素宽度被拉的很长,但是高度还是和原来一样,实际显示非常的不协调,这就是流式布局的最致命的缺点

响应式做法:

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

设置viewport进行缩放:

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

<meta name="viewport" content="width=320,maximum-scale=1.3,user-scalable=no">

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;

}

可以使用js 去动态计算根元素字体大小(全适配):

(function (doc, win) {

var docEl = doc.documentElement,

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

recalc = function () {

var clientWidth = docEl.clientWidth;

if (!clientWidth) return;

docEl.style.fontSize = 20 * (clientWidth / 320) + ‘px‘;

};

if (!doc.addEventListener) return;

win.addEventListener(resizeEvt, recalc, false);

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

})(document, window);

也可以根据自身网站访问的主流设备分析,使用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;

}

}

http://isux.tencent.com/web-app-rem.html

我们常常将 html 的font-size设置为62.5%,这样会比较方便计算。通常浏览器的默认字号是16px,如此算来,16*62.5%=10px

chrome在某个地方除了个bug,忽略了html的设置。于是在初始化页面的时候,出现了上面字体过大的情况,本来应该渲染成16px的字体,被渲染成了16*1.6=25.6px大小了。但是刷新页面之后就正常了

有一些简单的解决方法可以规避这个bug:

<script type="text/javascript"> document.body.style.fontSize = ‘1.6rem‘; </script> 或者将下面的代码放到 head 里面:

<style> body { font-size: 1.6rem; } </style> 当然这些都是很不优雅的方法,基本思路就是让页面repaint一下。

时间: 2024-10-24 17:35:03

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,这个单位是根据其父元素的字体大小来进行计算