2019独角兽企业重金招聘Python工程师标准>>>

写这篇文章是因为自己被rem这个坑绊过脚,因此特意去研究了下rem这个单位。

简单阐述下px、em、rem之前的关系(其实网上很多,我这里稍微提一下)。

先抛出一个问题:为什么要选择rem?

px:像素是相对于显示器屏幕分辨率而言的相对长度单位。pc端使用px倒也无所谓,可是在移动端,因为手机分辨率种类颇多,不可能一个个去适配,这时px就显得非常无力,所以就要考虑em和rem。

em:继承父级的,假设html的font-size默认为16px,body字体大小定义为50%,那么在body里字体大小就是1em=8px了。可当你又定义了一个div,然后把字体设置成了50%,请问,现在div下的1em等于多少?因为继承了父级的值,现在这个div里的1em=4px,这么嵌套下去的话,抱歉,我数学不好!所有rem就出现了。

rem:是em的升级版,rem只会相对html的值,不会受到父级的影响,这样的好处在于:从em里的例子来讲,1rem始终会等于8px。使用的时候不需要重新计算rem此时的大小。rem因为是css3增加的,所以ie8或以下请无视(始终想不明白,为什么国人至今对微软都放弃的ie这么恋恋不舍)。

以上也算是讲清了他们之间的区别和关系,rem更多的运用于移动H5页面的适配使用。

下面来说说怎么更方便的使用rem和自己开文处提到的坑!

之前遇到的坑是这样的。浏览器默认的字体大小都是16px(注意这里),所以要使1rem=10px,那么只要在html选择器中声明Font-size=62.5%(10÷16*100%=62.5%)就可以直接使用1rem=10px单位进行换算,其实这个算法是没有错的。可是,哪里来的自信让每个浏览器默认字体都是16px????反正我也不知道自信哪来。。现在Chrome默认大小可以是12px也可以是16px,那么问题来了,国内浏览器,有几个不是用的谷歌内核。所以html选择器中声明Font-size=62.5%,1rem就等于10px的换算就有点坑爹了,对于我这种一个像素都纠结的人来说,很蛋疼。这坑是我当时买书学h5的时候预留下的后遗症,现在这个毛病还有,因为快和方便 T_T!真是矛盾。。。

坑可以填。rem单位还是可以变的容易换算和精准。所以就去找了些工具和资料。

因为rem是相对html的,那么只要将html选择器设置一个绝对大小的值:比如在html选择器设置font-size:20px;那么1rem=20px(解释下为什么是20而不是其他的,首先10的倍数容易计算,那为什么不是10本身而是20?现在Chrome最小的字体是12px,所以10px是无效的,进一步就取20px);现在是不是和效果图一个像素都不差?!!!

且要兼容手机各个分别率,使用媒体查询media 可以设置不同的大小,这样在常规的设备中都可以精准到每一个像素。

这么换算来换算去好麻烦有木有!!所有发现了下面的换算工具,妈妈再也不用说我数学题不会做了!

下面是我直接在工具复制过来的现成rem换算适配代码↓(设计稿宽度:640,字体值:20)

