【问题标题】:Ruby on rails - Bootstrap - 3 columns made responsiveRuby on rails - Bootstrap - 3 列做出响应
【发布时间】:2016-01-24 01:37:07
【问题描述】:

我有以下代码的主页:

 <% @events.each_slice(3).to_a.each do |chunk| %>
 <div class="row row-centered">
   <% chunk.each do |event| %>
     <div class="col-xs-12 col-sm-6 col-md-6 col-lg-4 col-centered">

         centered content with max-width 300px

     </div>
   <% end %>
</div>
<% end %>

在大屏幕上效果很好。但是当我改变浏览器的大小时,列从每行 3 列变为每行 2 列,左一列到下一行。所以我有:

  • 2 列
  • 1 列
  • 2 列
  • 1 列

对于使用@objects.each_slice(3) 生成的响应式列,是否有任何通用解决方案?

【问题讨论】:

  • 你想确切看到的结果是什么:是 3、2、1 吗?
  • 我希望在最大屏幕上每行 3 列,在中型屏幕上每行 2 列,在最小屏幕上每行 1 列。问题是,当我生成 3 列的行时,2 列的大小会出现问题。
  • 好的。谢谢。请看下面我的回答。我希望它有用。
  • P.S.这不是很好的“最大宽度为 300px 的居中内容”会弄乱 Bootstrap。

标签: css ruby-on-rails ruby-on-rails-4 twitter-bootstrap-3 responsive-design


【解决方案1】:

那是因为你有以下类:

col-xs-12 col-sm-6 col-md-6 col-lg-4

这意味着:大屏幕每行 3 个,中间屏幕每行 2 个,移动设备每行 1 个。

如果你改为:

col-xs-12 col-sm-4 col-md-4 col-lg-4

这将使所有屏幕上每行 3 个,除了移动设备,每行 1 个。

【讨论】:

  • 很好,但这仍然不是解决方案。对于中型屏幕,我真的需要 2 列。
  • 然后你可以根据需要更改 col-md-6 或 col-sm-6。
【解决方案2】:

所以,我的解决方案非常简单。在主页上,我将显示 12 个帖子。鉴于此,我将代码更改为:

<div class="row row-centered">
<% @events.each_slice(3).to_a.each do |chunk| %>

   <% chunk.each do |event| %>
     <div class="col-xs-12 col-sm-6 col-md-6 col-lg-4 col-centered">
         <div class="thumbnail">

          </div>
     </div>
   <% end %>

<% end %>
</div>

鉴于我不是生成 3 列的行,而是生成 12 列的行 - 我让 Bootstrap 来处理。

