【问题标题】:How align to bottom a row div in bootstrap?如何在引导程序中与底部的行 div 对齐?
【发布时间】:2014-03-09 07:54:16
【问题描述】:

我正在尝试与我的行 div 或最后一个元素对齐。 我正在使用引导程序 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° 行 div 和最后一行 div 之间的距离可以改变,我不想要高值,因为那时13" 屏幕页面变得可滚动。

EDIT2:我不能使用位置:固定和底部:0,因为在 div #main 下,我还有其他 div(总是 100% 高度)。

解决方法 1: 我这样做:

<div id="main" style="position: relative;">

在我做的行 div 类中:

<div class="row" style="position:absolute; bottom: 0px; width: 100%;">

似乎工作得很好,但我不知道这是否是一个好的解决方案......请给我反馈!

【问题讨论】:

  • 你想要固定元素吗(网站末尾不可滚动)?然后你可以通过position: fixed; bottom: 0;定位它
  • 但是在这个 div #main 之后,我还有其他 div...所以如果我将位置固定和底部:0,它也会超过其他 div。
  • 没错,在这种情况下position: fixed 不是正确的解决方案。我无法从你的问题中得到这个事实
  • 已编辑 :) 对不起我的错。

标签: html css twitter-bootstrap responsive-design


【解决方案1】:

一种解决方案是,如果您使用类容器将d-flexflex-columnh-100 类添加到div

然后你需要在mt-auto 到最后一个row。这将为屏幕上剩余的所有空间添加边距。所以这适用于所有屏幕尺寸。

同样重要的是htmlbodydiv 上方的所有元素以及类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>

【讨论】:

    【解决方案2】:

    我更喜欢像这样创建spacer 类:

    .spacer{
        height: height in %;
    }
    

    然后像这样添加spacer 类:

    <div class="row">
    <div class="spacer">
    <div class="row">
    

    这样,您可以轻松地在响应式的行之间留出空间。

    编辑:

    如果您的页面不高于 1280 像素,您可以尝试让最后一行粘在页面底部

    .row:last-child {
        position: fixed;
        bottom: 0;
    }
    

    【讨论】:

    • 您的回答可能会有所帮助,但不能直接回答 OP 的问题,您是在提到如何硬编码垫片的特定高度,但 OP 希望在底部有一个“粘性”页脚他们的页面
    【解决方案3】:

    如果我理解正确 - 你不能将margin-bottom 添加到第二行以在第二行和第三行之间创建垂直空间吗?

    另请注意,col-12 可以只是容器内的 div,它们不需要一行或 col-12 类。

    【讨论】:

    • 对 col-12 没问题。无论如何我不想使用margin-bottom,因为我不知道2°行和最后一行之间的距离是多少......距离可以改变,我不希望页面变得可滚动!
    • 您可能需要使用 javascript 来计算页面的大小和您有多少间距空间,并相应地添加 margin-bottom
    • 是的,这是一个解决方案......我还写了一个解决方法(你可以在我的问题中看到)。你可以给我反馈吗?谢谢。
    【解决方案4】:

    只需在它们之间添加一些边距,方法是在 &lt;div class="top-buffer"&gt; 这样的行之间放置一个 div,css 在这里 .top-buffer { margin-top:10px; } 我希望它对你有用。

    【讨论】:

    • 感谢您的回复,但我不想设置边距,因为这样的边距因屏幕而异(例如 13" vs 27")。
    • 好吧,您也可以添加更多的 CSS 来处理屏幕分辨率,但它的引导程序可以让所有内容都以良好的方式阅读,例如
      处理屏幕分辨率
    • 使用一些
      这样你也可以从这些类中解析屏幕分辨率
    猜你喜欢
    • 2016-10-31
    • 1970-01-01
    • 2013-11-25
    • 2015-03-08
    • 2019-05-15
    • 2017-05-12
    • 1970-01-01
    • 2020-07-26
    • 2018-04-03
    相关资源
    最近更新 更多