我有一个奇怪的问题,在Chrome / Safari中,图像尊重它在没有设置宽度/高度的父级内部的最大宽度/高度样式。但不是在Firefox / Opera中。
<div id="container">
<figure>
<img src="http://imaging.nikon.com/lineup/dslr/d90/img/sample/pic_001b.jpg">
</figure>
</div>
这是图像和它的容器。 CSS如下:
body {
width: 100%;
height: 100%;
}
#container {
width: 90%;
height: 90%;
margin: auto;
}
figure {
position: relative;
display: inline-block;
margin: 0;
vertical-align: top;
line-height: 0;
}
img {
height: auto;
width: auto;
max-width: 100%;
max-height: 100%;
}
figure
元素仅用于使用:before
选择器作为图像的叠加层,但如果它具有设置的宽度/高度则不起作用。有没有办法让Firefox和Opera尊重祖父母的身高/宽度呢?
JSFiddle:http://jsfiddle.net/GUrkj/1/
答案 0 :(得分:0)
请参阅here on MDN
具体做法是:
max-height CSS属性用于设置a的最大高度 给定的元素。它可以防止高度属性的使用值 变得大于为max-height指定的值。
和...
百分比是根据高度来计算的 生成的框包含块。如果含有的高度 未明确指定块(即,它取决于内容 高度),这个元素并不是绝对定位的百分比 值被视为无。
最后一部分意味着,至少在Firefox中,如果没有明确说明height
值,max-height
会变成none
- 导致观察到的行为。
因此,您需要至少将height
和width
添加到figure
元素。
答案 1 :(得分:0)
在CSS中,当你使用100%时,你总是说&#34; 100%&#34;我的父母。如果你的父母不受约束,你也是。这里的诀窍是高度是唯一重要的高度,将数字高度设置为100%,但不要设置它的宽度,你应该没事。