どうも7noteです。cssだけで1枚のアイコン画像を好きな色に変える方法(IE対応)
画像の書き出し方をちょっと工夫することで、1枚のアイコン画像の色をCSSだけで自由に変更できる方法があります。
簡単2ステップ
ステップ1
画像を書き出す時に、アイコンの形をそのまま画像として書き出さずに・・・
『アイコンの形をくり抜いた画像を書き出します!!』
真ん中が透明になります。(分かりやすいよう少し色を変えてます)
![inversion.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F661092%2Fcbd94b01-174d-a477-e524-9457fe750577.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=de6944252615e8511912027c228ba4c9)
ステップ2
この画像を任意の場所に設置して、CSSでimgに好きな背景色を入れます。
index.html
<img src="heart.png" alt="ハート" class="heart">
style.css
.heart {
background: #fdb126;
}
結果
![noamal.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F661092%2F88186cf2-a31e-bbb7-30fa-43ad26c429fb.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=b4f2e61dccf462642266bcecde765944)
まとめ
画像編集ツール(フォトショップ等)が必要ですが、全ブラウザ対応かつ簡単なのが魅力的。linear-gradient
を使えば単色だけでなくグラデーションにも対応できます。
※背景色が違う色に変わる時は画像を作り直さなければいけなくなるので注意!
はたまたjsでアニメーションを入れればカラフルに色が変わるようなことも可能に。
![herat.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F661092%2F0f500bac-2644-edf3-3c34-1345d4c73faa.gif?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=e7630adf05183e4452506e6202fcb929)