【问题标题】:Wrapping divs around large div in bootstrap grid在引导网格中将 div 包裹在大 div 周围
【发布时间】:2015-11-05 08:16:58
【问题描述】:

我需要一些帮助来解决复杂的 CSS 布局问题。如果它可以只用 CSS 而不是 javascript 来完成那将是理想的。

  • 我需要一个高度不同
  • 的产品网格
  • 还有一种“特色产品”,其高度是常规产品之一的 2 倍
  • 不同视口上的布局需要与下图相匹配

到目前为止我所做的尝试:

这是我现在的代码示例:

<div class="container">
<div class="row">
  <div class="l-product large col-xs-6 col-sm-6 col5-md-2 ">
    1
    <br>This div should be double the height of one tile without fixing the height with CSS
  </div>
  <div class="l-product taller col-xs-6 col-sm-3 col5-md-1">
    2
    <br><span>If one div is taller the whole grid breaks</span>
  </div>
  <div class="l-product col-xs-6 col-sm-3 col5-md-1">
    3
  </div>
  <div class="l-product col-xs-6 col-sm-3 col5-md-1">
    4
  </div>
  <div class="l-product col-xs-6 col-sm-3 col5-md-1">
    5
  </div>
  <div class="l-product col-xs-6 col-sm-3 col5-md-1">
    6
  </div>
  <div class="l-product col-xs-6 col-sm-3 col5-md-1">
    7
  </div>
  <div class="l-product col-xs-6 col-sm-3 col5-md-1">
    8
  </div>
  <div class="l-product col-xs-6 col-sm-3 col5-md-1">
    9
  </div>
  <div class="l-product col-xs-6 col-sm-3 col5-md-1">
    10
  </div>
  <div class="l-product col-xs-6 col-sm-3 col5-md-1">
    11
  </div>
</div>

http://codepen.io/anon/pen/pJBbPN

  • 我正在使用引导程序,所以我尝试像这样嵌套行 Nested rows with bootstrap grid system? 我的问题是我无法弄清楚如何让项目在不同的视口中从一行移动到另一行,这导致网格中断

桌面:

平板电脑:

小型平板电脑:

手机:

【问题讨论】:

  • 请显示一些代码。
  • 您好,我很乐意提供帮助,而且我喜欢引导程序。请在每个框(在每个图像中)上放置一个数字,以便我知道哪个框对应于每个视口中的哪个框。
  • @MichaelJones 我在方框中添加了数字,这样你就可以看到我想要做什么。
  • @l19 我添加了一些代码

标签: javascript html css twitter-bootstrap


【解决方案1】:

我不确定您是否可以使用基本引导程序来做到这一点。我建议使用更高级的技术,例如Masonry。当您转到示例链接时,更改浏览器宽度。它还添加了一些不错的动画效果。

// external js: masonry.pkgd.js

$(document).ready(function() {

  $('.grid').masonry({
    itemSelector: '.grid-item',
    columnWidth: 130
  });

});
* {
  -webkit-box-sizing: border-box;
          box-sizing: border-box;
}

body { font-family: sans-serif; }

/* ---- grid ---- */

.grid {
  background: #EEE;
}

/* clearfix */
.grid:after {
  content: '';
  display: block;
  clear: both;
}

/* ---- grid-item ---- */

.grid-item {
  width: 120px;
  height: 120px;
  float: left;
  background: #D26;
  border: 2px solid #333;
  border-color: hsla(0, 0%, 0%, 0.5);
  border-radius: 5px;
  margin: 5px;
}

.grid-item--width2 { width: 250px; }

.grid-item--height2 { height: 250px; }
<h1>Masonry - columnWidth</h1>

<div class="grid">
  <div class="grid-item grid-item--width2 grid-item--height2"></div>
  <div class="grid-item"></div>
  <div class="grid-item"></div>
  <div class="grid-item"></div>
  <div class="grid-item"></div>
  <div class="grid-item"></div>
  <div class="grid-item"></div>
  <div class="grid-item"></div>
  <div class="grid-item"></div>
  <div class="grid-item"></div>
  <div class="grid-item"></div>
  <div class="grid-item"></div>
  <div class="grid-item"></div>
  <div class="grid-item"></div>
  <div class="grid-item"></div>
  <div class="grid-item"></div>
  <div class="grid-item"></div>
  <div class="grid-item"></div>
  <div class="grid-item"></div>
  <div class="grid-item"></div>
  <div class="grid-item"></div>
  <div class="grid-item"></div>
  <div class="grid-item"></div>
</div>

【讨论】:

  • 我之前已经研究过这个问题,我的问题是我需要连续的所有 div 高度相同(内容是动态的)并且大图像是高度的两倍(也动态)所以一切都排成一行。除非我弄错了,否则 Masonry 似乎没有解决方案。
  • 据我所知,this example 可以满足您的所有需求。它甚至可以根据宽度断点更改第一个 div 的大小。有什么问题吗?另外,您说内容是动态的,但它们需要具有相同的高度。那应该如何运作?如何计算高度?
【解决方案2】:

如果您使用列,则需要将列除以 12。所以我们希望有一个偶数,5 不会分解为 12 列。

试试下面看看结果。我在小盒子里加了 6 个盒子。

<div class="container">
        <div class="row">
            <div class="col-xs-6">
                <div class="big-box">image</div>
            </div>
            <div class="col-xs-6">
                <div class="row">
                    <div class="col-xs-4"><div class="mini-box">1</div></div>
                    <div class="col-xs-4"><div class="mini-box">2</div></div>
                    <div class="col-xs-4"><div class="mini-box">3</div></div>

                </div>
                <div class="row">
                    <div class="col-xs-4"><div class="mini-box">1</div></div>
                    <div class="col-xs-4"><div class="mini-box">2</div></div>
                    <div class="col-xs-4"><div class="mini-box">3</div></div>

                </div>
            </div>
        </div>
        <div class="row">
            <div class="col-xs-2"><div class="mini-box">1</div></div>
            <div class="col-xs-2"><div class="mini-box">2</div></div>
            <div class="col-xs-2"><div class="mini-box">3</div></div>
            <div class="col-xs-2"><div class="mini-box">4</div></div>
            <div class="col-xs-2"><div class="mini-box">5</div></div>
            <div class="col-xs-2"><div class="mini-box">6</div></div>

            </div>
        <div class="row">
            <div class="col-xs-2"><div class="mini-box">1</div></div>
            <div class="col-xs-2"><div class="mini-box">2</div></div>
            <div class="col-xs-2"><div class="mini-box">3</div></div>
            <div class="col-xs-2"><div class="mini-box">4</div></div>
            <div class="col-xs-2"><div class="mini-box">5</div></div>
            <div class="col-xs-2"><div class="mini-box">6</div></div>

        </div>
        </div>

这是jsfiddle

或者你可以使用 jQuery 的网格系统

【讨论】:

  • 你好@Rich,这不适用于较小的屏幕尺寸。
  • 如何解决不同高度 div 的问题。我不是在固定高度,它们是动态的。
  • 您将使用砖石布局。用 jQuery。这是一个很好的插件。 masonry.desandro.com
猜你喜欢
  • 2015-02-09
  • 2014-05-28
  • 1970-01-01
  • 1970-01-01
  • 2019-03-26
  • 1970-01-01
  • 2016-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多