【问题标题】:How to create a 3 column responsive design with column 1 as optional and column 3 with minimum width?如何创建一个 3 列响应式设计,其中第 1 列是可选的,第 3 列具有最小宽度?
【发布时间】:2014-12-21 09:50:26
【问题描述】:

我想创建一个类似于http://vandelaydesign.com/blog/blog-promotion/best-twitter-practices-for-improving-visibility/ 的 HTML 布局,其中最左侧的列仅在较大的屏幕尺寸上显示,而最右侧的列具有 345 像素的固定宽度。

使用 bootstrap 3,我尝试了以下方法。

<div class="container">
    <div class="row">  
        <!--left-->
        <div class="col-sm-3">  
        </div>
        <!--/left-->

        <!--center-->
        <div class="col-sm-6">
        </div>
        <!--/center-->

        <!--right-->
        <div class="col-sm-3">
        </div>
        <!--/right-->
    </div>
</div>
<!-- /.container -->

但它正在创建堆叠列。任何帮助都会很棒。

【问题讨论】:

  • 其他媒体查询需要类前缀。在getbootstrap.com/css 网格选项部分了解更多信息。

标签: css twitter-bootstrap twitter-bootstrap-3 responsive-design


【解决方案1】:

在我们获得广泛的 CSS flexbox 支持之前,我喜欢 display: table-cell 用于流畅的水平布局。看一下这个快速示例:http://jsfiddle.net/zn6z3/ 您将使用媒体查询将左列隐藏在一定宽度,而中间列将扩展以填充丢失的空间。

table-cell 的优点在于您可以在某些列上定义固定宽度,而在其他列上没有明确的宽度。未定义宽度的列将扩展以填满表格的空间。与基于浮动的布局相比,这是一个巨大的优势。

这是我的示例 HTML 和 CSS

<div id="page">
    <div class="col" id="left">Content</div>
    <div class="col" id="middle">Content</div>
    <div class="col" id="right">Content</div>
</div>


* {
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
}
#page {
    display: table;
    width: 100%;
}
    #page .col {
        display: table-cell;
        vertical-align: top;
        padding: 20px;
    }
    #left {
        width: 150px;
        background: #777
    }
    #middle {
        width: auto;
        background: #aaa;
    }
    #right {
        width: 345px;
        background: #ccc;
    }

【讨论】:

  • 请注意,我使用 box-sizing:border-box 来重置这些元素的框模型,以便我添加的填充包含在宽度计算中。
  • 好吧,如果您想要使用 Bootstrap 无法完成的自定义布局,那么是时候放弃 Bootstrap 了。我对 Bootstrap 的功能只有模糊的了解。
  • @NickAngiolillo :感谢您的回答。那几乎接近我正在寻找的东西。但很少有顾虑。 1)它不是引导程序 2)在较低的分辨率上,右列应该在中间的下面。
  • @Mic 抱歉,我不知道 Bootstrap。这只是我会采用的一般方法,您仍然可以将其与 Bootstrap 一起用作自定义。对于低分辨率的堆叠右列,您可以使用媒体来设置要显示的列:block,以便它们堆叠。
  • @NickAngiolillo:谢谢。这很有帮助。公认。我将其用于主要布局,其余部分使用引导程序。
猜你喜欢
  • 2017-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-30
  • 2014-06-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多