Bootstrap 4中列之间的空白垂直空间

Posted

技术标签:

【中文标题】Bootstrap 4中列之间的空白垂直空间【英文标题】:Empty vertical space between columns in Bootstrap 4 【发布时间】:2018-08-16 19:44:11 【问题描述】:

我有这个 html 结构:

<div class="container">
   <div class="row">
      <div class="col-lg-9 description"></div>
      <div class="col-lg-3 sidebar"></div>
      <div class="col-lg-9 comments"></div>
   </div>
</div>

最终效果是这样的: 我需要这种 HTML 结构,因为当我有一个较小的视口并且 Bootstrap 切换到 1 列模式时,我需要侧边栏列位于描述和 cmets 列之间(实际上是空白区域)。

问题是当模板不处于“移动模式”时,我想避免有那个空白空间。

我尝试了很多方法,但我无法做到这一点,有人可以帮助我吗?

编辑

我试过这样:

<div class="container">
   <div class="row">
      <div class="col-lg-9">
         <div class="description"></div>
         <div class="comments"></div>
      </div>
      <div class="col-lg-3 sidebar"></div>
   </div>
</div>

并尝试通过使用 css“订单”重新排序,但没有成功(它允许我做的唯一一件事就是将侧边栏放在页面的开头,但这不是我想要的)。

【问题讨论】:

这会帮助你:v4-alpha.getbootstrap.com/layout/grid/#reordering 【参考方案1】:

发生这种情况是因为 Bootstrap 4 是 flexbox,并且所有列的高度都与最高列的高度相同...

而不是这个:

 ------------------  ---------
|                  ||         |
|                  ||         |
 ------------------ |         |
 ------------------ |         |
|                  ||         |
 ------------------  ---------

你明白了:

 ------------------  ---------
|                  ||         |
|                  ||         |
 ------------------ |         |
                    |         |
                    |         |
 ------------------  ---------
|                  |
 ------------------

通常,您可以通过嵌套列来解决此问题(如您尝试的那样),但是您将无法获得所需的列顺序....

嵌套:

<div class="container">
    <div class="row">
        <div class="col-lg-9">
            <div class="row">
                <div class="col-lg-12 description"></div>
                <div class="col-lg-12 commments"></div>
            </div>
        </div>
        <div class="col-lg-3 sidebar"></div>
    </div>
</div>

但是,要获得所需的列顺序,列必须包含在单个 .row 中。

浮动:

因此,BS4 中的解决方法是使用浮点数(就像 BS3 一样),如下所述: Bootstrap 4 - I don't want columns to have the same height。像这样:

https://www.codeply.com/go/wnRnLl3Jmo

<div class="container">
   <div class="row d-lg-block">
      <div class="col-lg-9 float-left description">Desc</div>
      <div class="col-lg-3 float-right sidebar">Sidebar</div>
      <div class="col-lg-9 float-left comments">Comments</div>
   </div>
</div>

d-lg-block 在行上设置display:block 而不是display:flex,后者允许列在lg 屏幕宽度中浮动。

相关:Bootstrap with different order on mobile version

【讨论】:

非常感谢,第二个解决方法正是我所需要的,并且像魅力一样工作。可能,这有点“凌乱”的解决方案,但似乎这是获得我需要的列顺序的唯一方法。【参考方案2】:

.description 
  background-color: red


.sidebar 
  background-color: blue


.comments 
  background-color: green
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<div class="container">
  <div class="row">
    <div class="col-12 description">description</div>
  </div>
  <div class="row justify-content-end">
    <div class="col-12 col-lg-3 sidebar">sidebar</div>
  </div>
  <div class="row">
    <div class="col-12 col-lg-9 comments">comments</div>
  </div>
</div>
</div>

我想这就是你想要的

【讨论】:

这不是我需要的:在 sn-p 中,描述列采用 100% 的宽度,而侧边栏列已经生成空白空间。 尝试再次运行sn-p,然后按整页,sn-p 显示它在移动设备上的外观

以上是关于Bootstrap 4中列之间的空白垂直空间的主要内容,如果未能解决你的问题,请参考以下文章

在 Bootstrap 4 中添加垂直堆叠列之间的间距

具有均匀垂直和水平空间的引导网格

BootStrap 模态框禁用空白处点击关闭,手动显示隐藏,垂直居中

Twitter bootstrap 3 - 在一行中垂直对齐列[中]

Bootstrap 3按钮垂直对齐没有空间

你如何垂直对齐 UICollectionView 中的 UICollectionViewCells?