codegrid / party-2017-05

4 stars 0 forks source link

アイコンの管理 #8

Open Takazudo opened 7 years ago

Takazudo commented 7 years ago

CSSでアイコンを利用する時、どのように管理していますか?(フォントにするとかSVGにするとかスプライトするとか)いい感じの方法を教えてください。

hiloki commented 7 years ago

下記のようなことで悩んでるので、ぜひいい感じの方法知りたいです。

yomotsu commented 7 years ago

「アイコン」を実装する方法としては主に4つの方法がありますが、一長一短です。

どの方法が一番いい、と言い切るのは難しいです。

自分の場合、上記を理解した上で、プロジェクトに応じて使い分けています。

やや古いブラウザーやインターオペラビリティーを重視する大きなWebサイトはアイコンフォント

アイコンファイル生成はgulpで自動化することで、かなり省力化できます。 例えばCodeGridでは、以下のようにSVGファイルをまとめておくと https://github.com/pxgrid/codegrid-ui/tree/master/src/assets2/font/codegrid-icon 自動でアイコンファイルやCSSが生成されます。 http://ui.codegrid.net/styleguide/category/Icons/index.html

参考: https://app.codegrid.net/entry/webfont-2

Webアプリなどの場合は、都度インラインSVG

1ファイルにまとめることができないので、プロジェクトによっては使いづらいかもしれません。しかし、それさえなんとかなれば、高機能です。Vue.jsなどのWebアプリ構築時にはこの方法を採用するようにしています。

参考: https://app.codegrid.net/entry/2017-light-vue-1#toc-4

SVGスプライトは?

CSSで変更できると言っても、useで参照されたグループをまとめて変更することになってしまい、部分的な色を変更することはできません。それなら、Webフォントアイコンで十分かなと考えています。 また、ポリフィルも必要です。個人的にはあまり好んで利用はしていません。

フルカラーのアイコンが必要なら、別の方法でSVGを埋め込むこともできます。 (IEでは拡大率によって少しぼやける可能性あり) 参考: https://app.codegrid.net/entry/svg-sprite-1

アイコンの数が多くなる場合

コンテキストやタイプ、世代などに応じて、アイコンファイルを複数種用意するようにしています。

screen shot 2017-05-25 at 3 33 31 pm

私は、アイコンフォントはかなり万能だと考えています。ただし単色です。ただ、単色で問題ない場合も多いので、アイコンフォントを積極的に使っています。 最近ではWebアプリを作ることも多く、そこではインラインSVGを都度埋めこんで利用しています。

個人的な視点が多くなってしまいましたが、お悩みを抱える皆さんのプロジェクトでのヒントになれば幸いです。