LoginSignup
20
21

More than 5 years have passed since last update.

Autoprefixerでベンダープリフィックス自動付与する

Posted at

ここまでで、PostCSSの仕組みとそのプラグインはどういうものなのか、そしてPostCSSのAPIを使ってASTを操作する方法と、プラグインの作り方を説明しました。

Webアプリを作る業務では、実際にASTを変換してCSSに独自の処理をおこなうのではなく、既存のプラグインを組み合わせることが多いです。今日から何日かは、PostCSSのプラグインとしてよく使われているものを紹介していきます。

Autoprefixer

PostCSSのプラグインとして最も有名なのが Autoprefixer でしょう。「PostCSSは知らなかったけど、Autoprefixerは使っている」という人も少なくないと思います。PostCSSも元々はAutoprefixerを作るために生まれました。

.example {
  display: flex;
  user-select: none;
  -webkit-border-radius: 3px;
  border-radius: 3px;
}

例えば、上記のようなCSSを下記のように変換します。

.example {
  display: -ms-flexbox;
  display: flex;
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none;
  border-radius: 3px;
}

display プロパティの値としてIE用のベンダープリフィックスとして -ms-flexbox が追加されていることがわかります。他にも user-select プロパティには -webkit-, -moz-, -ms-プリフィックスが付与されています。また、入力となるCSSには -webkit-border-radius というプロパティが書かれていますが、最近のChromeやSafariでは border-radius プロパティにベンダープリフィックスは必要ないので、これは削除されています。

使い方

AutoprefixerはPostCSSのプラグインとして実行する他に、それ単体での実行も可能で、Rails上で実行するためのRailtieとしての実装、静的サイトジェネレーターのMiddlemanの拡張としての実装もあります。

今回はPostCSSのプラグインとして、1日目で説明した postcss-cliで実行する方法 を説明します。

まずは、npmからautoprefixerをインストールします。

$ npm install -D autoprefixer

そして、.postcssrc.json を以下のように記述します。

{
  "use": [
    "autoprefixer"
  ],
  "input": "input.css",
  "output": "output.css"
}

オプションでサポートブラウザを指定する。

Autoprefixerはオプションで、ベンダープリフィックスを付与する対象となるブラウザのバージョンを指定することができます。

  • last 2 versions: 全てのブラウザの最新2バージョン
  • last 3 iOS versions: iOS Safariの最新3バージョン
  • > 5% in US: USで 5% 以上のシェアがある全てのブラウザバージョン

上記のように、自然言語風の文字列でサポートブラウザを指定することができます。

postcss-cliでは、プラグイン名でプロパティを追加し、その下にそのプラグインのオプションを記述することができます。

{
  "use": [
    "autoprefixer"
  ],
  "input": "input.css",
  "output": "output.css",
  "autoprefixer": {
    "browsers": [
      "ie >= 11",
      "last 2 Edge versions",
      "last 2 Firefox versions",
      "last 2 Chrome versions",
      "last 2 Safari versions",
      "last 2 Opera versions",
      "last 2 iOS versions",
      "last 2 ChromeAndroid versions"
    ]
  }
}

今日はAutoprefixerの紹介と、使い方を説明しました。明日は少し掘り下げて、Autoprefixerの仕組みや実装について述べます。

20
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
21