您正在遇到“flex等高列”功能。
flex容器的初始设置为align-items: stretch
。
这意味着flex项目自动扩展容器的交叉轴的整个长度。在行方向容器中,交叉轴是垂直的(高度)。
最高的项目设置所有兄弟节点的高度。随着最高的项目扩展,其兄弟节点也跟随扩展。因此,所有项目具有相等的高度。
要覆盖此默认设置,请向flex容器添加align-items: flex-start
:
#container_add_movies {
display: flex;
align-items: flex-start;
}
#container_add_movies {
display: flex;
align-items: flex-start;
}
#container_add_movies #feedback {
width: 20%;
background-color: green;
display: block;
}
#container_add_movies #search {
width: 60%;
background-color: red;
}
#container_add_movies #suggestions {
width: 20%;
background-color: yellow;
}
<div id='container_add_movies'>
<div id='feedback'>Feedback</div>
<div id='search'>
Search<br>Search<br>Search<br>Search<br>Search<br> Search
<br>Search<br>Search<br>Search<br>Search<br>
</div>
<div id='suggestions'>Suggestions</div>
</div>
...或者使用align-self: flex-start
将其应用到flex项目:
#feedback {
align-self: flex-start;
width: 20%;
background-color: green;
}
#suggestions {
align-self: flex-start;
width: 20%;
background-color: yellow;
}
#container_add_movies {
display: flex;
}
#container_add_movies #search {
width: 60%;
background-color: red;
}
#feedback {
align-self: flex-start;
width: 20%;
background-color: green;
}
#suggestions {
align-self: flex-start;
width: 20%;
background-color: yellow;
}
<div id='container_add_movies'>
<div id='feedback'>Feedback</div>
<div id='search'>
Search<br>Search<br>Search<br>Search<br>Search<br> Search
<br>Search<br>Search<br>Search<br>Search<br>
</div>
<div id='suggestions'>Suggestions</div>
</div>
align-items
设置了align-self
的默认值。使用align-self
,您可以在单个项目中覆盖默认值。
规范中有更多详细信息:
8.3. 交叉轴对齐: align-items
和align-self
属性
Flex项目可以在当前行的交叉轴上对齐,类似于justify-content
,但是在垂直方向上。
align-items
为所有flex容器的项目(包括匿名flex项目)设置了默认对齐方式。
align-self
允许覆盖单个 flex 项目的默认对齐方式。
一点历史
自 CSS 开始以来,一直存在两个排版问题经常困扰、使前端开发人员感到困惑和烦恼:
- 如何居中,特别是在垂直方向上;
- 如何创建等高列(除表格之外)。
现在,通过使用弹性盒布局,这些问题可以迎刃而解。
居中元素从未如此简单:
#container {
display: flex;
justify-content: center;
align-items: center;
}
简单。易用。高效。疯狂已经结束。
在等高列方面,flexbox也表现出色:它默认情况下就可以实现这一点。
#container {
display: flex;
flex-direction: row;
align-items: stretch;
}
align-items: stretch
规则告诉弹性项尽可能沿着交叉轴扩展。因此,在行方向容器中,所有项的高度可以相等。
更多关于flexbox的知识请点击链接。
从一个
常见的解决等高列问题的答案中得出:
给容器添加overflow: hidden
属性,并对列添加大的(和相等的)负边距和正填充。请注意,此方法存在一些问题,例如锚定链接将无法在布局内工作。
现在这是个技巧!
钟摆现在开始向另一个方向摆动:
设计师们正要求如何关闭等高列。