【问题标题】:One-column layout with fluid sidebar and max-width main column带有流动侧边栏和最大宽度主列的单列布局
【发布时间】:2013-03-17 14:28:09
【问题描述】:

我想要一个单列布局,其中文本正文的最大宽度应该是 30 em,但应该尽可能宽(最多 30 em)。

左边距(文本正文左边缘和浏览器窗口左边缘之间的空白区域)最多应为 6em,并在必要时缩小(在较小的屏幕上)。

右边距应使用可用的剩余空间。

我见过这个问题:I need a max-margin CSS property, but it doesn't exist. How could I fake it? - 但我不明白如何在我的情况下使用它。这是我尝试过的(http://jsfiddle.net/y2rd8/1/

<div class="left"></div>
<div class="right"></div>
<div class="body">
A wonderful serenity has taken possession of my entire soul,
</div>
<div style="clear: both;" />

.left, .right {
    background: gray;
}

.left {
    float: left;
    max-width: 6em;
}
.right {
    float: right;
    width: auto;
}

.body {
    max-width: 30em;
    border: 1px solid green;
}

【问题讨论】:

    标签: css


    【解决方案1】:

    使用最大内容宽度加上两倍最大边距宽度的媒体查询。

    .body {
        max-width: 30em;
        border: 1px solid green;
        margin: auto;
    }
    /* 42em = 30 + (2*6) */
    @media screen and (min-width: 42em) {
        .body {
            margin-left: 6em;
        }
    }
    

    http://jsfiddle.net/schettino72/j9HpH/1/

    【讨论】:

      【解决方案2】:

      我会选择你所拥有的东西,但可能会远离浮动并完全消除 .left.right,然后使用媒体查询来管理左边距:

      http://jsfiddle.net/y2rd8/9

      .body {
          max-width: 30em;
          border: 1px solid green;
          margin-right: 1em;
      }
      @media screen and (max-width: 480px) {
          .body {
              margin-left: 2em;
          }
      }
      @media screen and (min-width: 481px) {
          .body {
              margin-left: 4em;
          }
      }
      

      【讨论】:

      • 不是很漂亮 :)) (我希望在没有 javascript 的情况下我有一个更平滑的过渡)但是我现在的方式。非常感谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-31
      • 1970-01-01
      • 2015-04-20
      • 1970-01-01
      • 2012-06-22
      相关资源
      最近更新 更多