## px,em,rem之间的关系和换算方式
**使用rem与em的原因**:当平板过渡到pc端的时候,字体大小是不是应该要变大一点,不然pc端看到的字体和平板字体一样大小,对使用pc打开网页用户来说就小了很多。又当平板过渡到手机端的时候,字体是不是又要变小一点,不然对使用手机用户来说,平板看到的字体大小正好,到手机就会感觉大了一点。这个时候你设置用媒体查询来设置html根节点的大小来控制rem大小就很方便了。
* px:像素,相对长度单位,相对于屏幕分辨率而言;px的缺点是其不能适应浏览器缩放时产生的变化,因此一般不用于响应式网站。
* em:相对长度单位,相对于当前容器内( 父元素 )的文本的字体尺寸;如果当前容器字体没设置字体大小,则以浏览器的默认字体尺寸来计算,em会继承父辈设置,所以会发现当前的文本字体会复合,是可变的;em是相对于其父元素来设置字体大小的,这样就会存在一个问题,进行任何元素设置,都有可能需要知道他父元素的大小。
* rem:css3新增的单位,也是相对长度单位,它相对于html的根元素,一般是body的字体设置值,这也是与em的本质区别;
**px与rem之间的换算**
`rem`是相对于根元素`<html>`,这样就意味着,我们只需要在根元素确定一个参考值,这个参考值设置为多少,完全可以根据您自己的需求来定。rem可以做到只修改根元素的比例,就可以通过这个比例调整所有字体大小。
我们都知道,浏览器默认的字体大小是`16px`,来看一些`px`单位与`rem`之间的转换关系:
~~~
| px | rem |
------------------------
| 12 | 12/16 = .75 |
| 14 | 14/16 = .875 |
| 16 | 16/16 = 1 |
| 18 | 18/16 = 1.125 |
| 20 | 20/16 = 1.25 |
| 24 | 24/16 = 1.5 |
| 30 | 30/16 = 1.875 |
| 36 | 36/16 = 2.25 |
| 42 | 42/16 = 2.625 |
| 48 | 48/16 = 3 |
-------------------------
~~~
为了方便计算,通常将在`<html>`元素中设置`font-size`值为`62.5%`,相当于在`<html>`中设置`font-size`为`10px`,此时,上面示例中所示的值将会改变:
~~~
| px | rem |
-------------------------
| 12 | 12/10 = 1.2 |
| 14 | 14/10 = 1.4 |
| 16 | 16/10 = 1.6 |
| 18 | 18/10 = 1.8 |
| 20 | 20/10 = 2.0 |
| 24 | 24/10 = 2.4 |
| 30 | 30/10 = 3.0 |
| 36 | 36/10 = 3.6 |
| 42 | 42/10 = 4.2 |
| 48 | 48/10 = 4.8 |
-------------------------
~~~
如果你根元素的字体大小选62.5%,那px和rem之间的换算就是px直接除以10就得到rem了。例如,假设一个div宽度为2rem,高度为3rem.则它换算成px为 width:20px.height:30px,同理,假如一个设计稿为宽度20px,高度为30px,则换成成rem,则是 20/10=2rem,30/10=3rem。
*****
**px与em之间的换算**
**1.** em和px如何进行换算
为了简化font-size的换算,需要在css中的body选择器中先全局声明 font-size=62.5%,很多初学者可能会在此定义0.625em或者直接定义12px,这是没有效果的,一定要定义font-size=62.5%!
这就使em值变为 16px \* 62.5%=10px, 这样12px=1.2em, 10px=1em, 也就是说只需要将你的原来的px数值除以10,然后换上em作为单位就行了。
由于em具有会继续父级出血元素的字体大小的特点,这使得1em=10px,所以12px=1.2em。px与em的转换通过10就可以得来,很方便了吧!
**2.** CSS中应用em需要注意两点
* body选择器中声明Font-size=62.5%。
* 将你的原来的px数值除以10,然后换上em作为单位。
* 重新计算那些被放大的字体的em数值。避免字体大小的重复声明。
**注意** :
1. 如果没有在根元素(html字体)指定参照值,那浏览器默认1 rem就是16px,若指定值,则1rem就是指定值 ,也就是所有未经调整的浏览器都符合:1em = 1rem = 16px。
2. html设置为62.5%或者10px时会失效,是因为 小于12px或者75%的字体大小 不支持换算。这可能与有些浏览器不支持12px以下的大小有关。所以,使用rem单位,html的字体默认字体大小必须设置为12px或以上。若小于12px则浏览器换算时自动默认字体为12px。
3. 选择使用什么字体单位主要由你的项目来决定,如果你的用户群都使用最新版的浏览器,那推荐使用rem,如果要考虑兼容性,那就使用px,或者两者同时使用。
**浏览器的兼容性**
除了IE6-IE8r,其它的浏览器都支持em和rem属性,px是所有浏览器都支持。为了浏览器的兼容性,可“px”和“rem”一起使用,用"px"来实现IE6-8下的效果,然后使用“rem”来实现其他浏览器的效果。
- 第一章 . bootstrap介绍
- 第二章 . 全局CSS样式
- 1、总体注意事项
- 2、栅格系统
- 3、排版
- 4、代码
- 5、表格
- 6、表单
- 7、 按钮
- 8、 图片
- 9、辅助类
- 10、响应式工具
- 第三章 . bootstrap相关CSS应用
- 1、CSS媒体查询 @media
- 2、px,em,rem之间的关系和换算方式
- 第四章 . 组件
- 1、Glyphicons 字体图标
- 2、下拉菜单
- 3、按钮组
- 4、按钮式下拉菜单
- 5、输入框组
- 6、导航
- 7、导航条
- 8、路径导航
- 9、分页
- 10、标签
- 11、徽章
- 12、巨幕
- 13、页头
- 14、缩略图
- 15、警告框
- 16、进度条
- 17、媒体对象
- 18、列表组
- 19、面版
- 20、Well
- 第五章 . JavaScript 插件
- 1、JavaScript 插件引入前提
- 2、过渡效果 (transition.js)
- 3、模态框 (modal.js)
- 4、下拉菜单 (dropdown.js)
- 5、滚动监听 (scrollspy.js)
- 6、可切换标签 (tab.js)
- 7、工具提示 (tooltip.js)
- 8、弹出框 (popover.js)
- 9、警告信息 (alert.js)
- 10、按钮 (button.js)
- 11、折叠插件(collapse.js)
- 12、轮播插件(carousel.js)
- 13、Affix插件(affix.js)