1.rem是什么?

rem(font size of the root element)是指相对于根元素的字体大小的单位。简单的说它就是一个相对单位。看到rem大 家一定会想起em单位em(font size of the element)是指相对于父元素的字体大小的单位。它们之间其实很相似,只不过一个计 算的规则是依赖根元素一个是依赖父元素计算

2.rem为什么使用?rem怎么用?

先说下移动端布局常用的方式吧

  1.流式布局(通过大量的百分比来控制页面)用大量的百分比肯定会出现兼容性问题或者直接就是跑。百分比不能精确的控制尺寸,会导致做出来的效果跟设计图有很大的差别。

  2.固定宽度。顾名思义就是把宽度写死这样做的话,前端会很开心。

  3.响应式布局。响应式第一要领就是一定要记得引用meta标签

  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">

  否则你的页面做不到自适应这个很重要  然后通过最小宽度来控制页面的最小缩放值。如果你用px来作为单位的话,你的页面在不同设备上所显示的高度是一样的只有宽度在变化,其他的值都不变化。
  这样你的页面就会出现问题,在宽度为500以下的设备上这种感觉不是很强烈,大于这个宽度的设备上,你就能感觉出来字体很小而且高度很小导致整个页面看起来很不协调。如果是一张图片放到这个页面他会等比例整体放到缩小(包括内容)。而现在的页面做不到内容整体的缩放

rem能等比例缩放屏幕

html{font-family: 'Opengrilw';font-size: 10px;}

