9

我想为我的界面创建小面板/仪表板。就我而言,我想要两个这样的面板

+-------------------------------+    +-------------------------------+
|                               |    |                               |
|                               |    |                               |
+-------------------------------+    +-------------------------------+

通常使用 Bootstrap 3 很容易。

<div class="row">
  <div class="col-md-5">
  </div>
  <div class="col-md-5 pull-right">
  </div>
</div>

问题是 col-md-2 的差距,就像这里的情况一样,太大了。我不能使用 col-md-1 间隙,因为这样两边的大小就不同了。

我也尝试在左右添加填充,但这也没有效果。我可以在这里做什么?

4

4 回答 4

13

您可以添加一个修改宽度的类col-md-6。此类的宽度设置为50%。通过像这样减小宽度来实现更小的间隙:

.dashboard-panel-6 {
   width: 45%;
}

将此添加到您的 div 元素中。这样,宽度规则col-md-6就会被覆盖。

<div class="row">
  <div class="col-md-6 dashboard-panel-6">...</div>
  <div class="col-md-6 dashboard-panel-6">...</div>
</div>
于 2013-09-14T22:02:43.767 回答
6

您可以在内部使用另一个 div 并为其提供填充。

<div class="row">
  <div class="col-md-6">
    <div class="inner-div">
    </div>
  </div>
  <div class="col-md-6 pull-right">
    <div class="inner-div">
    </div>
  </div>
</div>

.inner-div{
   padding: 5px;
 }
于 2013-09-14T20:48:44.783 回答
2

这是另一种可能性:
实时视图
编辑视图

您会看到它使用了 2 个 col-md-6,每个都有一个嵌套的 col-md-11,并且您将嵌套的行定位在右侧的第二个 div 中。

Ken的建议有我喜欢的干净的 HTML。如果您的左右面板使用宽度由 Bootstrap 定义的元素(例如井或表单元素),则列填充可能会导致麻烦并破坏布局。在这种情况下,这种嵌套方法可能更容易。

HTML

<div class="container">
  <div class="row">

    <div class="col-md-6">
      <div class="row">
        <div class="col-md-11">nested row col-md-11</div>
      </div><!-- end nested row -->
    </div>

    <div class="col-md-6">
      <div class="row">
        <div class="col-md-11 col-md-offset-1">nested row col-md-11</div>
      </div><!-- end nested row -->
    </div>

  </div>
</div>

祝你好运!

于 2013-09-15T11:15:12.833 回答
2

我已经在这里发布了这个,但它仍然与原始问题相关。

我对列之间的空间也有类似的问题。根本问题是引导程序 3 和 4 中的列使用填充而不是边距。因此,相邻两列的背景颜色相互接触。

我找到了一个适合我们问题的解决方案,并且很可能适用于大多数尝试分隔列并保持与网格系统其余部分相同的装订线宽度的人。

这就是我们想要的最终结果

在此处输入图像描述

在列之间存在带有阴影的间隙是有问题的。我们不希望列之间有额外的空间。我们只是希望排水沟是“透明的”,这样网站的背景颜色就会出现在两个白色列之间。

这是两列的标记

<div class="row">
    <div class="col-sm-7">
        <div class="raised-block">
            <h3>Facebook</h3>
        </div>
    </div>
    <div class="col-sm-5">
        <div class="raised-block">
            <h3>Tweets</h3>
        </div>
    </div>
</div>

CSS

.raised-block {
    background-color: #fff;
    margin-bottom: 10px;
    margin-left: 0;
    margin-right: -0.625rem; // for us 0.625rem == 10px
    padding-left: 0.625rem;
    padding-right: 0.625rem;
}
@media (max-width: 33.9em){ // this is for our mobile layout where columns stack
    .raised-block {
        margin-left: -0.625rem;
    }
}
.row [class^="col-"]:first-child>.raised-block {
    // this is so the first column has no margin so it will not be "indented"
    margin-left: -0.625rem;
}

这种方法确实需要一个带有负边距的内部 div,就像引导程序使用的“行”类一样。而这个 div,我们称之为“raised-block”,必须是列的直接兄弟

这样,您仍然可以在列内获得适当的填充。我已经看到似乎通过创建空间来工作的解决方案,但不幸的是,他们创建的列在行的任一侧都有额外的填充,因此它最终使行更薄,网格布局设计用于。如果您查看图像以获得所需的外观,这意味着两列一起将小于顶部的一列,这会破坏网格的自然结构。

这种方法的主要缺点是它需要额外的标记来包装每列的内容。对我们来说,这是可行的,因为只有特定的列需要它们之间的空间才能达到所需的外观。

希望这可以帮助

于 2015-10-19T17:31:11.090 回答