等比缩放之自适应神器——css3的rem
1.rem简介
rem是CSS3中新增加的一个单位值,他和em单位一样,都是一个相对单位。不同的是em是相对于元素的父元素的font-size进行计算;rem是相对于根元素html的font-size进行计算。这样一来rem就绕开了复杂的层级关系,实现了类似于em单位的功能。
2.rem兼容性
rem是CSS3新引进来的一个度量单位,大家心里肯定会觉得心灰意冷呀,担心浏览器的支持情况。其实大家不用害怕,你可能会惊讶,支持的浏览器还是蛮多的,比如:Mozilla Firefox 3.6+、Apple Safari 5+、Google Chrome、IE9+和Opera11+。只是可怜的IE6-8无法支持。
不过使用单位设置字体,可不能完全不考虑IE了,如果你想使用这个REM,但也想兼容IE下的效果,可你可考虑“px”和“rem”一起使用,用"px"来实现IE6-8下的效果,然后使用“Rem”来实现代浏览器的效果。就让IE6-8不能随文字的改变而改变吧,谁让这个Ie6-8这么老呢?可以针对低版本的IE浏览器做一定的处理:
- html { font-size: 62.5%; }
- body { font-size: 14px; font-size: 1.4rem; } /* =14px */
- h1 { font-size: 24px; font-size: 2.4rem; } /* =24px */
这样一来解决了IE低版本的不能兼容的问题,但生出另一个不足地方,就是增加了代码量。必竟鱼和熊掌很多时候不能兼得嘛。
3.rem使用
em是相对于其父元素来设置字体大小的,这样就会存在一个问题,进行任何元素设置,都有可能需要知道他父元素的大小,在我们多次使用时,就会带来无法预知的错误风险。而rem是相对于根元素<html>,这样就意味着,我们只需要在根元素确定一个参考值,这个参考值设置为多少,完全可以根据您自己的需求来定。假设就使用浏览器默认的字号16px,来看一些px单位与rem之间的转换关系:
如果你要设置一个不同的值,那么需要在根元素<html>中定义,为了方便计算,时常将在<html>元素中设置font-size值为62.5%:
- html {
- font-size: 62.5%; /* 10 ÷ 16 × 100% = 62.5% */
- }
相当于在<html>中设置font-size为10px。
4.例子:图片文字等等比缩放自适应
- <!DOCTYPE HTML>
- <html>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1" />
- <script src="jquery-1.7.1.min.js"></script>
- <title>home</title>
- <style>
- body {
- margin: 0;
- padding: 0;
- border: 0;
- background: #fd3b36;
- font-family: Microsoft Yahei, Arial, sans-serif;
- overflow-x: hidden;
- }
- #mainpage {
- background: url(home.png) no-repeat;
- background-size: 100%;
- width: 6.4rem;
- height: 11.36rem;
- }
- #content {
- width: 5.5rem;
- font-size: 0.26rem;
- margin: 0 auto;
- padding-top: 4.4rem;
- color: #fff;
- line-height: 0.38rem;
- }
- #btn {
- text-align: center;
- }
- #btn img {
- width: 3.66rem;
- height: 0.96rem;
- margin-top: 0.64rem;
- }
- </style>
- <title>活动首页</title>
- <body>
- <div id="mainpage">
- <div id="content">在这个阖家团圆、祝福新年的节日,祝大家新年快乐,万事大吉,平平安安,羊年行大运,发大财。</div>
- <div id="btn">
- <img src="btn.png">
- </div>
- </div>
- <script>
- /*将根元素字号大小设置为:屏宽与图宽的比;
- 由于chrom对10px以下的字不再缩小,而且手机屏
- 都比较小,所以作为默认字体大小又乘了100,这样
- 计算其他元素大小时,量出图上大小再除以100就可以了*/
- function defaultfont() {
- var sw = $(window).width();
- var pw = 640;
- var f = 100*sw/pw;
- $('html').css('font-size', f+'px');
- }
- /*之所以要延时100ms再调用这个函数是因为
- 如果不这样屏幕宽度加载会有误差*/
- defaultfont();
- setTimeout(function(){
- defaultfont();
- }, 100);
- </script>
- </body>
- </html>
等比缩放之自适应神器——css3的rem的更多相关文章
- css3中rem和em是干嘛的
css3中rem和em是干嘛的 一.总结 一句话总结:对rem综合评价是用来做web app它绝对是最合适的人选之一. 这里我特别强调web app,web page就不能使用rem吗,其实也当然可以 ...
- Android webView 支持缩放及自适应屏幕
//支持javascript web.getSettings().setJavaScriptEnabled(true); // 设置可以支持缩放 web.getSettings().setSupp ...
- web app 自适应 弹性布局之rem
关于rem,主要参考文档 1.腾讯ISUX (http://isux.tencent.com/web-app-rem.html) 2.http://www.w3cplus.com/css3/defin ...
- css3 em rem等单位的区别
px:绝对单位,页面按精确像素展示 em:相对单位,基准点为父节点字体的大小,如果自身定义了font-size按自身来计算(浏览器默认字体是16px),整个页面内1em不是一个固定的值. rem:相对 ...
- 【转】CSS3的REM设置字体大小
rem 长度单位 在Web中使用什么单位来定义页面的字体大小,至今天为止都还在激烈的争论着,有人说PX做为单位好,有人说EM优点多,还有人在说百分比方便,以至于出现了CSS Font-Size: ...
- CSS3的REM设置字体大小
在Web中使用什么单位来定义页面的字体大小,至今天为止都还在激烈的争论着,有人说PX做为单位好,有人说EM优点多,还有人在说百分比方便,以至于出现了CSS Font-Size: em vs. px v ...
- 浅谈css3长度单位rem,以及移动端布局技巧
rem是什么? rem是css3中新增加的一个单位属性(font size of the root element),根据页面的根节点的字体大小进行转变的单位.root!!!!!!!!!根节点,也就是 ...
- CSS3 em && rem 详细教程
1 # mobile css & rem & em & px > 1 rem === 16px 任意浏览器的默认字体高都是 16px, 所有未经调整的浏览器都符合: 1e ...
- 简单介绍移动端CSS3单位rem的用法
PC端大部份是用px单位,小部分用em单位,而移动端,请全部用rem单位吧.目前大部份设备,包括但不限于iOS 5+.Android 2.3+.Window Phone 8+都是可以兼容的,具体兼容表 ...
随机推荐
- MongoDB:利用官方驱动改装为EF代码风格的MongoDB.Repository框架 六:支持多数据库操作
本次主要内容:修正MongoDB.Repository框架对多数据库的支持. 在之前的五篇文章中对MongoDB.Repository框架做了简单的介绍是实现思路.之前是考虑MongoDB.Repos ...
- vim复制
关于vim复制剪贴粘贴命令的总结 最近在使用vim,感觉很好很强大,但是在使用复制剪切粘贴命令是,碰到了一些小困惑,网上找了一些资料感觉很不全,讲的也不好,遂自己进行实践并总结了. 首先是剪切(删 ...
- 字符串拼接 strcat ;数组和指针的区别
问题:字符串拼接 strcat 方法1: 开辟新空间,存放结果: #include <stdio.h> #include <stdlib.h> #include <str ...
- socket网络编程快速上手(二)——细节问题(3)
3.SIGPIPE问题 人怕牺牲,我们写的程序也一样,人有死不瞑目,程序又何尝不是?程序跑着跑着,突然就崩掉了.好一点的牺牲前告诉你些打印,差点的也能用core文件等一些手段查出死在哪了,最惨不忍睹的 ...
- git的初步使用---本地代码库的使用和提交
git的初步使用---本地代码库的使用和提交 git是一个好东西,但对于新手来说,这个工具并不好使用,因为它里面涉及到很多东西,而这些东西新手一时间是无法理解的.不幸的是,本人就是新手一枚,所以,这里 ...
- Linux负载均衡软件LVS之四(测试篇-完)
一.启动LVS集群服务LVS负载均衡管理和使用有两种方式,一种是以ipvsadm命令行脚步与ldirectord监控方式,一种是以Piranha工具进行管理和使用.下面分别介绍. 1.利用ipvsad ...
- 回溯法、数独与N阶可达问题
回溯法是剪了枝的穷举,这是字面上的说法,不太好理解,不如讲解实例来的酸爽,于是引出了N阶可达问题: 有N个国家,每个国家有若干城市,小明要从中国(任意一个城市)出发,遍历所有国家(假设这个遍历顺序已经 ...
- 快速上手微信小程序-快递100
2007 年 1 月 9 日,乔布斯在旧金山莫斯科尼会展中心发布了首款 iPhone,而在十年后的 1 月 9 日,微信小程序正式上线.张小龙以这样的形式,向乔布斯致敬. 小程序在哪里? 小程序功能模 ...
- 微信JSAPI支付 跟 所遇到的那些坑
首先介绍一下我在调用微信支付接口使用的是 weixin.senparc SDK,非常方便好用开源的一个微信开发SDK. weixin.senparc SDK 官网:http://weixin.senp ...
- POJ3177 Redundant Paths 双连通分量
Redundant Paths Description In order to get from one of the F (1 <= F <= 5,000) grazing fields ...