@media only screen and (max-width: 1080px), only screen and (max-device-width:1080px) {html,body {font-size:16.875px;}}@media only screen and (max-width: 960px), only screen and (max-device-width:960px) {html,body {font-size:15px;}}@media only screen and (max-width: 800px), only screen and (max-device-width:800px) {html,body {font-size:12.5px;}}@media only screen and (max-width: 720px), only screen and (max-device-width:720px) {html,body {font-size:11.25px;}}@media only screen and (max-width: 640px), only screen and (max-device-width:640px) {html,body {font-size:10px;}}@media only screen and (max-width: 600px), only screen and (max-device-width:600px) {html,body {font-size:9.375px;}}@media only screen and (max-width: 540px), only screen and (max-device-width:540px) {html,body {font-size:8.4375px;}}@media only screen and (max-width: 480px), only screen and (max-device-width:480px) {html,body {font-size:7.5px;}}@media only screen and (max-width: 414px), only screen and (max-device-width:414px) {html,body {font-size:6.46875px;}}@media only screen and (max-width: 400px), only screen and (max-device-width:400px) {html,body {font-size:6.25px;}}@media only screen and (max-width: 375px), only screen and (max-device-width:375px) {html,body {font-size:5.859375px;}}@media only screen and (max-width: 360px), only screen and (max-device-width:360px) {html,body {font-size:5.625px;}}@media only screen and (max-width: 320px), only screen and (max-device-width:320px) {html,body {font-size:5px;}}@media only screen and (max-width: 240px), only screen and (max-device-width:240px) {html,body {font-size:3.75px;}

下载是下载地址,离线和在线都有

离线版本:https://github.com/leon776/grunt-px2rem在线版本:http://mxd.tencent.com/wp-content/uploads/2014/11/rem.html

转载于:https://my.oschina.net/jamesview/blog/813490

前端rem单位的正确使用姿势(转)相关推荐

  1. 前端rem单位的使用研究

    分析网易新闻手机web端,http://3g.163.com/,发现里面大量使用了rem这个单位进行计算大小. 针对rem这个单位有如下解析: px:像素是相对于显示器屏幕分辨率而言的相对长度单位.p ...

  2. 前端css单位小结:vh、vw、百分比、rem、px、计算属性calc

    写在前面: 本文作为本人学习总结之用,同时分享给大家~ 个人前端博客网站:zhangqiang.hk.cn 欢迎加入博主的前端学习qq交流群::706947563,专注前端开发,共同学习进步! 前端c ...

  3. 前端怎么把px单位换成rem单位解决项目页面适配问题

    先看没有适配前的效果,下面是没有适配前,使用的是px单位,代码和效果如下: <!DOCTYPE html> <html><head><meta charset ...

  4. html兼容不同屏幕 代码,rem的正确使用姿势 -- 完美解决H5页面不同尺寸屏幕的适配问题...

    实例代码: 废土坱行 * { margin: 0; padding: 0; } .downloadBtn { width: 12rem; height: 3.6rem; background: red ...

  5. rem的正确使用姿势 -- 完美解决H5页面不同尺寸屏幕的适配问题

    实例代码: <!DOCTYPE html> <html> <head><meta charset="utf-8" /><met ...

  6. 什么叫取反_转载:CodeReview正确的姿势是什么?

    作者:微博是阿里孤尽 链接:https://www.zhihu.com/question/383079175/answer/1109655276 来源:知乎 著作权归作者所有.商业转载请联系作者获得授 ...

  7. class ts 扩展方法_ts类型声明文件的正确使用姿势

    ts类型声明文件的正确使用姿势 ts声明文件类型 npm install @types/jquery --save-dev 与npm一同发布 解释: package.json 中有 types 字段, ...

  8. 移动端rem单位用法

    1.rem(font size of the root element)是指相对于根元素的字体大小的单位,em(font size of the element)是指相对于父元素的字体大小的单位.它们 ...

  9. Redis 作者 Antirez 讲如何实现分布式锁?Redis 实现分布式锁天然的缺陷分析Redis分布式锁的正确使用姿势!...

    Redis分布式锁基本原理 采用 redis 实现分布式锁,主要是利用其单线程命令执行的特性,一般是 setnx, 只会有一个线程会执行成功,也就是只有一个线程能成功获取锁:看着很完美. 然而-- 看 ...

最新文章

  1. 并查集类的c++封装,比较union_find algorithm四种实现方法之间的性能差别
  2. WPF布局控件Grid的基本使用 - 使用kaxaml
  3. HBuilder 无法检测到XCode上的模拟器
  4. linux下nginx安装与设置开机启动
  5. cent 8.0 安装tomcat 9.0_Tomcat部署及优化
  6. 2016中国大学生程序设计竞赛(长春)Sequence II HDU - 5919 主席树
  7. 【 jquery 】常用
  8. linux下tomcat无法显示图片验证码
  9. 聚类的概念和一般步骤
  10. Spring Boot文件上传示例
  11. linux中用at命令5分钟后执行,我使用过的Linux命令之at - 在指定时间执行一次任务...
  12. try catch finally return的执行顺序与返回值探究
  13. 35 shell脚本
  14. 广州大彩串口屏与STM32F407通讯
  15. 北斗导航 | 两个地面站之间的多跳卫星通信链路(附matlab代码)
  16. 我的软件开发方法论2:复利方法观
  17. 电脑网络wifi图标消失,图标变成灰色的解决办法之一
  18. EpiQuik病毒RNA提取试剂盒,快速、简单、经济有效
  19. 七天搞定Node.js微信公众号
  20. Cannot build artifact ‘SSM模板+登录注册:war exploded‘ because it is included into a circular dependency (a

热门文章

  1. Jackson 框架使用说明,轻易转换JSON【转】
  2. practical rendering and computation with dx11 ebook
  3. a href=#与 a href=javascript:void(0) 的区别 打开新窗口链接的几种办法
  4. NLPIR大数据处理技术实现多种类智能挖掘
  5. Nginx高级应用--负载均衡、rewrite规则
  6. es6 初步深入学习
  7. 【荐】说说CSS Hack 和向后兼容
  8. Objective-C:Objective-C:文件中一些对目录进行操作的函数
  9. 【转】首先为人编写程序,其次才是计算机
  10. 试了下CommonLisp的WEB开发