1.rem简介

  remCSS3中新增加的一个单位值,他和em单位一样,都是一个相对单位。不同的是em是相对于元素的父元素的font-size进行计算;rem是相对于根元素htmlfont-size进行计算。这样一来rem就绕开了复杂的层级关系,实现了类似于em单位的功能。

2.rem兼容性

remCSS3新引进来的一个度量单位,大家心里肯定会觉得心灰意冷呀,担心浏览器的支持情况。其实大家不用害怕,你可能会惊讶,支持的浏览器还是蛮多的,比如:Mozilla Firefox 3.6+Apple Safari 5+Google ChromeIE9+Opera11+。只是可怜的IE6-8无法支持。

不过使用单位设置字体,可不能完全不考虑IE了,如果你想使用这个REM,但也想兼容IE下的效果,可你可考虑“px”和“rem”一起使用,用"px"来实现IE6-8下的效果,然后使用“Rem”来实现代浏览器的效果。就让IE6-8不能随文字的改变而改变吧,谁让这个Ie6-8这么老呢?可以针对低版本的IE浏览器做一定的处理:

  1. html { font-size: 62.5%; }
  2. body { font-size: 14px; font-size: 1.4rem; } /* =14px */
  3. h1   { font-size: 24px; font-size: 2.4rem; } /* =24px */

这样一来解决了IE低版本的不能兼容的问题,但生出另一个不足地方,就是增加了代码量。必竟鱼和熊掌很多时候不能兼得嘛。

3.rem使用

      前面说了em是相对于其父元素来设置字体大小的,这样就会存在一个问题,进行任何元素设置,都有可能需要知道他父元素的大小,在我们多次使用时,就会带来无法预知的错误风险。而rem是相对于根元素<html>,这样就意味着,我们只需要在根元素确定一个参考值,这个参考值设置为多少,完全可以根据您自己的需求来定。

假设就使用浏览器默认的字号16px,来看一些px单位与rem之间的转换关系:

如果你要设置一个不同的值,那么需要在根元素<html>中定义,为了方便计算,时常将在<html>元素中设置font-size值为62.5%:

  1. html {
  2. font-size: 62.5%; /* 10 ÷ 16 × 100% = 62.5% */
  3. }

相当于在<html>中设置font-size10px

4.例子:图片文字等等比缩放自适应

  1. <!DOCTYPE HTML>
  2. <html>
  3. <meta charset="UTF-8">
  4. <meta name="viewport" content="width=device-width, initial-scale=1" />
  5. <script src="jquery-1.7.1.min.js"></script>
  6. <title>home</title>
  7. <style>
  8. body {
  9. margin: 0;
  10. padding: 0;
  11. border: 0;
  12. background: #fd3b36;
  13. font-family: Microsoft Yahei, Arial, sans-serif;
  14. overflow-x: hidden;
  15. }
  16. #mainpage {
  17. background: url(home.png) no-repeat;
  18. background-size: 100%;
  19. width: 6.4rem;
  20. height: 11.36rem;
  21. }
  22. #content {
  23. width: 5.5rem;
  24. font-size: 0.26rem;
  25. margin: 0 auto;
  26. padding-top: 4.4rem;
  27. color: #fff;
  28. line-height: 0.38rem;
  29. }
  30. #btn {
  31. text-align: center;
  32. }
  33. #btn img {
  34. width: 3.66rem;
  35. height: 0.96rem;
  36. margin-top: 0.64rem;
  37. }
  38. </style>
  39. <title>活动首页</title>
  40. <body>
  41. <div id="mainpage">
  42. <div id="content">在这个阖家团圆、祝福新年的节日,祝大家新年快乐,万事大吉,平平安安,羊年行大运,发大财。</div>
  43. <div id="btn">
  44. <img src="btn.png">
  45. </div>
  46. </div>
  47. <script>
  48. /*将根元素字号大小设置为:屏宽与图宽的比;
  49. 由于chrom对10px以下的字不再缩小,而且手机屏
  50. 都比较小,所以作为默认字体大小又乘了100,这样
  51. 计算其他元素大小时,量出图上大小再除以100就可以了*/
  52. function defaultfont() {
  53. var sw = $(window).width();
  54. var pw = 640;
  55. var f = 100*sw/pw;
  56. $('html').css('font-size', f+'px');
  57. }
  58. /*之所以要延时100ms再调用这个函数是因为
  59. 如果不这样屏幕宽度加载会有误差*/
  60. defaultfont();
  61. setTimeout(function(){
  62. defaultfont();
  63. }, 100);
  64. </script>
  65. </body>
  66. </html>

