【问题标题】:Bootstrap 3 offset on right not leftBootstrap 3 在右侧而不是左侧偏移
【发布时间】:2013-12-12 02:34:18
【问题描述】:

关于 BS 3,如果我只想要右侧的窄列内容,我可能会使用偏移类别 9 和列 3。

但是,如果我想要反面和左侧怎么办?在 BS 中是否有正确的方法可以做到这一点,或者我应该只使用自己的 CSS 方法?我正在考虑用我的内容创建一个 3 列,然后只创建一个 9 列。

【问题讨论】:

    标签: twitter-bootstrap-3


    【解决方案1】:

    引导行始终包含它们的浮动并创建新行。您无需担心填充空白列,只需确保它们的总和不超过 12。

    <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
    
    <div class="container">
      <div class="row">
        <div class="col-xs-3 col-xs-offset-9">
          I'm a right column of 3
        </div>
      </div>
      <div class="row">
        <div class="col-xs-3">
          I'm a left column of 3
        </div>
      </div>
      <div class="panel panel-default">
        <div class="panel-body">
          And I'm some content below both columns
        </div>
      </div>
    </div>

    【讨论】:

    • 对于空白列,使用 Bootstrap 的 col-X-pull-Y 类。例如,将 50% 大小的东西向右推,但在右侧留下一列空间(以 12 列网格为例):col-xs-6 pull-right col-xs-pull-1
    • 它在左侧,因为您手动将内容分成不同的行。如果你删除它们并且下面的内容不是 100% 宽(即跟随一些 50% 宽的列col-xs-6),它会堆得很奇怪。
    • 我不知道为什么这是有这么多票的公认答案,它没有回答问题,这里发生的只是 col-xs-3 被一行包裹,这这就是为什么没有更多内容出现在同一行/行上的原因。如果还有另一个 col-xs-3 那么它就在同一行的第一个 col-xs-3 旁边,所以这个答案不能回答这个问题。 kpull1 的回答达到了要求的结果。
    【解决方案2】:

    我正在使用以下我编写的简单自定义 CSS 来实现此目的。

    .col-xs-offset-right-12 {
      margin-right: 100%;
    }
    .col-xs-offset-right-11 {
      margin-right: 91.66666667%;
    }
    .col-xs-offset-right-10 {
      margin-right: 83.33333333%;
    }
    .col-xs-offset-right-9 {
      margin-right: 75%;
    }
    .col-xs-offset-right-8 {
      margin-right: 66.66666667%;
    }
    .col-xs-offset-right-7 {
      margin-right: 58.33333333%;
    }
    .col-xs-offset-right-6 {
      margin-right: 50%;
    }
    .col-xs-offset-right-5 {
      margin-right: 41.66666667%;
    }
    .col-xs-offset-right-4 {
      margin-right: 33.33333333%;
    }
    .col-xs-offset-right-3 {
      margin-right: 25%;
    }
    .col-xs-offset-right-2 {
      margin-right: 16.66666667%;
    }
    .col-xs-offset-right-1 {
      margin-right: 8.33333333%;
    }
    .col-xs-offset-right-0 {
      margin-right: 0;
    }
    @media (min-width: 768px) {
      .col-sm-offset-right-12 {
        margin-right: 100%;
      }
      .col-sm-offset-right-11 {
        margin-right: 91.66666667%;
      }
      .col-sm-offset-right-10 {
        margin-right: 83.33333333%;
      }
      .col-sm-offset-right-9 {
        margin-right: 75%;
      }
      .col-sm-offset-right-8 {
        margin-right: 66.66666667%;
      }
      .col-sm-offset-right-7 {
        margin-right: 58.33333333%;
      }
      .col-sm-offset-right-6 {
        margin-right: 50%;
      }
      .col-sm-offset-right-5 {
        margin-right: 41.66666667%;
      }
      .col-sm-offset-right-4 {
        margin-right: 33.33333333%;
      }
      .col-sm-offset-right-3 {
        margin-right: 25%;
      }
      .col-sm-offset-right-2 {
        margin-right: 16.66666667%;
      }
      .col-sm-offset-right-1 {
        margin-right: 8.33333333%;
      }
      .col-sm-offset-right-0 {
        margin-right: 0;
      }
    }
    @media (min-width: 992px) {
      .col-md-offset-right-12 {
        margin-right: 100%;
      }
      .col-md-offset-right-11 {
        margin-right: 91.66666667%;
      }
      .col-md-offset-right-10 {
        margin-right: 83.33333333%;
      }
      .col-md-offset-right-9 {
        margin-right: 75%;
      }
      .col-md-offset-right-8 {
        margin-right: 66.66666667%;
      }
      .col-md-offset-right-7 {
        margin-right: 58.33333333%;
      }
      .col-md-offset-right-6 {
        margin-right: 50%;
      }
      .col-md-offset-right-5 {
        margin-right: 41.66666667%;
      }
      .col-md-offset-right-4 {
        margin-right: 33.33333333%;
      }
      .col-md-offset-right-3 {
        margin-right: 25%;
      }
      .col-md-offset-right-2 {
        margin-right: 16.66666667%;
      }
      .col-md-offset-right-1 {
        margin-right: 8.33333333%;
      }
      .col-md-offset-right-0 {
        margin-right: 0;
      }
    }
    @media (min-width: 1200px) {
      .col-lg-offset-right-12 {
        margin-right: 100%;
      }
      .col-lg-offset-right-11 {
        margin-right: 91.66666667%;
      }
      .col-lg-offset-right-10 {
        margin-right: 83.33333333%;
      }
      .col-lg-offset-right-9 {
        margin-right: 75%;
      }
      .col-lg-offset-right-8 {
        margin-right: 66.66666667%;
      }
      .col-lg-offset-right-7 {
        margin-right: 58.33333333%;
      }
      .col-lg-offset-right-6 {
        margin-right: 50%;
      }
      .col-lg-offset-right-5 {
        margin-right: 41.66666667%;
      }
      .col-lg-offset-right-4 {
        margin-right: 33.33333333%;
      }
      .col-lg-offset-right-3 {
        margin-right: 25%;
      }
      .col-lg-offset-right-2 {
        margin-right: 16.66666667%;
      }
      .col-lg-offset-right-1 {
        margin-right: 8.33333333%;
      }
      .col-lg-offset-right-0 {
        margin-right: 0;
      }
    }
    

    【讨论】:

    • 硬编码百分比是非常不理想的。此外,可以更改 Bootstrap 的网格系统的工作方式,因此不能保证您有 12 列。在那种情况下,这个答案失败了。您最好计算相对于网格列数的百分比。
    • bootstrap 只从左边做同样的事情
    • 一个很好的解决方法!这必须在引导程序中,我不明白他们为什么不添加
    【解决方案3】:

    <div class="row">
    <div class="col-md-10 col-md-pull-2">
    col-md-10 col-md-pull-2
    </div>
    <div class="col-md-10 col-md-pull-2">
    col-md-10 col-md-pull-2
    </div>
    </div>

    【讨论】:

      【解决方案4】:

      我基于Rukshan's answer修改了Bootstrap SASS (v3.3.5)

      将此添加到 mixins/_grid-framework.scss 中的 calc-grid-column mixin 的末尾,就在 $type == offset if 条件的下方。

      @if ($type == offset-right) {
            .col-#{$class}-offset-right-#{$index} {
                margin-right: percentage(($index / $grid-columns));
            }
        }
      

      修改mixins/_grid-framework.scss 中的make-grid mixin 以生成offset-right 类。

      // 为特定类创建网格 @mixin make-grid($class) { @include 浮动网格列($class); @include loop-grid-columns($grid-columns, $class, width); @include loop-grid-columns($grid-columns, $class, pull); @include loop-grid-columns($grid-columns, $class, push); @include loop-grid-columns($grid-columns, $class, offset); @include loop-grid-columns($grid-columns, $class, offset-right); }

      然后您可以使用 col-sm-offset-right-2col-md-offset-right-1 等类

      【讨论】:

      • +1 用于使用 percentage 而不是硬编码值;这更接近于 Bootstrap 内部处理网格系统的方式,此外,如果不希望使用默认值 12,它还允许使用可变网格列。
      【解决方案5】:

      既然谷歌似乎喜欢这个答案...

      如果您希望匹配 Bootstrap 4 的命名约定,即 offset-*-#,那么修改如下:

      .offset-right-12 {
        margin-right: 100%;
      }
      .offset-right-11 {
        margin-right: 91.66666667%;
      }
      .offset-right-10 {
        margin-right: 83.33333333%;
      }
      .offset-right-9 {
        margin-right: 75%;
      }
      .offset-right-8 {
        margin-right: 66.66666667%;
      }
      .offset-right-7 {
        margin-right: 58.33333333%;
      }
      .offset-right-6 {
        margin-right: 50%;
      }
      .offset-right-5 {
        margin-right: 41.66666667%;
      }
      .offset-right-4 {
        margin-right: 33.33333333%;
      }
      .offset-right-3 {
        margin-right: 25%;
      }
      .offset-right-2 {
        margin-right: 16.66666667%;
      }
      .offset-right-1 {
        margin-right: 8.33333333%;
      }
      .offset-right-0 {
        margin-right: 0;
      }
      @media (min-width: 576px) {
        .offset-sm-right-12 {
          margin-right: 100%;
        }
        .offset-sm-right-11 {
          margin-right: 91.66666667%;
        }
        .offset-sm-right-10 {
          margin-right: 83.33333333%;
        }
        .offset-sm-right-9 {
          margin-right: 75%;
        }
        .offset-sm-right-8 {
          margin-right: 66.66666667%;
        }
        .offset-sm-right-7 {
          margin-right: 58.33333333%;
        }
        .offset-sm-right-6 {
          margin-right: 50%;
        }
        .offset-sm-right-5 {
          margin-right: 41.66666667%;
        }
        .offset-sm-right-4 {
          margin-right: 33.33333333%;
        }
        .offset-sm-right-3 {
          margin-right: 25%;
        }
        .offset-sm-right-2 {
          margin-right: 16.66666667%;
        }
        .offset-sm-right-1 {
          margin-right: 8.33333333%;
        }
        .offset-sm-right-0 {
          margin-right: 0;
        }
      }
      @media (min-width: 768px) {
        .offset-md-right-12 {
          margin-right: 100%;
        }
        .offset-md-right-11 {
          margin-right: 91.66666667%;
        }
        .offset-md-right-10 {
          margin-right: 83.33333333%;
        }
        .offset-md-right-9 {
          margin-right: 75%;
        }
        .offset-md-right-8 {
          margin-right: 66.66666667%;
        }
        .offset-md-right-7 {
          margin-right: 58.33333333%;
        }
        .offset-md-right-6 {
          margin-right: 50%;
        }
        .offset-md-right-5 {
          margin-right: 41.66666667%;
        }
        .offset-md-right-4 {
          margin-right: 33.33333333%;
        }
        .offset-md-right-3 {
          margin-right: 25%;
        }
        .offset-md-right-2 {
          margin-right: 16.66666667%;
        }
        .offset-md-right-1 {
          margin-right: 8.33333333%;
        }
        .offset-md-right-0 {
          margin-right: 0;
        }
      }
      @media (min-width: 992px) {
        .offset-lg-right-12 {
          margin-right: 100%;
        }
        .offset-lg-right-11 {
          margin-right: 91.66666667%;
        }
        .offset-lg-right-10 {
          margin-right: 83.33333333%;
        }
        .offset-lg-right-9 {
          margin-right: 75%;
        }
        .offset-lg-right-8 {
          margin-right: 66.66666667%;
        }
        .offset-lg-right-7 {
          margin-right: 58.33333333%;
        }
        .offset-lg-right-6 {
          margin-right: 50%;
        }
        .offset-lg-right-5 {
          margin-right: 41.66666667%;
        }
        .offset-lg-right-4 {
          margin-right: 33.33333333%;
        }
        .offset-lg-right-3 {
          margin-right: 25%;
        }
        .offset-lg-right-2 {
          margin-right: 16.66666667%;
        }
        .offset-lg-right-1 {
          margin-right: 8.33333333%;
        }
        .offset-lg-right-0 {
          margin-right: 0;
        }
      }
      @media (min-width: 1200px) {
        .offset-xl-right-12 {
          margin-right: 100%;
        }
        .offset-xl-right-11 {
          margin-right: 91.66666667%;
        }
        .offset-xl-right-10 {
          margin-right: 83.33333333%;
        }
        .offset-xl-right-9 {
          margin-right: 75%;
        }
        .offset-xl-right-8 {
          margin-right: 66.66666667%;
        }
        .offset-xl-right-7 {
          margin-right: 58.33333333%;
        }
        .offset-xl-right-6 {
          margin-right: 50%;
        }
        .offset-xl-right-5 {
          margin-right: 41.66666667%;
        }
        .offset-xl-right-4 {
          margin-right: 33.33333333%;
        }
        .offset-xl-right-3 {
          margin-right: 25%;
        }
        .offset-xl-right-2 {
          margin-right: 16.66666667%;
        }
        .offset-xl-right-1 {
          margin-right: 8.33333333%;
        }
        .offset-xl-right-0 {
          margin-right: 0;
        }
      }
      

      【讨论】:

        【解决方案6】:

        您需要组合多个类(col-*-offset-* 表示左边距,col-*-pull-* 表示右边)

        <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
        <div class="container">
          <div class="row">
            <div class="col-xs-3 col-xs-offset-9">
              I'm a right column
            </div>
            <div class="col-xs-3">
              We're
            </div>
            <div class="col-xs-3">
              four columns
            </div>
            <div class="col-xs-3">
              using the
            </div>
            <div class="col-xs-3">
              whole row
            </div>
            <div class="col-xs-3 col-xs-offset-9 col-xs-pull-9">
              I'm a left column
            </div>
            <div class="col-xs-3">
              We're
            </div>
            <div class="col-xs-3">
              four columns
            </div>
            <div class="col-xs-3">
              using the
            </div>
            <div class="col-xs-3">
              whole row
            </div>
          </div>
        </div>

        因此您无需手动将其分成不同的行。

        【讨论】:

          【解决方案7】:

          基于WeNeigh's answer!这是一个 LESS 示例

          .col-offset-right(@i, @type) when (@i >= 0) {
              .col-@{type}-offset-right-@{i} {
                  margin-right: percentage((@i / @grid-columns));
              }
              .col-offset-right(@i - 1, @type);
          };
          .col-offset-right(@grid-columns, xs);
          .col-offset-right(@grid-columns, sm);
          .col-offset-right(@grid-columns, md);
          .col-offset-right(@grid-columns, lg);
          

          【讨论】:

            【解决方案8】:

            这里是与 Rukshan 相同的解决方案,但在 sass 中(为了保持您的网格配置)不适用于 Ross Allen 解决方案的特殊情况(当您不能有父 div.row 时)

            @mixin make-grid-offset-right($class) {
                @for $index from 0 through $grid-columns {
                    .col-#{$class}-offset-right-#{$index} {
                        margin-right: percentage(($index / $grid-columns));
                    }
                }
            }
            
            @include make-grid-offset-right(xs);
            
            @media (min-width: $screen-sm-min) {
              @include make-grid-offset-right(sm);
            }
            
            @media (min-width: $screen-md-min) {
              @include make-grid-offset-right(md);
            }
            
            @media (min-width: $screen-lg-min) {
              @include make-grid-offset-right(lg);
            }
            

            【讨论】:

              【解决方案9】:

              <div class="row col-xs-12">            
                          <nav class="col-xs-12 col-xs-offset-7" aria-label="Page navigation">
                              <ul class="pagination mt-0">                   
                                  <li class="page-item">                        
                                      <div class="form-group">
                                          <div class="input-group">
                                              <input type="text" asp-for="search" class="form-control" placeholder="Search" aria-controls="order-listing" />
              
                                              <div class="input-group-prepend bg-info">
                                                  <input type="submit" value="Search" class="input-group-text bg-transparent">                                   
                                              </div>
                                          </div>
                                      </div>
                                  </li>
                                 
                              </ul>
                          </nav>
                      </div>

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2012-02-04
                • 2014-09-26
                • 1970-01-01
                • 2016-09-09
                • 1970-01-01
                • 2015-09-27
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多