CSS3中的rem单位
一、rem介绍
rem是什么?
它的全称是 font size of the root element (根元素的字体大小)
它是CSS3中新增加的一个尺寸(度量)单位,根节点(html)的font-size决定了rem的尺寸,也就是说它是一个相对单位,相对于(html)。
浏览器的默认字体?
浏览器的默认的font-size是16px,1rem默认就等于16px。(chrome最小字体为12px)
rem可以做什么及它的应用场景?
用来做web app的屏幕适配,因为不同手机型号的屏幕大小都不同,所以这时候我们就不能用px来做单位,rem是适配不同手机屏幕的一种方案。
设置的font-size来改变rem尺寸
:root{
font-size:20px;
}
.box{
width:1rem;
height:1rem;
background-color:purple;
}
将根元素html的font-size设置为20px,此时box的宽高都为20px,也就是1rem = 20px
##二、步骤
###1. 首先用js根据不同的视窗宽度动态的改变根元素的font-size
```
//获取视窗宽度(兼容性写法)
let rootWidth = document.documentElement.clientWidth || document.body.clientWidth;
//获取html元素
let rootDom = document.querySelector('html');
//动态设置html的font-size(除以10是让浏览器的font-size达到比较合适目的)
rootDom.style.fontSize = rootWidth / 10 + 'px';
<br>
###2. 根据设计师的设计稿中的px单位转换成rem单位
<br>
####如何正确的通过px值计算rem值
<br>
**px单位 / font-size【动态】 = rem单位【动态】 (错误的想法,有的小伙伴迷糊在这里)**
**px单位 / font-size【固定】 = rem单位【固定】 (正确的想法,有的小伙伴可能开始想不明白)**
***这里要注意的是你计算的font-size是固定的,而不是html的font-size是固定的,很多新人困惑在这里***
<br>
<br>
**错误的计算方法:(动态font-size)**
**200px / (320 / 10)【iphone5】 = 6.25rem**
**200px / (375 / 10)【iphone6】 = 5.333rem**
**200px / (768 / 10)【ipad】 = 2.604rem**
<br>
**这样的话**
**在【iphone5】下6.25rem 就是200px**
**在【iphone6】下5.333rem 就是200px**
**在【ipad】下2.604rem 就是200px**
<br>
我们通过了***(图纸的px值 和 动态的font-size值)求出了动态的rem***
<br>
**按照这样的方式设置rem,在不同的尺寸的机型下都是500px,那我还不如直接写死500px,因为屏幕的尺寸大小都是不同的,所以我们这样做毫无意义。(相当于我们根据一个固定的px值求不同机型下的rem值)。**
<br>
<br>
**正确的计算方法:(固定font-size)以iphone6为基准**
**200px / (375 / 10)【iphone6】 = 5.333rem**
<br>
**这样的话**
<br>
**在【iphone5】下5.333rem 就是170px**
**在【iphone6】下5.333rem 就是200px**
**在【ipad】下5.333rem 就是410px**
<br>
**也可以以【iphone5】为基准**
**200px / (320 / 10) 【iphone5】 = 6.25rem**
<br>
**这样的话**
<br>
**在【iphone5】下6.25em 就是200px**
**在【iphone6】下6.25rem 就是234px**
**在【ipad】下6.25rem 就是480px**
<br>
<br>
**这样就达到用rem来适配不同尺寸的屏幕了**
<br>
**我们以一种机型的font-size为基准,来计算出一个固定的rem,根元素html的font-size是动态的,所以这个rem值会根据不同机型的font-size达到适配的目的(注意:你参与计算的font-size值绝不能是动态的,否则毫无意义)。**
<br>
**设计师常选择iPhone6作为基准设计尺寸,我们一般以iPhone6为基准**
CSS3中的rem单位的更多相关文章
- 如何在手机项目中使用rem单位
rem这是个低调的css单位,近一两年开始崭露头角,有许多同学对rem的评价不一,有的在尝试使用,有的在使用过程中遇到坑就弃用了.但是我对rem综合评价是用来做web app它绝对是最合适的人选之一. ...
- Css3中自适应布局单位vh、vw
视口单位(Viewport units) 什么是视口? 在桌面端,视口指的是在桌面端,指的是浏览器的可视区域:而在移动端,它涉及3个视口:Layout Viewport(布局视口),Visual Vi ...
- CSS3中的Rem值与Px之间的换算
bootstrap默认 html{font-size: 10px;} rem是一个相对大小的值,它相对于根元素<html>, 比如假设,我们设置html的字体大小的值为html{font- ...
- CSS3 中的 rem 值与 px 之间的换算
想给博客换个主题,到处找找不到满意的,最后发现默认主题 twentytwelve 越看越顺眼,于是就想动手改一下用. 看 CSS 文件的时候发现引入了一个新大小单位:rem,虽然 CSS 文件注释里有 ...
- css3中的相关单位
引用地址 :http://blog.csdn.net/jyy_12/article/details/42557241
- 理解并使用CSS3中的单位rem vh vw vmin vmax
rem vh vw vmin vmax做为CSS3中的新单位,其实都出来挺久的了,这篇文章将总结并理解下它们. rem 如果你给body设置了font-size字体大小,那么body的任何子元素的1e ...
- [css] CSS3中的单位
FROM http://www.qianduan.net/understand-the-unit-of-length-in-the-css.html CSS3中的单位: css3中引入了一些新的单位: ...
- rem单位在手机网站中的使用
em单位是相对于父节点的font-size,会有一些组合的问题,而rem是相对于根节点(或者是html节点),也就是说你可以在html节点定义一个单独的字体大小,然后所有其他元素使用rem相对于这个字 ...
- css3中rem和em是干嘛的
css3中rem和em是干嘛的 一.总结 一句话总结:对rem综合评价是用来做web app它绝对是最合适的人选之一. 这里我特别强调web app,web page就不能使用rem吗,其实也当然可以 ...
随机推荐
- Eclipse Mac OS 安装 最新版 Subversion插件subclipse
subclipse 目前全部转移到github 官方地址 https://github.com/subclipse/subclipse/wiki Eclipse mac版 安装 最新版svn插件sub ...
- SpringMVC Root WebApplicationContext启动流程
传统的SpringMVC项目中,需要在web.xml中配置Contextlistener.ContextLoaderListener是负责引导启动和关闭Spring的Root上下文的监听器.主要将处理 ...
- mybatis源码学习(二):SQL的执行过程
从上一篇文章中,我们了解到MapperMethod将SQL的执行交给了sqlsession处理.今天我们继续往下看处理的过程. SqlSession接口除了提供获取Configuration,Mapp ...
- 初学dp心得
从STL到贪心,再到现在的动态规划,可以说动态规划真的让我学的有点蒙,对于一些题目,会做,但是不会用DP,现在还不能熟练的写出状态转移方程,更重要的是,自己宛如一个哺乳期的小孩,做题需要套模板,没有模 ...
- select函数的使用
select函数是 I/O 复用中非常重要的一个函数,属于并发编程的.它能够监视我们需要监视的文件描述符的变化情况–读.写或者异常 1. 函数原型 #include <sys/select.h& ...
- RF(表格数据获取)
一.表格数据获取 Get Table Cell [locator | row | col] 获取表格数据 Open Browser file:///D:/HBuilderX/workspace/Pro ...
- 再谈 PHP 未来之路
前段时间我写过一篇博文<phper:敢问路在何方>,分析了 PHPer 的困境以及 PHP 程序员的学习.进阶突破之路.同时我在知乎上也发过类似的提问.从大家的评论和回答看,大体分为以下几 ...
- JavaScript 循环判断练习题
JavaScript 循环判断练习题 小明有一组水果("苹果","梨子","香蕉","葡萄","西瓜" ...
- 自定义比较器(IComparer接口的实现)
class FileNameSort : IComparer { [System.Runtime.InteropServices.DllImport("Shlwapi.dll", ...
- Spring官网阅读(八)容器的扩展点(三)(BeanPostProcessor)
在前面两篇关于容器扩展点的文章中,我们已经完成了对BeanFactoryPostProcessor很FactoryBean的学习,对于BeanFactoryPostProcessor而言,它能让我们对 ...