等比缩放之自适应神器——css3的rem的更多相关文章

  1. css3中rem和em是干嘛的

    css3中rem和em是干嘛的 一.总结 一句话总结:对rem综合评价是用来做web app它绝对是最合适的人选之一. 这里我特别强调web app,web page就不能使用rem吗,其实也当然可以 ...

  2. Android webView 支持缩放及自适应屏幕

    //支持javascript web.getSettings().setJavaScriptEnabled(true);  // 设置可以支持缩放  web.getSettings().setSupp ...

  3. web app 自适应 弹性布局之rem

    关于rem,主要参考文档 1.腾讯ISUX (http://isux.tencent.com/web-app-rem.html) 2.http://www.w3cplus.com/css3/defin ...

  4. css3 em rem等单位的区别

    px:绝对单位,页面按精确像素展示 em:相对单位,基准点为父节点字体的大小,如果自身定义了font-size按自身来计算(浏览器默认字体是16px),整个页面内1em不是一个固定的值. rem:相对 ...

  5. 【转】CSS3的REM设置字体大小

    rem 长度单位   在Web中使用什么单位来定义页面的字体大小,至今天为止都还在激烈的争论着,有人说PX做为单位好,有人说EM优点多,还有人在说百分比方便,以至于出现了CSS Font-Size: ...

  6. CSS3的REM设置字体大小

    在Web中使用什么单位来定义页面的字体大小,至今天为止都还在激烈的争论着,有人说PX做为单位好,有人说EM优点多,还有人在说百分比方便,以至于出现了CSS Font-Size: em vs. px v ...

  7. 浅谈css3长度单位rem,以及移动端布局技巧

    rem是什么? rem是css3中新增加的一个单位属性(font size of the root element),根据页面的根节点的字体大小进行转变的单位.root!!!!!!!!!根节点,也就是 ...

  8. CSS3 em && rem 详细教程

    1 # mobile css & rem & em & px > 1 rem === 16px 任意浏览器的默认字体高都是 16px, 所有未经调整的浏览器都符合: 1e ...

  9. 简单介绍移动端CSS3单位rem的用法

    PC端大部份是用px单位,小部分用em单位,而移动端,请全部用rem单位吧.目前大部份设备,包括但不限于iOS 5+.Android 2.3+.Window Phone 8+都是可以兼容的,具体兼容表 ...

随机推荐

  1. discuz 门户页模板中的keywords和description不能正常显示

    最近用discuz搭建了一个素食网,在处理门户页模板时,发现虽然在后台的seo设置了keywords和description,但是以游客的身份访问时,不显示后台设置的内容,显示为: <meta ...

  2. BDD

    Binding business requirements to .NET code http://www.specflow.org/ 行为驱动开发 BDD:Behavior Driven Devel ...

  3. defer 与 async

    defer HTML4.01定义的 只适用于外部脚本(IE4~7会支持内嵌脚本的defer属性) 告诉浏览器立即下载,延迟执行,脚本会延迟到整个页面全部解析完毕之后才运行 HTML5规范要求脚本按照他 ...

  4. URLDecoder: Incomplete trailing escape (%) pattern

    在使用URLDecoder对字符串进行解码的时候 报以下异常信息: Exception in thread "main" java.lang.IllegalArgumentExce ...

  5. RTB撕开黑盒子 Part 1: Datacratic's RTB Algorithms

    这篇文章是讨论Datacratic所用的统计和经济理论的一些内容.我们开发了real time bidding算法s.为了实现广告主的目标,我们的算法自动地利用其它广告主的次优策略,并再查看广告的底价 ...

  6. 从零开始学C++之STL(四):算法简介、7种算法分类

    一.算法 算法是以函数模板的形式实现的.常用的算法涉及到比较.交换.查找.搜索.复制.修改.移除.反转.排序.合并等等. 算法并非容器类型的成员函数,而是一些全局函数,要与迭代器一起搭配使用. 算法的 ...

  7. 37条常用Linux Shell命令组合

    序号 任务 命令组合 1 删除0字节文件 find . -type f -size 0 -exec rm -rf {} \; find . type f -size 0 -delete 2 查看进程, ...

  8. jsp传值乱码解决办法

    在jsp中,我们经常从数据库读取数据返回客户端,但我们常常在制作时出现乱码现象,所以我们可以用<%request.setCharacterEncoding("UTF-8"); ...

  9. Android中系统设置中的清除数据究竟会清除哪些数据

    今天中的一个story突然提到了系统设置中的清理数据,后来开始思考究竟系统的应用的这个清理功能,究竟会清理那些数据. 于是开始研究,以com.mx.browser为例,思路大概为首先为/data/da ...

  10. HQL练习

    Hive学习笔记总结 05. Hql练习 1. hql基础练习 题目和数据来源:http://www.w2b-c.com/article/150326(去掉-) create和load create ...