无法绕过它!我尝试使父级div使用max-height
的窗口高度不超过80%,并使用子级div来取所有父级高度减去某些东西。
但父级百分比中的height
属性根本不适用于该子级,除非我提供父height
属性。
为什么?
这是我简化的小提琴:https://jsfiddle.net/mbatcer/m2ohnsf5/ 为什么内部div不尊重父高度并且离开容器?
HTML:
<div class="container">
<div class="inner">
<img src="http://via.placeholder.com/70x300">
</div>
</div>
CSS:
.container {
background: blue;
padding: 10px;
max-height: 100px;
}
.inner {
height: 100%;
width: 70px;
overflow: hidden;
}
答案 0 :(得分:0)
将height:80vh;
添加到.container
,这样就可以了。
答案 1 :(得分:0)
如果您使用百分比设置孩子的max-height
,则会根据父母的真实height
而不是height
来设置孩子的max-height
。
因此,您需要为.container
设置一个高度,并为图片设置max-height: 100%
,因为您的图片高度大于宽度。
.container {
background: blue;
padding: 10px;
height: 100px;
}
.inner {
height: 100%;
overflow: hidden;
}
img {
max-height: 100%;
}
解决此问题的更好方法是使用flex-box
。
.container {
display: flex;
flex-flow: row;
background: blue;
padding: 10px;
max-height: 80vh;
}
.inner {
overflow: hidden;
}
img {
max-height: 100%;
}
答案 2 :(得分:0)
你应该改变你的CSS -
.container {
background: blue;
padding: 10px;
}
.inner {
max-height: 100px;
width: 100% ;
overflow: hidden;
}
.inner img {
max-height: 100px;
}
答案 3 :(得分:0)
我认为这就是你要找的东西:
.container {
background: blue;
padding: 10px;
max-height: 100px;
display: flex;
}
.inner {
width: 70px;
overflow: hidden;
}
这是小提琴:https://jsfiddle.net/f9sfczya/1/
这里我添加了display:flex;在你的父div和删除高度:100%; 来自儿童div。
不幸的是显示:flex; IE9及更早版本不支持。
希望这可以帮助你。