【讨论】:

    【解决方案3】:

    显示 Bootstrap 响应式网格如何响应调整大小的 HTML 示例

    我编写了这个 HTML sn-p 来帮助我确定要使用哪种 Bootstrap 类组合。它也可能对您有所帮助。

    <div class="row">
          <div class="page-header">
            <h1>Bootstrap grid examples</h1>
            <p class="lead">Basic grid layouts to get you familiar with building within the Bootstrap grid system.</p>
          </div>
    
          <h3>Three equal columns</h3>
          <p>Get three equal-width columns <strong>starting at desktops and scaling to large desktops</strong>. On mobile devices, tablets and below, the columns will automatically stack.</p>
          <div class="row">
            <div class="col-md-4" style="background-color:red">.col-md-4</div>
            <div class="col-md-4" style="background-color:pink">.col-md-4</div>
            <div class="col-md-4" style="background-color:yellow">.col-md-4</div>
          </div>
    
          <h3>Three unequal columns</h3>
          <p>Get three columns <strong>starting at desktops and scaling to large desktops</strong> of various widths. Remember, grid columns should add up to twelve for a single horizontal block. More than that, and columns start stacking no matter the viewport.</p>
          <div class="row">
            <div class="col-md-3" style="background-color:red">.col-md-3</div>
            <div class="col-md-6" style="background-color:pink">.col-md-6</div>
            <div class="col-md-3" style="background-color:yellow">.col-md-3</div>
          </div>
    
          <h3>Two columns</h3>
          <p>Get two columns <strong>starting at desktops and scaling to large desktops</strong>.</p>
          <div class="row">
            <div class="col-md-8" style="background-color:pink">.col-md-8</div>
            <div class="col-md-4" style="background-color:yellow">.col-md-4</div>
          </div>
    
    
           <h3>Two columns with two nested columns</h3>
    <p>Per the documentation, nesting is easy, just put a row of columns within an existing column.</p> <p>This gives you two columns <strong>starting at desktops and scaling to large desktops</strong>, with another two (equal widths) within the larger column.</p>
          <p>At mobile device sizes, tablets and down, these columns and their nested columns will stack.</p>
          <div class="row">
            <div class="col-md-8" style="background-color:yellow">
              .col-md-8
              <div class="row">
                <div class="col-md-6" style="background-color:lightgreen">.col-md-6</div>
                <div class="col-md-6" style="background-color:pink">.col-md-6</div>
              </div>
            </div>
            <div class="col-md-4" style="background-color:lightgray">.col-md-4</div>
          </div>
    
    
          <h3>Full width, single column</h3>
          <p class="text-warning">No grid classes are necessary for full-width elements.</p>
    
    
    
          <h3>Mixed: mobile and desktop</h3>
          <p>The Bootstrap 3 grid system has four tiers of classes: xs (phones), sm (tablets), md (desktops), and lg (larger desktops). You can use nearly any combination of these classes to create more dynamic and flexible layouts.</p>
          <p>Each tier of classes scales up, meaning if you plan on setting the same widths for xs and sm, you only need to specify xs.</p>
          <div class="row">
            <div class="col-xs-12 col-md-8" style="background-color:red">.col-xs-12 .col-md-8</div>
            <div class="col-xs-6 col-md-4" style="background-color:lightgray">.col-xs-6 .col-md-4</div>
          </div>
          <div class="row">
            <div class="col-xs-6 col-md-4" style="background-color:lightgray">.col-xs-6 .col-md-4</div>
            <div class="col-xs-6 col-md-4" style="background-color:yellow">.col-xs-6 .col-md-4</div>
            <div class="col-xs-6 col-md-4" style="background-color:lightgreen">.col-xs-6 .col-md-4</div>
          </div>
          <div class="row">
            <div class="col-xs-6" style="background-color:lightgray">.col-xs-6 </div>
            <div class="col-xs-6" style="background-color:lightgreen">.col-xs-6</div>
          </div>
    
          <hr>
    
          <h3>Mixed: mobile, tablet, and desktop</h3>
          <div class="row">
            <div class="col-xs-12 col-sm-6 col-lg-8" style="background-color:lightgray">.col-xs-12 .col-sm-6 .col-lg-8</div>
            <div class="col-xs-6 col-lg-4" style="background-color:yellow">.col-xs-6 .col-lg-4</div>
          </div>
          <div class="row">
            <div class="col-xs-6 col-sm-4" style="background-color:lightgreen">.col-xs-6 .col-sm-4</div>
            <div class="col-xs-6 col-sm-4" style="background-color:pink">.col-xs-6 .col-sm-4</div>
            <div class="col-xs-6 col-sm-4" style="background-color:lightgray">.col-xs-6 .col-sm-4</div>
          </div>
    
          <hr>
    
          <h3>Column clearing</h3>
          <div class="row">
            <div class="col-xs-6 col-sm-3" style="background-color:lightgray">
              .col-xs-6 .col-sm-3
              <br>
              Resize your viewport or check it out on your phone for an example.
            </div>
            <div class="col-xs-6 col-sm-3" style="background-color:yellow">.col-xs-6 .col-sm-3</div>
    
            <!-- Add the extra clearfix for only the required viewport -->
            <div class="clearfix visible-xs"></div>
    
            <div class="col-xs-6 col-sm-3" style="background-color:lightgreen">.col-xs-6 .col-sm-3</div>
            <div class="col-xs-6 col-sm-3" style="background-color:pink">.col-xs-6 .col-sm-3</div>
          </div>
    
          <hr>
    
          <h3>Offset, push, and pull resets</h3>
          <p>Reset offsets, pushes, and pulls at specific breakpoints.</p>
          <div class="row">
            <div class="col-sm-5 col-md-6" style="background-color:lightgray">.col-sm-5 .col-md-6</div>
            <div class="col-sm-5 col-sm-offset-2 col-md-6 col-md-offset-0" style="background-color:yellow">.col-sm-5 .col-sm-offset-2 .col-md-6 .col-md-offset-0</div>
          </div>
          <div class="row">
            <div class="col-sm-6 col-md-5 col-lg-6" style="background-color:lightgreen">.col-sm-6 .col-md-5 .col-lg-6</div>
            <div class="col-sm-6 col-md-5 col-md-offset-2 col-lg-6 col-lg-offset-0" style="background-color:pink"<>.col-sm-6 .col-md-5 .col-md-offset-2 .col-lg-6 .col-lg-offset-0" </div>
            </div>
    
    </div>
    

    【讨论】:

      猜你喜欢
      • 2011-04-30
      • 1970-01-01
      • 2021-06-21
      • 1970-01-01
      • 2018-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-20
      相关资源
      最近更新 更多