使用CSS3的rem属性制作响应式页面布局的要点解析


Posted in HTML / CSS onMay 24, 2016

其实rem不只是能应用到字体上面,还可以应用到长度和宽度上面,接下来看下我做的一个项目的首页吧。
Demo
    由于这个项目我设置了最大的宽度限制是640px,最小限制是320px,大家可以改变浏览器的分辨率或者通过手机访问看看效果。基本上在不同分辨率下都是差不多的展示效果,而且在手机移动终端下都是100%的撑开。这种响应式的效果,我想应该是最符合现在移动终端多样化的需求的,如果只是做几个特别适应的尺寸,例如320、480、340、600这种特定的尺寸,那真是要累死前端开发的同学了。但是如果用rem来实现就可以不用考虑上诉的问题也可以达到自适应了。
    这个效果对设计师的要求也是非常严格的,例如你需要指定一个规范的宽度进行设计,我们的设计师是按照640的宽度去设计的,实际设计图的宽度是640*2这样做的目的是为了在移动端能高清显示。小图标是采用CSS3的图标字体,不得不说这是个非常好的东西。

设置对应的响应式的html rem比例
    我们平常在使用长度单位都会使用px,但是在做上面的响应式的时候,需要用rem或者百分比的单位,大家可以看我的Demo代码。在上篇文章介绍了rem的字体设置计算方法:

CSS Code复制内容到剪贴板
  1. html{   
  2.     font-size:62.5%; /* 10÷16=62.5% */  
  3. }   
  4. body{   
  5.     font-size:12px;   
  6.     font-size:1.2rem ; /* 12÷10=1.2 */  
  7. }   
  8. p{   
  9.     font-size:14px;   
  10.     font-size:1.4rem;   
  11. }  

    通过设置html的font-size值来控制全局的rem输出,这段代码其实是这个rem的精髓所在,我在我的页面中设置了如下的代码来控制不同设备下的字体大小显示使其达到自适应:

CSS Code复制内容到剪贴板
  1. html {   
  2.     font-size: 62.5%;   
  3. }   
  4. @media only screen and (min-width481px){   
  5.     html {   
  6.         font-size: 94%!important;   
  7.     }   
  8. }   
  9. @media only screen and (min-width561px){   
  10.     html {   
  11.         font-size: 109%!important;   
  12.     }   
  13. }   
  14. @media only screen and (min-width641px){   
  15.     html {   
  16.         font-size: 125%!important;   
  17.     }   
  18. }  

    看上面的代码,可能大家会觉得为什么要这样设置呢,其实这个是根据许多测试推算出来的,上面代码如果要转换城px会变成这样:

CSS Code复制内容到剪贴板
  1. html {   
  2.     font-size: 62.5%; /* 10÷16=62.5% */  
  3. }   
  4. @media only screen and (min-width481px){   
  5.     html {   
  6.         font-size: 94%!important/* 15.04÷16=94% */  
  7.     }   
  8. }   
  9. @media only screen and (min-width561px){   
  10.     html {   
  11.         font-size: 109%!important/* 17.44÷16=109% */  
  12.     }   
  13. }   
  14. @media only screen and (min-width641px){   
  15.     html {   
  16.         font-size: 125%!important/* 20÷16=125% */  
  17.     }   
  18. }  

给margin padding 设置rem
    上面展示的是怎么通过计算获取到不同分辨率下的html font-site百分比的值。实际开发如果设计师是按照640的宽度去设计的,我们就按照最大的640去切图,切图的时候如果我们要设置margin怎么banner,设计图的值加入是10px的间距,我们通过640的比例去计算:

CSS Code复制内容到剪贴板
  1. margin-top:.5rem; /*10 ÷ 20 = 0.5*/  
  2. padding-top:1rem /* 20 ÷ 20 =1 */  

    上面分别是设计图上的间距10px和20px计算成rem的方法,大家可以以此类推,如果你的设计图是640设计的就可以用上面的方法,反正每次以最大的值来计算就可以了。

给height width 设置rem
    实际开发中大家最常设置的估计就是height width值了,为了做到各个设备下长度自己相应,许多开发人员会用百分比来做,这个是没有问题,但是其实很多场景下用rem比百分比更加灵活,在我实际开发中,一般我只在大块的div布局里面用百分比,元素的设置一般都用rem来。例如:

CSS Code复制内容到剪贴板
  1. height:100px/* 100 ÷ 20 = 5rem;*/  
  2. width:50px/* 50 ÷ 20 = 2.5rem;*/  

给border 设置rem
其实就连border我们也可以用rem来做,但是貌似现在的安卓手机对border用rem单位有一小部分不支持,在我开发测试发现了,高版本的安卓浏览器支持,但是低版本的有许多都不支持,具体要不要使用就看你们自己的情况。

CSS Code复制内容到剪贴板
  1. border:.2rem solid #cccccc;  

需要注意的是:
网页要多终端匹配,传统字体单位px满足不了,考虑使用rem单位

rem 是相对于根节点的!

为此,如下代码,先让根节点单位为10px,之后就方便使用rem了

CSS Code复制内容到剪贴板
  1. html { font-size: 62.5%; }    
  2. body { font-size: 1.4rem; } /* =14px */  
  3. h1   { font-size: 2.4rem; } /* =24px */  

 非常好的是,rem ie9支持

