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. mvvm框架正式名字确定

    经过长时间的选名,今天终于把名字定下来了,ddrjs  data drive render,其实框架的核心还是 数据驱动渲染,其实现在市面上的大部分mvvm框架如:angular.vue.avalon ...

  2. 软件测试 homework2

    1. 程序1:   for循环的i>0改为i>=0: 程序2:   for循环for (int i = 0; i < x.length; i++)改为for (int i = x.l ...

  3. 持续集成环境(Gitlab+jenkins+shell)

    一.搭建gitlab ps:不是这方面的专家,主要还是一键式安装为主. 1.进入官网:https://about.gitlab.com/gitlab-com/ 2.选择自己的操作系统:我这边选择的ub ...

  4. (二)Angularjs - 入门(2)

    AngularJS AJAX AngularJS提供了$http控制,可以用来获取服务器端的数据.服务器通过一个数据库的读取操作来获取需要的数据.注意AngularJS需要JSON格式的数据.一旦数据 ...

  5. 武汉科技大学ACM :1007: 华科版C语言程序设计教程(第二版)习题7.10

    Problem Description 输入n(n<100)个字符串,每个字符串长度不超过1000,将他们按字典顺序输出. Input 多组测试样例. 每组第一行有一个整数n表示有n个字符串. ...

  6. 在eclipse中运行wordcount,控制台打印log4j警告

    log4j:WARN No appenders could be found for logger (org.apache.hadoop.util.Shell).log4j:WARN Please i ...

  7. QT5-控件-QSpinBox和QDoubleSpinBox(用于通过控件调整整数和小数)

    #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QSpinBox> #in ...

  8. django 学习 --- 环境搭建

    1 安装django a: pip安装 pip install Django==版本号 b:源码安装 https://www.djangoproject.com/download/ tar -xvzf ...

  9. shape及其子节点详解

    shape最大的最用便是用来替代图片,释放磁盘空间.另外则是增加适应不通过屏幕的设备. 先来看看shape下面的节点以及它所起到的作用. gradient   -- 对应颜色渐变(startcolor ...

  10. java 批量插入10万条数据

    for (int i = 0; i < 100000; i++) { dbHelper.insert("INSERT aaa(name) Values ('1')"); } ...