为什么要用rem
为什么要用rem
- 参考文章web app变革之rem
- 公司使用的
375*667(也就是iPhone6)作为缩放比例标准,设计师是按照750px的标准出图 - 为了保证在不同的屏幕下显示效果基本等同,为此规定了缩放比例
document.documentElement.clientWidth/ 25 = 15 - 这里的根字体大小可以按照喜好自定义
- 因此在计算
rem值时,需要按照设计师给定的px值除以50,如给定字体大小为30px,那么计算出来的rem是30/2/25=.6rem - 下面的css只是罗列了基本常见的机型,实际上通过
js来计算更易读易维护,如下
/*默认根字体值50px,计算rem值时,我的习惯是先将UI给的值/2,然后再/25*/
/*测试一下看看是不是所有的比例都是15*/
html {
font-size: 50px
}
body {
font-size: 24px
}
@media screen and (min-width: 320px) {
html {
font-size:21.333333333333332px
}
body {
font-size: 12px
}
}
@media screen and (min-width: 360px) {
html {
font-size:24px
}
body {
font-size: 12px
}
}
@media screen and (min-width: 375px) {
html {
font-size:25px
}
body {
font-size: 12px
}
}
@media screen and (min-width: 384px) {
html {
font-size:25.6px
}
body {
font-size: 14px
}
}
@media screen and (min-width: 400px) {
html {
font-size:26.666666666666668px
}
body {
font-size: 14px
}
}
@media screen and (min-width: 414px) {
html {
font-size:27.6px
}
body {
font-size: 14px
}
}
@media screen and (min-width: 424px) {
html {
font-size:28.266666666666667px
}
body {
font-size: 14px
}
}
@media screen and (min-width: 480px) {
html {
font-size:32px
}
body {
font-size: 15.36px
}
}
@media screen and (min-width: 540px) {
html {
font-size:36px
}
body {
font-size: 17.28px
}
}
@media screen and (min-width: 720px) {
html {
font-size:48px
}
body {
font-size: 23.04px
}
}
@media screen and (min-width: 750px) {
html {
font-size:50px
}
body {
font-size: 24px
}
}
(function(doc, win) {
var docEl = doc.documentElement,
resizeEvt = ‘orientationchange’ in window ? ‘orientationchange’ : ‘resize’,
recalc = function() {
var clientWidth = docEl.clientWidth;
if (!clientWidth) return;
/*选定一款机型作为缩放标准*/
docEl.style.fontSize = 25 * (clientWidth / 375) + ‘px’;
/*根字体最大50px*/
docEl.style.fontSize = docEl.style.fontSize > 50 ? 50 : docEl.style.fontSize;
};
if (!doc.addEventListener) return;
win.addEventListener(resizeEvt, recalc, false);
doc.addEventListener(‘DOMContentLoaded’, recalc, false);
})(document, window);
为了减少同学的工作量,就做了一个pexilToRem的对照表,如下
| px | rem |
|---|---|
| 1px | 0.04rem |
| 2px | 0.08rem |
| 3px | 0.12rem |
| 4px | 0.16rem |
| 5px | 0.2rem |
| 6px | 0.24rem |
| 7px | 0.28rem |
| 8px | 0.32rem |
| 9px | 0.36rem |
| 10px | 0.4rem |
| 11px | 0.44rem |
| 12px | 0.48rem |
| 13px | 0.52rem |
| 14px | 0.56rem |
| 15px | 0.6rem |
| 16px | 0.64rem |
| 17px | 0.68rem |
| 18px | 0.72rem |
| 19px | 0.76rem |
| 20px | 0.8rem |
| 21px | 0.84rem |
| 22px | 0.88rem |
| 23px | 0.92rem |
| 24px | 0.96rem |
| 25px | 1rem |
| 26px | 1.04rem |
| 27px | 1.08rem |
| 28px | 1.12rem |
| 29px | 1.16rem |
| 30px | 1.2rem |
| 31px | 1.24rem |
| 32px | 1.28rem |
| 33px | 1.32rem |
| 34px | 1.36rem |
| 35px | 1.4rem |
| 36px | 1.44rem |
| 37px | 1.48rem |
| 38px | 1.52rem |
| 39px | 1.56rem |
| 40px | 1.6rem |
| 41px | 1.64rem |
| 42px | 1.68rem |
| 43px | 1.72rem |
| 44px | 1.76rem |
| 45px | 1.8rem |
| 46px | 1.84rem |
| 47px | 1.88rem |
| 48px | 1.92rem |
| 49px | 1.96rem |
| 50px | 2rem |
以上是直接在控制台转换的
var pexilToRem=[];
for(var i=1;i<51;i++){
pexilToRem.push({'px':i+'px','rem':i/25+'rem'})
}
console.table(pexilToRem)
当然也可以用scss
$browser-default-font-size: 25px !default;//变量的值可以根据自己需求定义
@function pxTorem($px){//$px为需要转换的字号
@return $px / $browser-default-font-size * 1rem;
}
为什么要用rem的更多相关文章
- 在rem布局下使用背景图片以及sprite
现在移动端页面用rem布局已经是一大流派了,成熟的框架如淘宝的flexiable.js,以及我的好友@墨尘写的更轻量级的hotcss.用rem作单位使得元素能够自适应后,还有一块需要关注的,那就是背景 ...
- 移动端自适应之——rem与font-size
需求:在不同的移动终端设备中实现,UI设计稿的等比例适配. 方案:布局排版都用rem做单位,然后不同宽度的屏,js动态计算根节点的font-size. 假设设计稿是宽750px来做的,书写css方便计 ...
- px-rem px转换为rem的工具
将px转换为rem的工具,github地址:https://github.com/finance-sh/px-rem 将px转换为rem的工具 怎样转换静态文件 安装: npm install px- ...
- px-rem 一个将px转换为rem的工具
将px转换为rem的工具,github地址:https://github.com/finance-sh/px-rem 怎样转换静态文件 安装: npm install px-rem -g 然后跑下命令 ...
- 基于rem的移动端自适应解决方案
代码有更新,最好直接查看github: https://github.com/finance-sh/adaptive adaptivejs原理: 利用rem布局,根据公式 html元素字体大小 = d ...
- px和em,rem的区别
1.px是你屏幕设备物理上能显示出的最小的一个点,这个点不是固定宽度的,不同设备上点的长宽.比例有可能会不同.假设:你现在用的显示器上1px宽=1毫米,但我用的显示器1px宽=两毫米,那么你定义一个d ...
- Sublime 插件- px 转rem
一个CSS的px值转rem值的Sublime Text 3自动完成插件. 插件效果如下: 安装 克隆项目 https://github.com/hyb628/cssrem.git 进入packag ...
- 响应式布局-Rem的用法
前言: 文章较为系统地介绍了rem这个新的文字大小单位,绝对干货,绝对好文.转载时略有改动. 先来看看一些基本理念,比如: 响应式网页不仅仅是响应不同类型的设备,而且需要响应不同的用户需求.响应式 ...
- 手机端页面自适应之rem布局
W3C官网上是这样描述rem的--"font size of the root element" . rem布局在移动端发挥的比较好. 阿里团队高清方案: <script&g ...
- WebApp开发之--"rem"单位
随着web app的兴起,rem这是个低调的css单位,近一两年开始崭露头角,有许多朋友对于它的评价不一,有的在尝试使用,有的在使用过程中遇到坑就弃用了.但是我认为rem是用来做web app它绝对是 ...
随机推荐
- Unity不同平台生成中预处理的注意点
http://blog.csdn.net/pandawuwyj/article/details/7959335 Unity3D的项目,这周吃亏在宏上了.大背景是项目需要在Unity中用Hudson自动 ...
- CSS3动画进度条
CSS3动画进度条 CSS CODE: @-webkit-keyframes move{ 0%{ background-position: 0 0; } 100%{ background-posi ...
- Office2016下载地址
Office 2016 专业增强版32 位: 文件名:SW_DVD5_Office_Professional_Plus_2016_W32_ChnSimp_MLF_X20-41351.ISO SHA1: ...
- 使用EntityFramwork[6.1]进行级联保存的时候出现异常
出现的异常:System.InvalidOperationException: Multiplicity constraint violated. The role 'IncomeItem_Creat ...
- 伸展树(三)之 Java的实现
概要 前面分别通过C和C++实现了伸展树,本章给出伸展树的Java版本.基本算法和原理都与前两章一样.1. 伸展树的介绍2. 伸展树的Java实现(完整源码)3. 伸展树的Java测试程序 转载请注明 ...
- 前端们,gulp该用起来了,简单的demo入门——gulp系列(一)
gulp.grunt前端自动化工具,只有用过才知道多么重要. 它们问世这么久了?你真的用过吗? 写个简单的less.watch任务的demo分享———— 1.准备: 安装全局node.npm,这个教程 ...
- CSS程序思想
CSS的设计思想,比如:CSS预处理器.CSS对像(OOCSS).SMACSS.Atomic设计和OrganicCSS等 一.CSS预处理器最重要的功能: 1.连接: ...
- JS魔法堂:追忆那些原始的选择器
一.前言 ...
- Python+Selenium进行UI自动化测试项目中,常用的小技巧3:写入excel表(python,xlsxwriter)
我们在项目中可能用到excel表生成,下面的代码就是对excel表的操作: import xlsxwriter import datetime class write_excel(): def __i ...
- 快速暴力解决Eclipse ADT和Android Studio兼容问题,创建同时兼容ADT和AS的安卓工程
环境:AS 2.1.2+Java1.7+Gradle 2.14+ADT 24.0.2+MyEclipse 2015 前言:因为比赛要求使用ADT,而我本身比较习惯使用AS开发,遂想办法打造兼容两个ID ...