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. 去掉eclipse上编辑时的提示

    用eclipse时,鼠标移到类上时会给出提示,如下图:

  2. [转]C++ list 类学习笔记

    双向循环链表list list是双向循环链表,,每一个元素都知道前面一个元素和后面一个元素.在STL中,list和vector一样,是两个常被使用的容器.和vector不一样的是,list不支持对元素 ...

  3. 如何退出Activity?如何安全退出已调用多个Activity的Application?

    如何退出Activity?如何安全退出已调用多个Activity的Application? 退出Activity直接调用finish()方法  //用户点击back键就是退出一个Activity 退出 ...

  4. PHPCMSV9 采集网址后,再采集内容,报错:“采集采集内容 没有找到网址列表,请先进行网址采集”

    解决方法:直接清除v9_collection_history 表里的内容.

  5. iscroll.js

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  6. Web 前端开发者必知CSS 属性

    1.  圆角效果 如今的Web设计在不断跟进最新的开发技术,纷纷采用HTML5来开发多样性的Web应用.HTML5的优势之一,就是之前必须用图片实现的元素,现在可以用代码来实现. “border-ra ...

  7. PHP学习系列(1)——字符串处理函数(3)

    11.crc32() 函数计算一个字符串的 crc32 多项式.生成 string 参数的 32 位循环冗余校验码多项式.该函数可用于验证数据的完整性. 语法:crc32(string) 注意:由于 ...

  8. log4net 学习笔记

    记入最基本的用法 : refer : http://www.cnblogs.com/aehyok/archive/2013/05/07/3066010.html <configuration&g ...

  9. Cracking the coding interview--Q1.8

    原文: Assume you have a method isSubstring which checks if one word is a substring of another. Given t ...

  10. Linux系统编程(35)—— socket编程之TCP服务器的并发处理

    我们知道,服务器通常是要同时服务多个客户端的,如果我们运行上一篇实现的server和client之后,再开一个终端运行client试试,新的client就不能能得到服务了.因为服务器之支持一个连接. ...