PostCSS 

 

http://wpsv.se

 

Why

What
How

CSS Templating

a {
    <%= include clickable %>
    color: <%= $link-color %>;
}

Syntax

1. Variables

$blue: #00263e

 

2. Nestling

ul { ... li { ... a { ... } } div { section { ... } ... } }

 

3. Mixins

@include super-fancy-mixin

 

4. Functions

darken(green,15%)

Difficult to maintain

Why

What
How

PostCSS

November 4, 2013

650 000+ downloads / week

Built on JavaScript

:fullscreen a {
    transition: transform 1s;
}
:-webkit-full-screen a {
    -webkit-transition: -webkit-transform 1s;
            transition: transform 1s;
}

:-moz-full-screen a {
    transition: transform 1s;
}

:-ms-fullscreen a {
    transition: transform 1s;
}
:fullscreen a {
    -webkit-transition: -webkit-transform 1s;
            transition: transform 1s;
}
:fullscreen a {
 transition: transform 1s;
}

Autoprefixer

a:hover {
 color: blue;
}
a:hover,
a:focus {
 color: blue;
}

PostCSS-focus

input.css

output.css

@custom-selector --heading h1, h2, h3

.post-article --heading {
    margin-top: calc(10 * var(--row));
    font-variant-caps: small-caps;
}

PostCSS-cssnext

doiuse

main.css: line 15, col 3 -
  CSS user-select: none not supported by: IE (8,9)

main.css: line 32, col 3 -
  CSS3 Transforms not supported by: IE (8)

PostCSS-flexbugs

.flex-beginner {
  flex: 1;
}
.flex-beginner {
  flex: 1 1 0%;
}

output.css

input.css

PostCSS-initial 

.reset {
  all: initial;
}
.reset {
  columns: auto;
  column-count: auto;
  column-fill: balance;
  column-gap: normal;
  column-span: 1;
  column-width: auto;
  counter-reset: none;
  cursor: auto;
  .....
}

output.css

input.css

200+ postcss-plugins

So, you want to make a PostCSS plugin?

    

    
    var postcss = require('postcss');
    
    module.exports = postcss.plugin('postcss-bakåtvänd', function (opts) {
      opts = opts || {};
      return function (css, result) {
    
        // Runs through all of the nodes (declorations) in the file
        css.walkDecls(declaration => { 
          declaration.value = declaration.value.split('').reverse().join(''); 
        });
    
      };
    });

color: eulb --> color: blue

postcss-reverse

Why

What
How

.pipe( postcss([
    require('postcss-nested'),
    require('postcss-mixins'),
    require('postcss-simple-vars'),
    require('autoprefixer'),
    require('postcss-easings'),
    require('cssnext')
]) )

Build tool

webpack, gulp, grunt, cli, ....

Works with

Sass, Less and Stylus

.pipe( sass() )
.pipe( postcss([
    require('autoprefixer')
]) )

Everyone is adopting PostCSS

Explore PostCSS

Thank you!

https://marcustisater.github.io/

github: marcustisater

twitter: MarcusTister

 

 

twitter:  @postcss

postcss.org

slides.com/marcustisater/postcss

postcss-presentation

By marcustisater

postcss-presentation

  • 869