:before
疑似要素 をimg
要素とともに使用しようとしています。
このHTMLとCSSを検討してください...
<img src="http://0.gravatar.com/avatar/this-is-not-a-hash" alt="" />
img:before {
content: "hello";
}
jsFiddle 。
これでは、目的の効果が得られません(Chrome 13およびFirefox 6でテスト済み)。ただし、div
またはspan
要素では機能します。
何故なの?
擬似要素をimg
要素で動作させる方法はありますか?
仕様によると ...
注意。この仕様では、
:before
と:after
の交換要素(HTMLのIMGなど)との相互作用を完全には定義していません。これは、将来の仕様でより詳細に定義されます。
これは、img
要素では動作しないことを意味すると思います(現時点では)。
this answer も参照してください。
テストしてそれがきれいではないことを知るためだけに、以下を実行して擬似要素を「img」要素と連携させることができます。
CSSのimg要素にdisplay: block; content: ""; height: (height of image)px
を追加します。
content: ""
のimgタグが空の原因になりますが、
style="background-image: url(image.jpg)"
をhtmlのimg要素に追加します。
Fx、ChromeおよびSafariでこれをテストしました
ブラウザのベンダーは、仕様の解釈のためにimg
タグに疑似要素を実装していない可能性があります。厳密に言えば、img
要素は、ブロックレベルの要素でもインライン要素でもありません 空の要素 。