purify css を使ってみた感想、欠点

purify

ポートフォリオ作成のために、しょーごさんの販売されている課題をこなしていく中で、

ウェブページの読み込み速度を少しでも早くしようと、

cssファイルの縮小化をするために(他にもやれることは色々ありますが)

html ファイルを参照して、使われていないセレクターを削除してくれる purify css を使ってみました。

もち
もち

おかしな点などございましたら、ご指摘いただけると幸いです。

よろしくお願いします。

しょーごさんの課題についてはこちらをどうぞ!↓

実際にどういう風に機能しているのか簡単に説明

先ほども書いたように、html 内で使われていないセレクターを削除してくれます。

例えば、html に以下のようなコードを記述したとして

<main class="main">
  <p class="red">赤い</p>
  <p class="blue">青い</p>
</main>

css に以下のようなスタイルを指定します。

.main {
  margin: 20px;
}

.red {
  color: red;
}

.blue {
  color: blue;
}

.yellow {
  color: yellow;
}

.main .yellow {
  color: yellow;
}

このとき、html で使われていない .yellow は purify css によって削除されます。

下の画像は、gulp を使って scss のコンパイルと purify css を実行した結果です。

.yellow のセレクターごと無くなっています。

(.main .yellow {} のように html 上に存在している親セレクターと一緒に使っても、削除されるようです。)

このように

purify css を使うことで、不要なセレクターが消去されるので、

よし!!これでファイルを少しでも軽くできるぞ!!

と思っていたのですが、実際に使ってみると欠点がでてきました。

/(^o^)\ナンテコッタイ

欠点

下の画像は、しょーごさんの中級課題のお問合わせフォームなのですが

入力にエラーがあったさいに、JavaScript で動的にエラーメッセージを出力するようにしています。

これは、エラーが起こった際に JavaScript で 「is-error」クラスをつけることで、表示するようにしています。

上記のように、動的に「is-error」を付けなければならない場合、

purify css が html ファイルを読み込んだ時には、「is-error」クラスはどこにも使われていないため、

出力される css ファイルには「is-error」クラスをつかったセレクターが消えてしまいます。

消されちゃった・・・

そのため、purify css 使用後は、エラーテキストが出力されなくなってしまいました。

自分が purify css を使うタイミングは、サイトが完成し、ファイルを圧縮するときなどの、

制作手順の最終段階だけだったので、そのあとに表示確認をしてみたら

エラーメッセージが映らないんだけどなんで!?

となり、20, 30 分くらい頭抱えてました・・・(笑)

この問題はフォームだけでなく、アコーディオンなどでも問題が出る場合があるので注意が必要です。

アコーディオンをすべて閉じていたり、すべて開いていたりすると、

閉じる用のセレクター、開く用のセレクターがHTML 内に記述されないため、

purify css を使用後に必要なセレクターが消えてしまいます。

逆に、開いているアコーディオン・閉じているアコーディオンがどちらも1つ以上ある場合は、特に問題はありません。

今回は、不要なセレクターがたくさんあったわけでもないので、purify css を使わないことにしましたが、

なにかいい解決方法をご存じの方がいましたら、

教えていただけると幸いです。

もち
もち

最後までお読みいただきありがとうございました!

まとめ

  • purify css は不要なセレクターを削除してくれてファイルを縮小するには便利だが
    本来必要になるはずのセレクターまで消してしまうこともあるので
    使う場合は注意すること
タイトルとURLをコピーしました