如何将一个 div 从底部向上放置

3
如何使div从底部到顶部而不是从顶部到底部。例如,此代码将div从顶部到底部放置。

<!DOCTYPE html>

<body>
  <div class="message">
    <div class="message__block">4</div>
    <div class="message__block">3</div>
    <div class="message__block">2</div>
    <div class="message__block">1</div>
  </div>
</body>
</div>

<style>
  .message {
    width: 100vmin;
    height: 100vmin;
    overflow: hidden;
    background: green;
  }

  .message__block {
    color: white;
    width: 100%;
    height: 9vmin;
    background: black;
    margin-bottom: 1.1vmin;
  }
</style>

</body>

</html>

But how to make the divs are located from bottom to top as in this picture enter image description here

4个回答

4
你可以尝试使用Flexbox

  .message {
    width: 100vmin;
    height: 100vmin;
    overflow: hidden;
    background: green;
    display: flex;
    justify-content: flex-end;
    flex-direction: column;
    align-items: center;
  }

  .message__block {
    color: white;
    width: 100%;
    height: 9vmin;
    background: black;
    margin-bottom: 1.1vmin;
    text-align: center;
  }
<body>
  <div class="message">
    <div class="message__block">4</div>
    <div class="message__block">3</div>
    <div class="message__block">2</div>
    <div class="message__block">1</div>
  </div>
</body>


如果您的HTML元素顺序是倒序的,例如1-4而不是4-1,您仍然可以通过更改以下属性来达到相同的效果:

justify-content: flex-start;
flex-direction: column-reverse;

1
我不明白这如何将顺序反转为升序... - Robert
1
我刚刚使用了与问题中完全相同的 HTML。如果 HTML 元素的顺序不同,我将使用 flex-direction: column-reverse; 来实现相同的效果。 - Jakub A Suplicki
1
我认为他在询问如何将顺序反转为升序。 - Robert
1
我已经在我的答案中添加了一条注释来涵盖这种可能性,感谢@RobertRocha指出。 - Jakub A Suplicki
你好,请告诉我如何在这个例子中使用flex-shrink:0 - 我的意思是如果块不适合,如何使它们不缩小。 - Gorilka
我认为这可能与调整元素的宽度有关,但如果您能提供一个更好的示例,可能在JSFiddle上,我可以给您一个明确的答案。一般来说,您可以在此处阅读有关flex-shrink的信息:https://developer.mozilla.org/en-US/docs/Web/CSS/flex-shrink,您可以看到它与`flex-basis`结合使用。 - Jakub A Suplicki

1
<!DOCTYPE html>

<body>
  <div class="message">
    <div class="message__block">4</div>
    <div class="message__block">3</div>
    <div class="message__block">2</div>
    <div class="message__block">1</div>
  </div>
</body>
</div>

<style>
  .message {
    width: 100vmin;
    height: 100vmin;
    overflow: hidden;
    background: green;
    display:flex;
    flex-direction: column-reverse;
    justify-content: flex-end;
  }

  .message__block {
    color: white;
    width: 100%;
    height: 9vmin;
    background: black;
    margin-bottom: 1.1vmin;
  }
</style>

</body>

</html>

CodePen: https://codepen.io/Centaur26/pen/vYxKxMw

请确保将显示设置为flex,flex方向为列反转,并将对齐方式设置为flex-end。


1

在此输入图像描述将以下内容添加到您的.message类中

height: auto;
position: absolute;
bottom: 0px;

1
尝试将display设置为table-cell,并将vertical-align设置为bottom,这比flexbox提供了更好的跨浏览器支持

.message {
  width: 100vmin;
  height: 100vmin;
  overflow: hidden;
  background: green;
  display: table-cell;
  vertical-align: bottom;
}

.message__block {
  color: white;
  width: 100%;
  height: 9vmin;
  background: black;
  margin-bottom: 1.1vmin;
}
<!DOCTYPE html>
<html>
<body>
  <div class="message">
    <div class="message__block">4</div>
    <div class="message__block">3</div>
    <div class="message__block">2</div>
    <div class="message__block">1</div>
  </div>
</body>
</html>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接