html - 两列布局,其中主要内容 DIV 的宽度是可变的(使用所有可用空间 100%)

标签 html css layout css-float margin

我觉得这个问题已经得到解答,但我搜索了又搜索,似乎没有答案涉及动态主要内容宽度。

我只是想要这个场景:

|-|导航|-|主要内容|-|

其中 nav 是一个 DIV,main content 是一个 DIV,两者都放在另一个宽度为 100% 的 DIV 容器中。 - 只是 DIV 之间的一个间距,一个边距。

nav 的固定宽度为 300px,“主要内容”div 应始终占用剩余的可用空间(以填充父 div 的 100%)——无需使用 JavaScript。

我还想在每个 DIV(导航、主要内容)的左侧和右侧留出一些边距,以便它们与“浏览器边框”/正文之间有一些空间。

我试验过表格、表格单元格,但边框折叠让我抓狂,所以我要回到老天爷“float:left”和 clearfix。这是我目前所拥有的:

<div id="container" class="cf">
    <div id="nav">
        Nav stuff
    </div>    
    <div id="main">
        Main stuff
    </div>   
</div>

#container {
    padding: 0;
    width: 100%;
    background-color: orange;
    min-height: 50px;
}

#nav {
    display: inline;
    float: left;
    min-width: 300px;
    width: 300px;
    margin-left: 10px;
    margin-right: 10px;
}

#main {
    display: inline;
    float: left;
    background-color: green;
    margin-right: 10px;
}

.. /* clearfix stuff omitted (class 'cf') */

那么现在的问题是,如何让“主要内容”(#main)填充其余的父级(#container)。如果我使用 100% 的宽度,那么 100% 当然是父级的全宽,div 将位于“nav”div 下方。如果我使用“自动”,同样的事情也会发生。如果我传入固定宽度,它当然可以工作,例如以像素为单位,但我事先不知道正确的像素并使用 JS 来计算这对我来说似乎有点奇怪。

我见过一个解决方案,其中“nav”放在“main”内,但这会导致边距出现问题。尝试插入边距以在位于另一个 div 内的 div 旁边创建一些空间...我认为这在这个世界中无论如何是不可能的。

感谢您的帮助!

最佳答案

也许你应该创建 BFC 来面对这个问题。

例如:

#container{
    border: 1px solid red;
}
#nav{
    float: left;
    width: 300px;
    border: 1px solid green;
    height: 200px;

    margin-left: 20px;
    margin-right: 20px;
}
#main{

    overflow: hidden;



    height: 400px;
    border: 1px solid blue;
    margin-right: 20px;
}

overflow: hidden; 是为#main 创建 BFC 的关键。

JSFiddle:http://jsfiddle.net/yujiangshui/yMFB6/

关于 BFC 的更多信息:https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context

关于html - 两列布局,其中主要内容 DIV 的宽度是可变的(使用所有可用空间 100%),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24433454/

相关文章:

android - 在 Android Studio 中,布局 xml 文件可以分组到文件夹中吗?

javascript - 如何使用 JavaScript 选择用户可以切换到的所有 html 元素?

css - 输入字段为空时是否有效?

javascript - 与div相同宽度和高度的iframe

html - 如何修复高度 :auto css

html - 网站边缘和页脚之间的空间

javascript - HTML jquery 测验

javascript - 只计算给定类(class)的 child

html - 为什么浏览器为重音字符保留空间,即使没有重音字符?

java - 具有不同布局的多个回收器 View