给出以下HTML:
<div class='page-header'>
<h1>Header</h1>
<div class="thingy">
</div>
</div>
以下CSS:
.page-header {
background-color: blue;
border: 5px solid green;
}
h1 {
background-color: red;
display: inline-block;
}
.thingy {
float: right;
height: 100%;
width: 20px;
background-color: yellow;
}
为什么div
class='thingy'
不可见?
将高度更改为固定值会使其可见,但这不是我想要的。我希望元素的高度随着它所在元素的高度而缩放。我该怎么做?
答案 0 :(得分:3)
因为你没有给父元素赋予高度
试试这个
.page-header {
background-color: blue;
border: 5px solid green;
height:60px;
}
答案 1 :(得分:2)
这是因为父容器没有设置任何高度。
如果您为.page-header
设置任何固定高度(例如,以px为单位),那么.thingy
也将具有此高度。
例如:
.page-header {
background-color: blue;
border: 5px solid green;
height: 100px;
}
修改强>
如果您希望它自动调整并始终适合父母身高的100%,您可以尝试&#34; hack&#34;像这样:
首先设置巨大的垂直填充和相同但负边距:
.thingy {
float: right;
height: 100%;
width: 20px;
background-color: yellow;
padding: 1000px 0;
margin: -1000px 0;
}
然后将overflow:hidden
设置为parent:
.page-header {
background-color: blue;
border: 5px solid green;
overflow: hidden;
}
应该在这种情况下工作,但这也取决于你最终想要达到的目标。
另一种方法是使用javascript,但我认为让JS参与这些美容问题是一个好主意。
答案 2 :(得分:2)
正如我的评论中所述,这是因为该元素的父母都没有声明的身高。为什么这么重要?因为这就是它的工作方式。
MDN:
百分比是根据高度来计算的 生成的框包含块。 如果含有的高度 未明确指定块(即,它取决于内容 高度),这个元素并不是绝对定位的值 计算到自动。根元素的百分比高度是相对的 到最初的包含块。
答案 3 :(得分:1)
不确定我会得到的反应,但作为一种可能的解决方案。
如果您将页眉设置为
position:relative
然后将thingy类设置为
position:absolute;
right:0px;
top:0px;
你不再需要浮动:右边,它与父亲的身高相同。
答案 4 :(得分:0)
height: 100%;
表示孩子的确切高度不是父母的高度,因此在该上下文中使用它是没有意义的,因为高度自动为100%,遗憾的是没有高度,因此容器未显示。
答案 5 :(得分:0)
这是另一种选择,虽然它需要jQuery:
$(function() {
$('.thingy').height($('.thingy').parent().height());
});
答案 6 :(得分:0)
我认为这可能是你想要实现的目标。 “header”元素增长以容纳它包含的元素(我在“thingy”上放置了一个最小高度,以显示在浏览器中查看时的位置)。
<html>
<head>
<style>
.header {background-color: blue; border: 5px solid green; height: auto; overflow: hidden;}
.thingy {float: right; height: auto; min-height: 100px; width: 20px; background-color: yellow;}
h1 {background-color: red; display: inline-block;}
</style>
</head>
<body>
<div class="header">
<h1>
header
</h1>
<div class="thingy"></div>
</div>
</body>
</html>