我试着将正文分成三个不同大小的部分,HEADER,CONTAINER和FOOTER。Header占高度的10%,容器占高度的70%,页脚占高度的20%。我试着用flex完成这个任务,但我不能用百分比来完成。请帮助。
* {
box-sizing: border-box;
padding: 0;
margin: 0;
}
body {
background-color: skyblue;
width: 100%;
height: 100%;
display: flex;
flex-wrap: wrap;
flex-direction: column;
justify-content: center;
align-items: center;
align-content: space-between;
}
.header {
display: flex;
flex-wrap: wrap;
justify-content: center;
align-items: center;
border-bottom-left-radius: 10px;
border-bottom-right-radius: 10px;
background-color: black;
color: rgb(225, 150, 0);
font-weight: bold;
font-style: italic;
height: 10%;
padding: 5px 10px;
border: 1px solid blue;
}
.container {
width: 100%;
height: 70%;
border: 1px solid red;
}
.footer {
width: 100%;
height: 20%;
border: 1px solid green;
}
<div class="header">
<p>HEADER</p>
</div>
<div class="container">
<p>CONTAINER</p>
</div>
<div class="footer">
<p>FOOTER</p>
</div>
3条答案
按热度按时间yiytaume1#
您可以使用
flex property
修改代码以实现所需的输出。另外,我增加了
flex-shrink: 0;
,防止在缩小viewport宽度时,页眉和页脚会缩小。vlju58qv2#
有两种方法可以实现这一点,分别是Grid和Flex;首先,使用网格:
JS Fiddle demo。
其次,使用flex:
JS Fiddle demo。
我觉得有必要指出的是,尽管你提出了要求,但你并不真的想使用这些尺寸。根据百分比调整元素大小的布局可能很好,但它也暴露了内容显示在极端的可能性,从可笑的小(手机,手表)到可笑的大(大屏幕显示器)。
说到这里,我想利用
clamp()
函数对上面的代码做一个小小的修改;这允许我们设置“首选”大小,但具有指定的最小值和最大值:JS Fiddle demo。
其次,使用flex:
JS Fiddle demo。
参考文献:
clamp()
。display
。flex-basis
。flex-grow
。gap
。grid-template-rows
。ac1kyiln3#
要实现这一点,请使用CSS flex属性,值为flex-base和flex-growth。