2013-08-28 104 views
7

请告诉我为什么:before伪元素不表现得像在这种情况下,一个普通imgCSS伪元素大小问题

enter image description here

左边的一个是divimgimg的宽度和高度等于100%。正确的一个是div:before:before的宽度和高度也是100%,但效果是不同的!

(我知道我可以使用一个background-image解决办法,但什么是错的:pseudo当其content属性为url()?)

小提琴:http://jsfiddle.net/Tp9JG/4/

+0

我对此感到困惑,但它看起来像'宽度'和'高度'根本不适用于通过'url()'插入的图像,请参阅http://stackoverflow.com/questions/14978807 – xec

+0

@xec谢谢到Tomzan,发现这个:http://lists.w3.org/Archives/Public/www-style/2011Nov/thread.html#msg451 – Cherniv

+0

另外请注意,如果您选择了“display:inline”,则无法控制'width' ;'。 – connexo

回答

4

不幸的是你无法控制图像的大小,指定当它通过内容, 但是你可以,如果你使用它作为背景:

.with_before:before{ 
    content:''; 
    background-image: url('http://i.stack.imgur.com/CAAFj.jpg'); 
    background-size: 100% 100%; 
    width: inherit; 
    height: inherit; 
    display: inline-block; 
} 

检查这个jsFiddle

而对于你的问题,为什么我们不能风格生成的内容: 我们不能因为生成的内容被渲染成一个生成的框,你可以风格该框,而不是内容。

引用:

  1. check this post
  2. another lengthy discussion on this subject

请注意,不同的浏览器显示出非常不同的行为。