我正在尝试对齐我的行div或无论如何最后一个元素。 我正在使用bootstrap 3而且我有:
<div id="main">
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="logo col-centered">
</div>
</div>
</div>
<div class="row">
<div class="col-md-12 title text-center">THE TITLE</div>
</div>
<div class="row">
<div class="col-md-5 col-centered text-center description">Lorem ipsum</div>
<div class="description_arrow col-centered"></div>
</div>
<div class="row">
<div class="col-md-5 col-sm-8 col-xs-12 col-centered">
<div class="image-container">
<img id="image-phone" src="img/image-phone.png" class="img-responsive" style="bottom:0px;">
</div>
</div>
</div>
</div>
</div>
在css中我有:
#main {
min-height: 100%;
}
现在看起来如此:
|------------------------|
|==========ROW===========|
|==========ROW===========|
|==========ROW===========|
|==========SPACE=========|
|==========SPACE=========|
|------------------------|
我希望看起来如此: 现在看起来如此:
|------------------------|
|==========ROW===========|
|==========ROW===========|
|==========SPACE=========|
|==========SPACE=========|
|==========ROW===========|
|------------------------|
所以我想保留最后一行,我该怎么做?
编辑:我不能在2°div上使用margin-bottom,因为2°row div和最后一行div之间的距离可以改变,而且我不想要和高值,因为那时候13“屏幕页面变得可滚动。EDIT2:我不能使用position:fixed和bottom:0,因为在div #main下,我有其他div(总是100%高度)。
替代方法1: 我这样做了:
<div id="main" style="position: relative;">
在行div类我做:
<div class="row" style="position:absolute; bottom: 0px; width: 100%;">
似乎工作得很好,但我不知道这是不是一个好的解决方案......请给我一个反馈!
答案 0 :(得分:2)
一种解决方案是,如果将具有类div
,d-flex
和flex-column
的类容器添加到h-100
。
然后,您需要从mt-auto
到最后一个row
。这样会将余量添加到屏幕上剩余的所有空间。因此,这适用于所有屏幕尺寸。
同样重要的是html
,body
以及div
类以上container
的所有元素都使用全高。您可以使用以下CSS实现此目标:
html, body {
height: 100%;
}
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<style>
html, body, #main {
height: 100%;
}
</style>
<div id="main">
<div class="container-fluid d-flex flex-column h-100">
<div class="row">
<div class="col-md-12">
<div class="logo col-centered">
</div>
</div>
</div>
<div class="row">
<div class="col-md-12 title text-center">THE TITLE</div>
</div>
<div class="row">
<div class="col-md-5 col-centered text-center description">Lorem ipsum</div>
<div class="description_arrow col-centered"></div>
</div>
<div class="row mt-auto mb-3">
<div class="col-md-5 col-sm-8 col-xs-12 col-centered">
<div class="image-container">
<img id="image-phone" src="https://upload.wikimedia.org/wikipedia/commons/f/f7/Stack_Overflow_logo.png" class="img-responsive" style="max-width: 100px; bottom:0px;">
</div>
</div>
</div>
</div>
</div>
答案 1 :(得分:1)
如果我理解正确 - 你不能只在第二行添加margin-bottom
来创建第二行和第三行之间的垂直空间吗?
另请注意,col-12
可以只是容器内的div,它们不需要行或col-12类。
答案 2 :(得分:0)
只需在<div class="top-buffer">
之类的行之间添加一个div,并且css在这里.top-buffer { margin-top:10px; }
,就可以在它们之间添加一些边距。我希望它能为你效果。
答案 3 :(得分:0)
我更喜欢像这样创建一个spacer
类:
.spacer{
height: height in %;
}
然后只需添加spacer
类,如下所示:
<div class="row">
<div class="spacer">
<div class="row">
这样,您可以轻松地在行之间建立一个响应的空间。
编辑:
如果您的页面不高于1280px,您可以尝试将最后一行粘贴到页面底部
.row:last-child {
position: fixed;
bottom: 0;
}