vue

PostCSS + PreCSS 拯救前端样式

2018-12-01  本文已影响49人  寂寞的原子

CSS作为我大前端必不可少的一部分,在前端发展如此迅速的今天,实在是拖了很大的后腿,所以我们几乎已经离不开CSS处理器了。

回顾 Sass 和 LESS

首先,这俩货都是兼容CSS的,所有的开发都是在CSS的基础上进行扩展,从我个人角度来看,开发体验是不错的。
大部分情况下,Sass和LESS其实并没有什么区别,这篇文章列举了一些差异,这里就不多说了。
总的来说,这俩货其实都不错,但是:

遇见 PostCSS + PreCSS

说到 PreCSS,就不得不先说说 PostCSS
PostCSS其实也是一个CSS预处理器,它的独特之处在于强大的插件机制和丰富的插件,几乎是我在CSS开发中的标配。换言之,即使我用了Sass或者LESS,还是免不了要加上PostCSS来做前缀处理(autoprefixer)、压缩(cssnano)等后续操作。

那么问题来了:能不能减少一些依赖,只用PostCSS+插件就得到不错的CSS开发体验呢?

于是我发现了PreCSS。下面看看它的特别之处:

于是,只需安装 PostCSS,加上一份这样的配置(.postcssrc.js),一个强大的CSS预处理工具就出来了:

module.exports = {
  // Transform inline comments
  parser: require('postcss-scss'),
  plugins: [
    require('autoprefixer'),
    // Transform SCSS into CSS
    require('precss'),
    // Calculate at compile time
    require('postcss-calc'),
    // px to rem
    require('postcss-plugin-px2rem')({ rootValue: 100, minPixelValue: 2}),
  ],
};

以码服人

自定义 media query

@custom-media --iphonex (only screen and (device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3));

main {
  @media (--iphonex) {
    margin-top: 50px;
  }
}

CSS变量

:root {
  --mainColor: #12345678;
}
body {
  color: var(--mainColor);
}

Sass语法

$blue: #056ef0;

.menu_link {
  background: $blue;
}

calc计算

$column: 200px;

.menu {
  width: calc(4 * $column);
}

MixIn

// src/common/mixin.css
@mixin iphonex {
  @media only screen and (device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) { @content; }
}

// src/pages/index/style.css
@import '#/common/mixin.css';

@include iphonex {
  main {
    margin-left: 50px;
  }
}

好了,还等什么,快来用 PostCSS + PreCSS 吧。

上一篇下一篇

猜你喜欢

热点阅读