我有4个块,标题,描述和按钮.
我希望将标题和描述保持在顶部,并且无论描述或标题有多长,按钮都要在底部对齐.
我还需要保持相同的HTML结构.
我实际需要的示例图片:
有人可以弄清楚吗?到目前为止,我还没有在互联网上找到解决办法.
- /* FLEXBox RELATED */
- .grid {
- display: flex;
- justify-content: space-between;
- flex-flow: row wrap;
- }
- .block {
- flex: 0 24%;
- display: flex;
- }
- .container {
- display: flex;
- flex-flow: row wrap;
- align-items: flex-start;
- }
- .title {
- flex: 0 100%;
- }
- .desc {
- flex: 0 100%;
- }
- .button {
- flex: 0 100%;
- align-self: flex-end;
- }
- /* NO FLEXBox RELATED */
- .block {
- background-color: #ccc;
- }
- .title {
- font-size: 2rem;
- font-weight: bold;
- padding: 0.5rem;
- text-align: center;
- }
- .desc {
- background-color: grey;
- padding: 0.5rem;
- }
- .button {
- padding: 0.5rem;
- color: blue;
- text-align: center;
- font-weight: bold;
- }
- <div class="grid">
- <div class="block">
- <div class="container">
- <div class="title">Title 1</div>
- <div class="desc">Description Description Description Description Description Description Description Description Description Description</div>
- <div class="button">Button</div>
- </div>
- </div>
- <div class="block">
- <div class="container">
- <div class="title">Title 2</div>
- <div class="desc">Description Description Description Description Description Description Description Description Description Description Description Description Description Description Description Description Description Description Description Description</div>
- <div class="button">Button</div>
- </div>
- </div>
- <div class="block">
- <div class="container">
- <div class="title">Title 3</div>
- <div class="desc">Description Description Description Description Description Description Description Description Description Description Description Description Description Description Description</div>
- <div class="button">Button</div>
- </div>
- </div>
- <div class="block">
- <div class="container">
- <div class="title">Title 4</div>
- <div class="desc">Description Description Description Description Description Description Description Description Description Description</div>
- <div class="button">Button</div>
- </div>
- </div>
- </div>
解决方法
由于您正在使用行方向Flex容器,因此无法将最后一项固定到底部.你正在处理横轴空间分布,这意味着柔性线被拉伸或打包,并且没有办法将两个项目固定到顶部和一个到底部(除非你超越flexBox并使用绝对定位).
这是一个完整的解释.
> How does flex-wrap work with align-self,align-items and align-content?
使布局工作的一种简单有效的方法是列方向容器,在最后一项上具有弹性自动边距.通过在主轴上对齐项目,您可以将各个项目分开.
以下是flex auto margin的解释:
> In CSS Flexbox,why are there no “justify-items” and “justify-self” properties?
- /* FLEXBox RELATED */
- .grid {
- display: flex;
- justify-content: space-between;
- flex-flow: row wrap;
- }
- .block {
- flex: 0 24%;
- display: flex;
- }
- .container {
- display: flex;
- flex-direction: column; /* new */
- /* flex-flow: row wrap; */
- /* align-items: flex-start; */
- }
- .title {
- /* flex: 0 100%; */
- }
- .desc {
- /* flex: 0 100%; */
- }
- .button {
- margin-top: auto; /* new */
- /* flex: 0 100%; */
- /* align-self: flex-end; */
- }
- /* NO FLEXBox RELATED */
- .block {
- background-color: #ccc;
- }
- .title {
- font-size: 2rem;
- font-weight: bold;
- padding: 0.5rem;
- text-align: center;
- }
- .desc {
- background-color: grey;
- padding: 0.5rem;
- }
- .button {
- padding: 0.5rem;
- color: blue;
- text-align: center;
- font-weight: bold;
- }
- <div class="grid">
- <div class="block">
- <div class="container">
- <div class="title">Title 1</div>
- <div class="desc">Description Description Description Description Description Description Description Description Description Description</div>
- <div class="button">Button</div>
- </div>
- </div>
- <div class="block">
- <div class="container">
- <div class="title">Title 2</div>
- <div class="desc">Description Description Description Description Description Description Description Description Description Description Description Description Description Description Description Description Description Description Description Description</div>
- <div class="button">Button</div>
- </div>
- </div>
- <div class="block">
- <div class="container">
- <div class="title">Title 3</div>
- <div class="desc">Description Description Description Description Description Description Description Description Description Description Description Description Description Description Description</div>
- <div class="button">Button</div>
- </div>
- </div>
- <div class="block">
- <div class="container">
- <div class="title">Title 4</div>
- <div class="desc">Description Description Description Description Description Description Description Description Description Description</div>
- <div class="button">Button</div>
- </div>
- </div>
- </div>