CCS知识点(一)PX 百分比 rem 的比较

193 阅读2分钟

px

不会随着视口大小的变化而变化, 像素是一个固定的单位(绝对单位)

百分比

子元素的高宽 padding margin参考父元素计算

rem

子元素的高宽 padding margin参考根元素(html) 计算

使用的库:

postcss-pxtorem
amfe-flexible

但是现在官网推荐不使用,个人总结主要有以下缺点

(1)在奇葩的dpr设备上表现效果不太好,比如一些华为的高端机型用rem布局会出现错乱。

(2)使用iframe引用也会出现问题。

(3)rem在多屏幕尺寸适配上与当前两大平台的设计哲学不一致。

即大屏的出现是为了看的更多的。而rem布局是为了看得又大又清楚。

(4)amfe-flexible基于的lib-flexible不维护了

vw和vh

vw 和 vh 永远都是以视口作为参考

  • vw(Viewport's width):1vw等于视觉视口的1%
  • vh(Viewport's height) :1vh 为视觉视口高度的1%
  • vmin : vw 和 vh 中的较小值
  • vmax : 选取 vw 和 vh 中的最大值
postcss-px-to-viewport

.postcssrc.js文件对新安装的PostCSS插件进行配置:

module.exports = {
    "plugins": {
        "postcss-import": {},
      // postcss-import主要功有是解决@import引入路径问题。使用这个插件,可以让你很轻易的使用本地文件、node_modules或者web_modules的文件。这个插件配合postcss-url让你引入文件变得更轻松。

        "postcss-url": {},
	//      该插件主要用来处理文件,比如图片文件、字体文件等引用路径的处理。
      "autoprefixer": {},
      //autoprefixer插件是用来自动处理浏览器前缀的一个插件。
        "postcss-px-to-viewport": {
    viewportWidth: 750,      // 视窗的宽度,对应的是我们设计稿的宽度,一般是750
    viewportHeight: 1334,    // 视窗的高度,根据750设备的宽度来指定,一般指定1334,也可以不配置
    unitPrecision: 3,        // 指定`px`转换为视窗单位值的小数位数(很多时候无法整除)
    viewportUnit: 'vw',      // 指定需要转换成的视窗单位,建议使用vw
    selectorBlackList: ['.ignore', '.hairlines'],  // 指定不转换为视窗单位的类,可以自定义,可以无限添加,建议定义一至两个通用的类名
    minPixelValue: 1,       // 小于或等于`1px`不转换为视窗单位,你也可以设置为你想要的值
    mediaQuery: false       // 允许在媒体查询中转换`px`
},
       
    }
}

//<div class="box ignore"></div> 不进行转换