そのため、角が丸いものも含めて、CSSを使用して画像を暗くする方法をかなり見ましたが、私の問題は異なります。
私が小さな犬のように見える.png画像を持っているとしましょう(ちょうどそれと一緒に行く、私は良い例はありません)、私はそれを私のページに配置するとき、100 x 100の寸法を与えます。
しかし、私はそれの上に何かをオーバーレイしたり、画像全体に色を付けることはできません。犬の背景も同様に色付けされ、いように見えます。
CSSで任意の形状の画像に色合いを付けることは可能ですか?
(あなたは私のポイントを理解していると仮定し、無駄なコードは必要ありません)
ありがとう!
代替手段の難しさを考えると、画像の不透明度はいつでも変更できますが、これが最良のアプローチかもしれません。
CSS:
.tinted { opacity: 0.8; }
ブラウザの互換性に興味がある場合は、これを読むことをお勧めします。
http://css-tricks.com/css-transparency-settings-for-all-broswers/
十分に決心していれば、IE7(誰もが知っている!)
注:JGonzalezDが下で指摘しているように、これは実際に背景色が画像自体よりも暗い場合にのみ実際に画像を暗くします。このテクニックは、特に画像を暗くしたくない場合でも、何らかの理由でホバー/フォーカス/その他の状態で強調表示したい場合に役立ちます。
簡単
img {
filter: brightness(50%);
}
犬のシルエット(黒)の新しいイメージを作成し、残りは元のイメージと同じにします。 htmlで、このシルエットを背景としてラッパーdivを追加します。次に、元の画像を半透明にします。犬は暗くなり、犬の背景は変わりません。ホバー時に元の画像の不透明度を100%に設定することで、ホバートリックを実行できます。それから、あなたが彼の上にマウスを置くと、犬が飛び出します!
スタイル
.wrapper{background-image:url(silhouette.png);}
.original{opacity:0.7:}
.original:hover{opacity:1}
<div class="wrapper">
<div class="img">
<img src="original.png">
</div>
</div>
簡単な解決策は、 _-webkit-mask-image
_ プロパティに依存しています。 _-webkit-mask-image
_は、要素のマスク画像を設定します。
この方法にはいくつかの落とし穴があります。
:after
_擬似要素(IMG
タグに_:before
_/_:after
_擬似要素、grrを含めることはできません)を適用するには、追加のラッパーが必要ですattr(…)
CSS関数を使用してIMG
タグURLを取得する方法がわからないため、CSSに個別にハードコーディングされています。これらの問題を過ぎて見ることができれば、これは可能な解決策かもしれません。 SVGフィルターはさらに柔軟になり、Canvasソリューションはさらに柔軟になり、サポート範囲が広がります(SVGにはAndroid 2.xサポートがありません)。
background-image
のみに影響を与えたい場合は、次のように線形グラデーションを使用できます。
background: linear-gradient(rgba(0, 0, 0, .5), rgba(0, 0, 0, .5)), url(IMAGE_URL);
暗くする場合はアルファ値を高くし、明るくする場合はアルファ値を低くします