在最近的移动端布局当中,最炙手可热的方式便是使用rem进行元素的布局。以下便是从最近的文章中所总结出来的一点东西。

首先,我们必须有以下的疑问:

rem的本质是什么?

rem如何实现自适应布局?

如何根据设计稿来调整rem的值?

rem布局是能纯CSS还是必须JS进行辅助?

接着,我们来稍微解答或者解决以上的问题

一.rem的自适应原理

rem(font size of the root element)是指相对于根元素的字体大小的单位,既是一个相对的计量单位。而于此类似的便是em(font size of the element)是指相对于父元素的字体大小的单位。所以,两个都是相对计量单位。区别在于一个相对于根元素,一个相对于父元素。rem就是根据HTML的font-size大小来进行的变化。基于该原理,可以在每一个设备下根据设备的宽度设置对应的html字号,从而实现自适应布局。

二.rem 的值

目前有两种,一种是根据js来调整html的字号,另一种则是通过媒体查询来调整字号。

三.移动端使用rem布局

  在采用rem之前移动端的主流适配方案

  1.流式布局(百分比布局)

  优点: 简单方便,使用简单,只需固定高度即可,宽度自适应 ;

  缺点: 在大屏幕的手机下显示效果会变成有些页面元素宽度被拉的很长,但是高度还是和原来一样,实际显示非常的不协调;

  2.固定宽度

  优点: 与设备宽度做等比缩放 ;

  缺点: 在大屏幕手机下两边是留白的,还有一个就是大屏幕手机下看起来页面会特别小,操作的按钮也很小,手机淘宝首页起初是这么做的,但最后改版了,采用了rem;

  3.响应式做法

  优点:可以节约成本,不用再专门为自己的网站做一个webapp的版本,所以一般都是中小型的门户或者博客类站点会采用响应式的方法从web page到web app直接一步到位;

  缺点:工作量大,维护性难,这种方式在国内很少有大型企业的复杂性的网站在移动端用这种方法去做;

  采用rem的优势

  开头提过rem是指相对于根元素的字体大小的单位,网页中的根元素指的是html我们通过设置html的字体大小就可以控制rem的大小。

  

html{
  font-size:10px;
} .btn{
  width:6rem;
  height:3rem;
  line-height:3rem;
  font-size:1.2rem;
  border: 1px solid #333;
  color: #333;
  border-radius: 0.5rem;
  text-align: center;
  margin: 10px auto;
} 

 

  此时,我们会发现整个按钮大小是60px*30px。如果我们将根元素的font-size更改为20px,按钮就会变成120px*60px。是之前的等比放大。

  所以。我们仅仅是改变了根元素html的font-size,而.btn元素的width,height的rem属性不变,就实现了按钮在web中的改变。

  所以,得出

  1rem = 10px 在根元素的 font-size = 10px 的时候;

  1rem = 20px 在根元素的 font-size = 20px 的时候;

  1rem = 40px 在根元素的 font-size = 40px 的时候;

  在上面两个例子中我们发现第一个案例按钮是等比例放大到第二个按钮,html font-size的改变就会导致按钮的大小发生改变,我们并不需要改变先前给按钮设置的宽度和高度,其实这就是我们最想看到的。

  正是基于这个出发,我们可以在每一个设备下根据设备的宽度设置对应的html字号,从而实现了自适应布局。

三.现在rem主流的适配有两种方案:  

  1.rem随设备宽度做自适应,scale值固定为1 ;
  2.rem随设备宽度做自适应,viewport进行缩放,scale值不固定;