.top{ font-size: 1.5rem;height: 1.5rem; background-color: #8FC5FB;line-height: 1.5rem;}

如上代码所示我们只需要控制html的字体大小就可以控制整个页面的缩放比例(10px=1rem 在font-size=10px 这种情况下);

举个简单的demo

<div class="btu">按钮</div>
html{font-size:10px;}
.btu{width: 12rem; height: 4.5rem; line-height: 4.5rem; font-size: 1.5rem; background-color: #A21E6E; text-align: center; color: #fff;}

现在改变

html{font-size: 30px;}

整体放大了3倍

3.通过js控制html的字体

  rem可以通过根元素来控制大小,但是总不能没改屏幕都写一个字体吧,何况移动端的不同宽度的设备那么多。累死不说还写不全。

  所以就得想个方法来自动控制,就想到了js

  

// resize 窗口大小发生改变的时候才会触发的。但是在第一次加载的时候是不会触发该时间
resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
//alert(resizeEvt);
// 手机屏幕是否反转orientationchange
window.addEventListener(resizeEvt, chuk, false);// IE 谷歌
document.addEventListener('DOMContentLoaded', chuk, false);//火狐
// $(window).resize(function() {
// chuk();
// });
function chuk(){
var w=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;
var js=10*(w/320);
if(js>20){
js=15;//这里的判断是我自己写的,因为在pc端看的太大了
}
document.documentElement.style.fontSize=js+'px';
}

图片仅供参考,具体可以通过修改js来实现

  

css单位rem---移动端至宝的更多相关文章

  1. 7个你可能不认识的CSS单位:rem vh vw vmin vmax ex ch

    rem 我们首先介绍下和我们熟悉的很相似的货.em 被定义为相对于当前对象内文本的字体大小.炒个栗子,如果你给body小哥设置了font-size字体大小,那么body小哥的任何子元素的1em就是等于 ...

  2. 关于CSS单位:rem vh vw vmin vmax

    rem(root em) 如果你给body设置了font-size字体大小,那么body的任何子元素的1em就是等于body设置的font-size demo: body {  font-size: ...

  3. 移动端适配单位rem

    0 写在前面 本周惊喜地发现,其他各个老师的软工班(罗杰老师班和欧阳老师班)的软工项目的alpha版本都已经发布了!(然而我们软工项目还没开始写代码…逃…) 十分好奇的我第一时间下载了一些他们的产品进 ...

  4. rem — 一个低调的css单位

    原文  http://www.zhaoan.org/1825.html rem这是个低调的 css 单位,近一两年开始崭露头角,有许多同学对rem的评价不一,有的在尝试使用,有的在使用过程中遇到坑就弃 ...

  5. css 相对单位rem详解

      CSS3新增了一个相对单位rem(root em,根em),这个单位引起了广泛关注.这个单位与em有什么区别呢?区别在于使用rem为元素设定字体大小时,仍然是相对大小,但相对的只是HTML根元素. ...

  6. css单位中px和em,rem的区别

    css单位中分为相对长度单位.绝对长度单位. 今天我们主要讲解rem.em.px这些常用单位的区别和用法. px(绝对长度单位) 相信对于前端来说px这个单位是大家并不陌生,px这个单位,兼容性可以说 ...

  7. 从设计图到CSS:rem+viewport+媒体查询+Sass

    根据UI图对移动端的h5页面做样式重构,是前端工程师的本职工作,看似简单,不过想做好却并不容易.下面总结一下其中要点. rem rem是一种相对长度单位,参考的基准是<html>标签定义的 ...

  8. CSS单位计算总结

    CSS单位总结 公共部分css body { background-color: #000; color: skyblue; margin: 0; padding: 0; } body>div& ...

  9. 你可能没注意的CSS单位

    扶今追昔 CSS中的单位我们经常用到px.pt.em.百分比,px和pt不用多说 em em是相对单位,参考物是父元素的font-size,具有继承的特点 如果字体大小是16px(浏览器的默认值),那 ...

随机推荐

  1. 数据库触发器new old

    数据库触发器new old: "NEW . column_name"或者"OLD . column_name".这样在技术上处理(NEW | OLD . col ...

  2. pythond对象、异常、反射的学习笔记

    python多继承,刚开始我是表示惊讶的,毕竟学的php,哪来的多继承?顶多也就是利用接口模拟多继承后者使用反射机制实现.那么还是来看看python的强大吧 1 首先,Python的类继承了多个类,那 ...

  3. arclist标签和list标签区别

    很多站长朋友在刚入门织梦的时候对织梦的标签存在很多的困惑,关于arclist标签和list标签,甚至不知道啥时候用arclist,啥时用list标签.arclist 为自由列表,全局模板中都生效,一般 ...

  4. XML解析方式与解析工具

    DOM解析原理: 1)JAXP (oracle-Sun公司官方) 2)JDOM工具(非官方) 3)Dom4J工具(非官方) 三大框架(默认读取xml的工具就是Dom4j) ....... SAX解析原 ...

  5. Qweb报表中的Reload from Attachment参数

    通过继承的方式修改了Qweb报表却发现没有生效,经查,其原因在于报表的设置中勾选了 Reload from Attachment 选项. 将本选项取消选中即可生效.

  6. 简单运用 activity 的 button 点击事件

    今天我们要讲的主要是四大组件之一Activity Activity 在英文中是活动的意思.活动就是我们与用户进行交互的一个场所. activity 整个的活动流程是什么呢?我们用一个图来看下 当然今天 ...

  7. 存储过程中update,然后用sql%判断update是否成功的存储过程

    --更新用户状态 PROCEDURE P_UPDATE_USER_STATUS ( v_SrcID IN NUMERIC, v_DstID IN NUMERIC, v_DstType IN NUMER ...

  8. 转 Jona Dany 一个20年架构师程序员的经验总结

    1.估算问题解决所需要的时间,为自己定一个时间限制,1小时,30分钟,15分钟.如果这期间不能解决问题,那就去寻求帮助.不要做超级堆码员. 2.编程语言是一种语言,只是一种语言.只要理解一种语言的原理 ...

  9. 一句话输出网站404页面,REFER及相关排序

    cat www.log|awk '$9~/404/ {print $7"," $11}'|sort|uniq -c|sort -nr > ./www404.csv

  10. BZOJ 1211 树的计数

    http://www.lydsy.com/JudgeOnline/problem.php?id=1211 思路:每一个prufer编码都代表了一棵树,而点的度数,代表了它在prufer编码中出现的次数 ...