CSS3中的rem、em与px间的换算关系

html-css013

CSS3中的rem、em与px间的换算关系,第1张

Pixel像素,相对长度单位。像素是相对于显示器分辨率而言。

相对长度单位,相对于 当前对象 内文本的字体尺寸,如当前对行内文本的字体尺寸未被设置,则相对于浏览器的默认字体尺寸。 任意浏览器的默认字体高都是16px。所有未经调整的浏览器都符合:1em = 16px。

由上可见,em的值并不是固定的,它的值跟其父级元素的字体大小紧密相关。

示例:

rem是CSS3新增的一个相对单位(root em,根em),这个单位与em有什么区别呢?

目前除IE8及更早版本外,所有浏览器均已支持rem。对于不支持的浏览器,可以多写一个绝对单位的声明。如此浏览器会忽略rem设定的字体大小。如下:

注意:

px、em、rem在线转换工具: http://pxtoem.com/

参考自: https://blog.csdn.net/qq_41893551/article/details/81258600

rem 是相对于根元素 <html>,这样就意味着,我们只需要在根元素确定一个参考值,这个参考值设置为多少,完全可以根据您自己的需求来定。

我们知道,浏览器默认的字号 16px ,来看一些 px 单位与 rem 之间的转换关系:

为了方便计算,时常将在 <html>元素中设置 font-size 值为 62.5% :

相当于在<html>中设置 font-size 为 10px ,此时,上面示例中所示的值将会改变:

由于 rem 是css3中的一个属性,很多人首先关注的就是浏览器对他的支持度,我截了一张caniuse对 rem 属性的兼容表:

1rem等于多少px呢?

1rem 等于 html 根元素设定的 font-size 的px值,假如我们在css里面设定下面的css。

那么后面的CSS里面的 rem 值则是以这个14来换算,例如设定一个 div 宽度为 3rem ,高度为 2.5rem .则它换算成px为 width:42px . height:35px ,同理,假如一个设计稿为宽度 42px ,高度为 35px ,则换成成 rem ,则是42/14= 3rem ,35/14= 2.5rem 。

如果css里面没有设定 html 的 font-size ,则默认浏览器以 1rem = 16px 来换算。

 用 gulp-replace 写个任务替换rem。

var replace = require('gulp-replace')

gulp.task('pxToRem', function(){

return gulp.src('*.html')

.pipe(replace(/(\d+)px/g, function(match, p1){

return Number(p1) / 10 + 'rem'

}))

.pipe(gulp.dest('dir'))

})