简体   繁体   English

当mu内容设置为100%高度时,为什么内容会溢出

[英]Why does the content overflow when mu content is set to 100% height

My layout has a header and footer and in between those a content div. 我的布局有一个页眉和页脚,在这些内容div之间。

When I set my content height to 100% it overflows instead of expanding the div. 当我将内容高度设置为100%时,溢出而不是扩展div。

 * { margin: 0; padding: 0; } body, html { height: 100%; } .header, .footer { height: 100px; width: 100%; background-color: red; color: white; } .content { width: 100%; height: 100%; } 
 <div class="header"> <h1>Heading</h1> </div> <div class="content"> <p>Sapibulumnibh phasellus nulla egestibulum enim pretium elit tincidunt estiquam ultrisque donectetur. Sedcondimentumsan odio hendrerit proin vitae dignis nibh ac justo id congue. Amesintesque vel curabitae volutpat donec alique nasceleifendimentesque montesque rhoncus quis eros. Vestnunc nonummy</p> <span> Sapibulumnibh phasellus nulla egestibulum enim pretium elit tincidunt estiquam ultrisque donectetur. Sedcondimentumsan odio hendrerit proin vitae dignis nibh ac justo id congue. Amesintesque vel curabitae volutpat donec alique nasceleifendimentesque montesque rhoncus quis eros. Vestnunc nonummy </span> <p>Sapibulumnibh phasellus nulla egestibulum enim pretium elit tincidunt estiquam ultrisque donectetur. Sedcondimentumsan odio hendrerit proin vitae dignis nibh ac justo id congue. Amesintesque vel curabitae volutpat donec alique nasceleifendimentesque montesque rhoncus quis eros. Vestnunc nonummy</p> <span> Sapibulumnibh phasellus nulla egestibulum enim pretium elit tincidunt estiquam ultrisque donectetur. Sedcondimentumsan odio hendrerit proin vitae dignis nibh ac justo id congue. Amesintesque vel curabitae volutpat donec alique nasceleifendimentesque montesque rhoncus quis eros. Vestnunc nonummy </span> <p>Sapibulumnibh phasellus nulla egestibulum enim pretium elit tincidunt estiquam ultrisque donectetur. Sedcondimentumsan odio hendrerit proin vitae dignis nibh ac justo id congue. Amesintesque vel curabitae volutpat donec alique nasceleifendimentesque montesque rhoncus quis eros. Vestnunc nonummy</p> <span> Sapibulumnibh phasellus nulla egestibulum enim pretium elit tincidunt estiquam ultrisque donectetur. Sedcondimentumsan odio hendrerit proin vitae dignis nibh ac justo id congue. Amesintesque vel curabitae volutpat donec alique nasceleifendimentesque montesque rhoncus quis eros. Vestnunc nonummy </span> <p>Sapibulumnibh phasellus nulla egestibulum enim pretium elit tincidunt estiquam ultrisque donectetur. Sedcondimentumsan odio hendrerit proin vitae dignis nibh ac justo id congue. Amesintesque vel curabitae volutpat donec alique nasceleifendimentesque montesque rhoncus quis eros. Vestnunc nonummy</p> <span> Sapibulumnibh phasellus nulla egestibulum enim pretium elit tincidunt estiquam ultrisque donectetur. Sedcondimentumsan odio hendrerit proin vitae dignis nibh ac justo id congue. Amesintesque vel curabitae volutpat donec alique nasceleifendimentesque montesque rhoncus quis eros. Vestnunc nonummy </span> <p>Sapibulumnibh phasellus nulla egestibulum enim pretium elit tincidunt estiquam ultrisque donectetur. Sedcondimentumsan odio hendrerit proin vitae dignis nibh ac justo id congue. Amesintesque vel curabitae volutpat donec alique nasceleifendimentesque montesque rhoncus quis eros. Vestnunc nonummy</p> <span> Sapibulumnibh phasellus nulla egestibulum enim pretium elit tincidunt estiquam ultrisque donectetur. Sedcondimentumsan odio hendrerit proin vitae dignis nibh ac justo id congue. Amesintesque vel curabitae volutpat donec alique nasceleifendimentesque montesque rhoncus quis eros. Vestnunc nonummy </span> </div> <div class="footer"> <h1>Footer <h1> </div> 

I already know the solution is to get rid of the 100% height. 我已经知道解决方案是摆脱100%的高度。 But what I want to know is why does this happen. 但我想知道的是为什么会发生这种情况。 Shouldn't 100% height expand it's height to fit the parent? 不应该100%高度扩大它的高度以适应父母?

Here is the fiddle for my code. 这是我的代码的小提琴

Of course it will overflow. 当然它会溢出。

What height : 100% does is to take the parent's height and use it as its height. 高度:100%是取父母的身高并将其作为身高。 It doesn't take what's left of the height remaining, instead it takes the original height of the parent and set it as it's height. 它不会占用剩余高度的剩余部分,而是采用父级的原始高度并将其设置为高度。 I think that's the explanation you want. 我想这就是你想要的解释。

Shouldn't 100% height expand it's height to fit the parent? 不应该100%高度扩大它的高度以适应父母?

Yes, but the overflow comes because you have set a fixed height for the parent, so it can't grow. 是的,但溢出是因为你为父级设置了一个固定的高度,所以它不能增长。

