css像素、设备像素、逻辑像素、设备像素比css
viewporthtml
remgit
你们能够先看这篇文章了解一下基本概念。 github
css像素:咱们你们常常写高多少px,宽多少px,这个就是px像素。算法
逻辑像素:其它就是css像素,他们实际上是同一回事。bash
设备像素比:css像素与物理像素的一个比值。ide
设备像素:手机上像素的点,一般一个像素点就是一点,但从苹果出了Retina屏 幕后,若是像素比为2,表明一个逻辑像素表示2个物理像素,如上图,就是说通常咱们写高等于2px,宽等于2px,正常对应就是正面的面积为4的4个像素,这是你们所能正常理解的,可是在Retina屏的时候,若是像素为2,它是1比2,就是说css 1px等于 Retina 2px ,因此原来用2 x 2表示4个px,如今在Retina须要16个像素来表示。字体
layout viewport:如上图蓝色的页面,你能够认为你写的页面,它就是一个layout viewport。ui
visual viewport:如上图手机里, 如里说没有width=device-width的话,你这个很庞大的页面,在手机 有限的窗口范围内,是否是放不下。若是说手机是透明的话,你怎么拖后面的大图,在手机上只能看到一个相对大小 的页面,至关于大图进行裁剪同样,呗裁剪出来的这块东西就叫visual viewport.idea
ideal viewport:简单说就是手机 的宽和高组成的组成这种尺寸就叫ideal viewport。
width=device-width它主要的做用就是让大图layout viewport等于手机的ideal viewport。这样就作到了2个不一样的窗口大小 是同样的
想一想刚才的说的rem,咱们经过设备像素比和viewport调整基准像素, 咱们不须要因此的设备都 要去除以一下设备像素比的关系,咱们是利用js本身计算,算法就是利用上图的1125/640这个线性比。
好比说设计尺寸下当前html字体大小 为40px,以它为基准单位,那么到设备尺寸下,html的字体大小为( 40 x 1125 )/ 640=71.1,而后全部的单位为rem,这样就能够达到自适应。
@function torem($px){//$px为须要转换的字号
@return $px / 40px * 1rem; //40px为根字体大小
}
复制代码