rem自适应布局小结001的更多相关文章

  1. rem自适应布局的回顾总结

    使用rem实现自适应布局,应该算是当前移动前端的一大趋势,有些人对此还有点迷惑,搞不懂rem是如何实现自适应布局,如何根据设计稿来调整rem的值?rem布局如何用雪碧背景图片?rem一定要加载JS吗? ...

  2. 【转载】rem自适应布局-移动端自适应必备

    原文链接:rem自适应布局-移动端自适应必备 版权所有,转载时请注明出处,违者必究. 由于移动端特殊性,本文讲的是如何使用rem实现自适应,或叫rem响应式布局,通过使用一个脚本就可以rem自适应,不 ...

  3. 【转】rem自适应布局

    rem自适应原理 rem是根据html的font-size大小来变化,正是基于这个出发,我们可以在每一个设备下根据设备的宽度设置对应的html字号,从而实现了自适应布局.更多介绍请看这篇文章:rem是 ...

  4. rem自适应布局

    rem自适应原理 rem是根据html的font-size大小来变化,正是基于这个出发,我们可以在每一个设备下根据设备的宽度设置对应的html字号,从而实现了自适应布局.更多介绍请看这篇文章:rem是 ...

  5. 移动端rem自适应布局(切图)

    本篇适用于初次使用rem为单位切图而无从下手的童鞋.核心是根据屏幕动态改变根元素字体大小,以达到适配各种屏幕.这只是一个拿来就用的教程.很多东西没有详细说明.不过对于快速做手机端切图很有帮助. 模板: ...

  6. rem 自适应布局 bootstrap 移动端适配

    移动端适配用:rem 自使用布局用:bootstrap

  7. 手机端rem自适应布局实例

    首先要书写核心js代码,控制住页面的初始大小:我是以750px(即iPhone6)的标准,设置font-size:100px:<script>        (function (doc, ...

  8. 移动端rem自适应布局关键代码

    function resi() { var html = document.querySelector("html"); var wW = document.body.client ...

  9. rem自适应布局-移动端自适应必备:flexible.js

    http://caibaojian.com/flexible-js.html

随机推荐

  1. 爸爸和儿子的故事带你理解java线程

    今天回想线程方面的知识,发现一个非常有意思的小程序.是用来说明多线程的以下贴出来分享下,对刚開始学习的人理解线程有非常大的帮助 爸爸和儿子的故事 <span style="font-f ...

  2. 浅谈MySQL Capabilities --从调研PHP mysqlnd源码细节角度认识

    今天一起来研究下MySQL Capabilities,这个非常重要,如果大家有想法自己动手实现一个MySQL客户端或者Proxy工具,那么就得先了解一下这块,正好PHP 5.3以上版本由于官方为了规避 ...

  3. 修改windows下mysql的max_allowed_packet的值

    执行sql报错:Error updating database. Cause: com.mysql.jdbc.PacketTooBigException: Packet for query is to ...

  4. HTTP请求库——axios源码阅读与分析

    概述 在前端开发过程中,我们经常会遇到需要发送异步请求的情况.而使用一个功能齐全,接口完善的HTTP请求库,能够在很大程度上减少我们的开发成本,提高我们的开发效率. axios是一个在近些年来非常火的 ...

  5. hive中使用正則表達式不当导致执行奇慢无比

    业务保障部有一个需求,须要用hive实时计算上一小时的数据.比方如今是12点,我须要计算11点的数据,并且必须在1小时之后执行出来.可是他们用hive实现的时候发现就单个map任务执行都超过了1小时, ...

  6. HDoj-1250-Hat&#39;s Fibonacci-大数

    Hat's Fibonacci Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  7. easyUI datagrid 时间格式化

    从后台传过来的数据,其中含有日期字段,那么在前端的easyUI这里显示的话,会显得比较怪异,一大串,中间是个T,后面一大堆零,不知道是什么意思. 看来要进行格式化. 问题是,在哪里格式化? 如果在后端 ...

  8. python partial

    1 很好记忆 partial的第一个参数是函数,后面都是该函数的参数. 2 特殊的地方 partial第一个参数是函数名,但是第二个参数是另外一个函数名. 比如partial(filter, func ...

  9. [RK3288][Android6.0] 调试笔记 --- 如何确认声卡是否注册成功【转】

    本文转载自:http://blog.csdn.net/kris_fei/article/details/78399875 Platform: RK3288 OS: Android 6.0 Kernel ...

  10. MPMoviePlayerController属性方法简介

    属性 说明 @property (nonatomic, copy) NSURL *contentURL 播放媒体URL,这个URL可以是本地路径,也可以是网络路径 @property (nonatom ...