【问题标题】:How to create a fixed width sidebar and full width content如何创建固定宽度的侧边栏和全宽内容
【发布时间】:2016-08-04 09:09:38
【问题描述】:

我想创建一个带有侧边栏和内容的页面。侧边栏已修复width(200px),内容应为

(body_width - 侧边栏宽度)

。因此在 jQuery 中创建并完美运行。

编辑

Example

但我想知道,这可能只在 CSS 中实现吗?

【问题讨论】:

  • 你可以用display:table作弊:jsfiddle.net/WSgwp/5
  • @Andy 哈哈......很好......谢谢。但是有没有其他办法?
  • 您可以删除宽度和浮动,但这通常会导致比它解决的问题更多的问题。除此之外没有,对不起。但是display: table 并没有你想的那么糟糕,它没有使用表格标记,只是复制浏览器如何处理td 元素
  • 哦.. 谢谢@Andy 的回答。
  • 没有问题,告诉我您是否希望我将其作为完整的答案来结束问题

标签: css html fluid-layout


【解决方案1】:

您可以在包含的 div 上使用 display: table;,然后在内部 div 上使用 display: table-cell;。然后,您可以为侧边栏应用最小宽度,内容将占据页面的其余部分。

可以在here找到demo

不要让display: table 的使用让您失望 - 这不是使用表格标记或使您的 html 语义减少。它只是让您的浏览器将 div 视为表格单元格(这正是您所需要的)

HTML:

<div id="main_wrap">
    <div id="sidebar">1</div>
    <div id="content">2</div>
</div>​

CSS:

#main_wrap { 
    display: table;
}

#sidebar {
    background:red;
    min-width: 200px;
    display: table-cell;
}

#content {
    background:blue;
    display: table-cell;
    width: 100%;
}

【讨论】:

  • 您能支持使用display: table 并反对其他解决方案吗?
  • 在此解决方案中使用box-shadowimpossible
  • 盒子阴影在你的小提琴上工作,它只是被黄色的 div 覆盖了......删除background: yellow;,你会看到。
  • @VladimirStarkov 你把盒子阴影隐藏在黄色 div 后面...点击这里jsfiddle.net/WSgwp/17,当你错了别再找我了。
  • 搜索引擎线性读取代码。因此,我通常更喜欢在源jsfiddle.net/WSgwp/277 中首先放置独特的内容,然后放置重复的侧边栏。它还可以帮助使用屏幕阅读器的人,这样他们就不必为了找到肉和土豆而费尽心思。
【解决方案2】:

嘿,你可以用纯 css 得到你想要的,把margin-left:200px; 给你的#content

CSS

#main_wrap {
border:3px solid green;
}

#sidebar{
        background:red;
        width: 200px;
        float:left;
    }

#content{
    background:blue;
    margin-left:200px;   
}

DEMO

【讨论】:

  • 这也很简单。谢谢@Arora
【解决方案3】:

您可以尝试使用负边距。

完整的解释和示例(带演示): https://shellcreeper.com/responsive-fixed-width-sidebar-why-and-how/

HTML:

<div class="wrapper">

    <div class="content">
    </div><!-- .content -->

    <div class="sidebar">
    </div><!-- .sidebar -->

</div><!-- .wrapper -->

CSS:

.wrapper{
    margin-right: 200px;
}
.content{
    width: 100%;
    float: left;
}
.sidebar{
    float: right;
    width: 200px;
    margin-right: -200px;
}

【讨论】:

    【解决方案4】:

    你可以用css做到这一点,只需从#content中删除宽度和浮动。

    #content{
        background:blue;
    }
    

    查看jsFiddle File

    【讨论】:

    • 是的,我可以做到,问题是当我调整窗口大小时,两列会自动分离。我的意思是红色在顶部,蓝色在底部。
    • 它在我调整窗口大小时工作正常..因为“#content”中没有任何宽度
    猜你喜欢
    • 2013-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多