如要兼容ie9以下浏览器,可

CSS Code复制内容到剪贴板
  1. html { font-size: 62.5%; }    
  2. body { font-size14pxfont-size: 1.4rem; } /* =14px */  
  3. h1   { font-size24pxfont-size: 2.4rem; } /* =24px */  

总结
rem的使用其实我可能是只是总结了大家比较常用的一些属性,其实他的范围肯定不止是这么多,实际的项目开发中我相信大家在使用他的过程会发现许多惊喜的,非常希望大家留言讨论这一章的内容。有什么问题我会第一时间反馈。

HTML / CSS 相关文章推荐
css3 按钮样式简单可扩展创建
Mar 18 HTML / CSS
css3实现背景图片拉伸效果像桌面壁纸一样
Aug 19 HTML / CSS
css3发光搜索表单分享
Apr 11 HTML / CSS
一款纯css3制作的2015年元旦雪人动画特效教程
Dec 29 HTML / CSS
CSS3与动画有关的属性transition、animation、transform对比(史上最全版)
Aug 18 HTML / CSS
前端canvas水印快速制作(附完整代码)
Sep 19 HTML / CSS
Html5新标签解释及用法
Feb 17 HTML / CSS
程序设计HTML5 Canvas API
Apr 08 HTML / CSS
HTML5 DeviceOrientation实现手机网站摇一摇功能代码实例
Apr 24 HTML / CSS
详解HTML5 录音的踩坑之旅
Dec 26 HTML / CSS
HTML5中的websocket实现直播功能
May 21 HTML / CSS
CSS实现背景图片全屏铺满自适应的3种方式
Jul 07 HTML / CSS
深入解读CSS3中transform变换模型的渲染
May 27 #HTML / CSS
CSS3解决移动页面上点击链接触发色块的问题
Jun 03 #HTML / CSS
CSS3轻松实现清新 Loading 效果的简单实例
Jun 06 #HTML / CSS
CSS3制作精致的照片墙特效
Jun 07 #HTML / CSS
CSS3字体效果的设置方法小结
Jun 13 #HTML / CSS
CSS3美化表单控件全集
Jun 29 #HTML / CSS
CSS3+DIV实现漂亮的动画彩色标签
Jun 16 #HTML / CSS
You might like
php中的观察者模式
2010/03/24 PHP
第4章 数据处理-php数组的处理-郑阿奇
2011/07/04 PHP
PHP+Mysql+jQuery查询和列表框选择操作实例讲解
2015/10/22 PHP
PHP实现的redis主从数据库状态检测功能示例
2017/07/20 PHP
PHP排序算法之堆排序(Heap Sort)实例详解
2018/04/21 PHP
javascript采用数组实现tab菜单切换效果
2012/12/12 Javascript
jquery怎样实现ajax联动框(一)
2013/03/08 Javascript
jQuery控制iFrame(实例代码)
2013/11/19 Javascript
网页中表单按回车就自动提交的问题的解决方案
2014/11/03 Javascript
JS弹出层遮罩,隐藏背景页面滚动条细节优化分析
2016/04/29 Javascript
浅谈JS函数定义方式的区别
2016/10/30 Javascript
vue打包后显示空白正确处理方法
2017/11/01 Javascript
nodejs操作mongodb的填删改查模块的制作及引入实例
2018/01/02 NodeJs
vue和小程序项目中使用iconfont的方法
2020/05/19 Javascript
解决vuex改变了state的值,但是页面没有更新的问题
2020/11/12 Javascript
[48:00]完美世界DOTA2联赛循环赛 Forest vs Inki BO2第二场 11.04
2020/11/04 DOTA
python爬虫_微信公众号推送信息爬取的实例
2017/10/23 Python
Python reduce()函数的用法小结
2017/11/15 Python
Python实现的桶排序算法示例
2017/11/29 Python
python机器学习之KNN分类算法
2018/08/29 Python
python 生成图形验证码的方法示例
2018/11/11 Python
在python中实现强制关闭线程的示例
2019/01/22 Python
Python 数据库操作 SQLAlchemy的示例代码
2019/02/18 Python
Python facenet进行人脸识别测试过程解析
2019/08/16 Python
python 实现保存最新的三份文件,其余的都删掉
2019/12/22 Python
如何将你的应用迁移到Python3的三个步骤
2019/12/22 Python
Python破解BiliBili滑块验证码的思路详解(完美避开人机识别)
2020/02/17 Python
mac 上配置Pycharm连接远程服务器并实现使用远程服务器Python解释器的方法
2020/03/19 Python
HTML5新增的表单元素和属性实例解析
2014/07/07 HTML / CSS
一波HTML5 Canvas基础绘图实例代码集合
2016/02/28 HTML / CSS
BOSE德国官网:尽探索之力,享音乐之极
2016/12/11 全球购物
荷兰男士时尚网上商店:Suitable
2017/12/25 全球购物
电子商务专业个人的自我评价分享
2013/10/29 职场文书
关爱留守儿童捐款倡议书
2015/04/27 职场文书
2015年秋季小班开学寄语
2015/05/27 职场文书
MySQL中InnoDB存储引擎的锁的基本使用教程
2021/05/26 MySQL