I recommend you to not use height: 100% for the main containers like html and body , because you will want it to be flexible. 我建议你不要使用height: 100%用于主要容器,如htmlbody ,因为你会希望它具有灵活性。 You also will want for these containers to be at least the initial screen height, so use this: 您还希望这些容器至少是初始屏幕高度,因此请使用以下命令:

html,
body {
  min-height: 100vh;
}

With this you will have an at least 100% height containers that will grow if there is more content inside. 如果内部有更多内容,您将拥有至少100%高度的容器,这些容器将会增长。 But you can't use height: 100% for the child containers, but since usually the use case will be to have a container with a height equal to a screen percentage, you can use vh (viewport height units) to achieve this without worries about the height of the parent containers. 但你不能使用height: 100%的儿童容器,但由于通常用例将是一个高度等于屏幕百分比的容器,你可以使用vh (视口高度单位)来实现这一点而不用担心关于父容器的高度。 You can create a class like this: 你可以创建一个这样的类:

.full-height{
    height: 100vh;
}

Use min-height for html and content instead of height attribute, 使用min-height表示html和内容而不是height属性,

<style>
* {
  margin: 0;
  padding: 0;
}

body,
html {
  min-height: 100%;
}

.header,
.footer {
  height: 100px;
  width: 100%;
  background-color: red;
  color: white;
}

.content {
  width: 100%;
  min-height: 100%;
}
</style>

Just remove height:100% . 只需删除height:100%

.content {
  width: 100%;
  height: 100%;<------Remove This----------
}

Full Code : 完整代码:

 *{ margin: 0; padding: 0; } body, html { height: 100%; } .header, .footer { height: 100px; width: 100%; background-color: red; color: white; } .content { width: 100%; } 
 <div class="header"> <h1>Heading</h1> </div> <div class="content"> <p>Sapibulumnibh phasellus nulla egestibulum enim pretium elit tincidunt estiquam ultrisque donectetur. Sedcondimentumsan odio hendrerit proin vitae dignis nibh ac justo id congue. Amesintesque vel curabitae volutpat donec alique nasceleifendimentesque montesque rhoncus quis eros. Vestnunc nonummy</p> <span> Sapibulumnibh phasellus nulla egestibulum enim pretium elit tincidunt estiquam ultrisque donectetur. Sedcondimentumsan odio hendrerit proin vitae dignis nibh ac justo id congue. Amesintesque vel curabitae volutpat donec alique nasceleifendimentesque montesque rhoncus quis eros. Vestnunc nonummy </span> <p>Sapibulumnibh phasellus nulla egestibulum enim pretium elit tincidunt estiquam ultrisque donectetur. Sedcondimentumsan odio hendrerit proin vitae dignis nibh ac justo id congue. Amesintesque vel curabitae volutpat donec alique nasceleifendimentesque montesque rhoncus quis eros. Vestnunc nonummy</p> <span> Sapibulumnibh phasellus nulla egestibulum enim pretium elit tincidunt estiquam ultrisque donectetur. Sedcondimentumsan odio hendrerit proin vitae dignis nibh ac justo id congue. Amesintesque vel curabitae volutpat donec alique nasceleifendimentesque montesque rhoncus quis eros. Vestnunc nonummy </span> <p>Sapibulumnibh phasellus nulla egestibulum enim pretium elit tincidunt estiquam ultrisque donectetur. Sedcondimentumsan odio hendrerit proin vitae dignis nibh ac justo id congue. Amesintesque vel curabitae volutpat donec alique nasceleifendimentesque montesque rhoncus quis eros. Vestnunc nonummy</p> <span> Sapibulumnibh phasellus nulla egestibulum enim pretium elit tincidunt estiquam ultrisque donectetur. Sedcondimentumsan odio hendrerit proin vitae dignis nibh ac justo id congue. Amesintesque vel curabitae volutpat donec alique nasceleifendimentesque montesque rhoncus quis eros. Vestnunc nonummy </span> <p>Sapibulumnibh phasellus nulla egestibulum enim pretium elit tincidunt estiquam ultrisque donectetur. Sedcondimentumsan odio hendrerit proin vitae dignis nibh ac justo id congue. Amesintesque vel curabitae volutpat donec alique nasceleifendimentesque montesque rhoncus quis eros. Vestnunc nonummy</p> <span> Sapibulumnibh phasellus nulla egestibulum enim pretium elit tincidunt estiquam ultrisque donectetur. Sedcondimentumsan odio hendrerit proin vitae dignis nibh ac justo id congue. Amesintesque vel curabitae volutpat donec alique nasceleifendimentesque montesque rhoncus quis eros. Vestnunc nonummy </span> <p>Sapibulumnibh phasellus nulla egestibulum enim pretium elit tincidunt estiquam ultrisque donectetur. Sedcondimentumsan odio hendrerit proin vitae dignis nibh ac justo id congue. Amesintesque vel curabitae volutpat donec alique nasceleifendimentesque montesque rhoncus quis eros. Vestnunc nonummy</p> <span> Sapibulumnibh phasellus nulla egestibulum enim pretium elit tincidunt estiquam ultrisque donectetur. Sedcondimentumsan odio hendrerit proin vitae dignis nibh ac justo id congue. Amesintesque vel curabitae volutpat donec alique nasceleifendimentesque montesque rhoncus quis eros. Vestnunc nonummy </span> </div> <div class="footer"> <h1>Footer <h1> </div> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM