我和一些孩子有一个div:

<div class="content">
  <h1>heading 1</h1>
  <h2>heading 2</h2>
  <p>Some more or less text</p>
  <a href="/" class="button">Click me</a>
</div>

我想要下面的布局:

 -------------------
|heading 1          |
|heading 2          | 
|paragraph text     |
|can have many      |
|rows               |
|                   |
|                   |
|                   | 
|link-button        |
 -------------------

不管p中有多少文本,我希望始终将.按钮粘在底部,而不将其从流中取出。我听说这可以用Flexbox实现,但我不能让它工作。


当前回答

1. 样式父元素:Style ="display:flex; "flex-direction:列;flex: 1;

2. 为你想留在底部的元素设置样式:Style ="margin-top: auto;"

3.完成了!哇。这很简单。

例子:

section { /* ONLY FOR DEMO, NOT NECESSARY */ display: flex; flex-wrap: wrap; } div { /* PARENT ELEMENT */ display: flex; flex-direction: column; flex: 1; } button { /* TARGET ELEMENT */ margin-top: auto; } /* DECORATIVE STYLES FOR DEMO */ button { font-size: 20px; background-color: crimson; color: white; border-style: none; border-radius: 3px; } section { margin: 0; padding: 0; border: 1px solid black; background-color: crimson; } div { font-size: 20px; background-color: khaki; border: 2px dashed black; margin: 10px; padding: 10px; min-width: 400px; min-height: 300px; } <section> <div> <span>Lorem ipsum dolor s at mi imperdiet fringilla vitae id lorem. Donec ut semper sapien, et ullamcorper metu</span> <button>I</button> </div> <div> <span>Lorem ipsum dolor sit amet</span ><button> stay </button> </div> <div> <span >Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi at augue ac turpis fringilla egestas. quis mi diam. Quisque faucibus, massa non finibus iaculis, arcu nulla auctor enim, quis accumsan dolor odio quis turpis. Duis convallis pulvinar justo sit amet feugiat. Duis sed lectus at mi imperdiet fringilla vitae id lorem. Donec ut semper sapien, et ullamcorper metu</span > <button> at </button> </div> <div> <span>Lorem ipsum dolor sit amet</span ><button> bottom </button> </div> <div> <span>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi at augue ac turpis fringilla egestas. Donec quis mctus at mi imperdiet fringilla vitae id lorem. Donec ut semper sapien, et ullamcorper metu</span> <button> always </button> </div> <div> <span>Lorem ipsum dolor sit amet sit amet, consectetur adipiscing elit. Morbi at augue ac turpis fringilla egestas. Donec quis mctus at mi imperdiet fringilla vitae id lorem. Donec ut semper sapien, et ullamcorper</span ><button> all ways </button> </div> </section>

其他回答

在将显示设置为flex时,只需使用flex属性标记哪些内容可以增长,哪些内容不能增长。

Flex财产

div.content { 身高:300 px; 显示:flex; flex-direction:列; } div.up { flex: 1; } div.down { flex:没有; } < div class = "内容" > < div class = " " > <标题>标题1 < / h1 > < h2 >标题2 < / h2 > <p>一些或多或少的文本</p> < / div > < div class = "”> <a href="/" class="button">点击我</a> < / div > < / div >

您可以使用display: flex来将一个元素定位到底部,但我认为在这种情况下您不应该使用flex,因为它将影响您的所有元素。

要使用flex将一个元素定位到底部,请尝试以下操作:

.container {
  display: flex;
}

.button {
  align-self: flex-end;
}

你最好的选择是设置位置:绝对的按钮,并将其设置为底部:0,或者你可以将按钮放在容器之外,并使用负变换:平移(-100%)将其带入容器,如下所示:

.content {
    height: 400px;
    background: #000;
    color: #fff;
}
.button {
    transform: translateY(-100%);
    display: inline-block;
}

检查这个JSFiddle

如果可以修改HTML,可以将所有顶部元素包装在单独的div中,然后使用justify-content: space between。

就像这样:

<div class="content">
  <div>
    <h1>heading 1</h1>
    <h2>heading 2</h2>
    <p>Some more or less text</p>
  </div>
  <a href="/" class="button">Click me</a>
</div>
.content {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}

1. 样式父元素:Style ="display:flex; "flex-direction:列;flex: 1;

2. 为你想留在底部的元素设置样式:Style ="margin-top: auto;"

3.完成了!哇。这很简单。

例子:

section { /* ONLY FOR DEMO, NOT NECESSARY */ display: flex; flex-wrap: wrap; } div { /* PARENT ELEMENT */ display: flex; flex-direction: column; flex: 1; } button { /* TARGET ELEMENT */ margin-top: auto; } /* DECORATIVE STYLES FOR DEMO */ button { font-size: 20px; background-color: crimson; color: white; border-style: none; border-radius: 3px; } section { margin: 0; padding: 0; border: 1px solid black; background-color: crimson; } div { font-size: 20px; background-color: khaki; border: 2px dashed black; margin: 10px; padding: 10px; min-width: 400px; min-height: 300px; } <section> <div> <span>Lorem ipsum dolor s at mi imperdiet fringilla vitae id lorem. Donec ut semper sapien, et ullamcorper metu</span> <button>I</button> </div> <div> <span>Lorem ipsum dolor sit amet</span ><button> stay </button> </div> <div> <span >Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi at augue ac turpis fringilla egestas. quis mi diam. Quisque faucibus, massa non finibus iaculis, arcu nulla auctor enim, quis accumsan dolor odio quis turpis. Duis convallis pulvinar justo sit amet feugiat. Duis sed lectus at mi imperdiet fringilla vitae id lorem. Donec ut semper sapien, et ullamcorper metu</span > <button> at </button> </div> <div> <span>Lorem ipsum dolor sit amet</span ><button> bottom </button> </div> <div> <span>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi at augue ac turpis fringilla egestas. Donec quis mctus at mi imperdiet fringilla vitae id lorem. Donec ut semper sapien, et ullamcorper metu</span> <button> always </button> </div> <div> <span>Lorem ipsum dolor sit amet sit amet, consectetur adipiscing elit. Morbi at augue ac turpis fringilla egestas. Donec quis mctus at mi imperdiet fringilla vitae id lorem. Donec ut semper sapien, et ullamcorper</span ><button> all ways </button> </div> </section>

试试这个

.content { 显示:flex; flex-direction:列; 身高:250 px; 宽度:200 px; 边界:固体; 自动换行:break-word; } .content h1, .content h2 { margin-bottom: 0 px; } .content p { flex: 1; } < div class = "内容" > <标题>标题1 < / h1 > < h2 >标题2 < / h2 > <p>一些或多或少的文本</p> <a href="/" class="button">点击我</a> < / div >