如何并排放置div

mar*_*rkt 222 html css

我有一个主要的包装div设置为100%宽度.在里面,我想有两个div,一个是固定宽度,另一个填充剩余的空间.如何浮动第二个div以填充剩余的空间.谢谢你的帮助.

Cro*_*zin 335

有很多方法可以满足您的需求:

  1. 使用CSS float属性:

    <div style="width: 100%; overflow: hidden;">
        <div style="width: 600px; float: left;"> Left </div>
        <div style="margin-left: 620px;"> Right </div>
    </div>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用CSS display属性 - 可以用来使divs表现得像table:

    <div style="width: 100%; display: table;">
        <div style="display: table-row">
            <div style="width: 600px; display: table-cell;"> Left </div>
            <div style="display: table-cell;"> Right </div>
        </div>
    </div>
    
    Run Code Online (Sandbox Code Playgroud)

有更多的方法,但这两个是最受欢迎的.

  • 来自@filoxo的HTML 5解决方案,改为使用它 (13认同)
  • @TheMcMurder:对于需要支持旧版浏览器的人(例如IE <11),这不是一个选择. (2认同)

fil*_*oxo 160

CSS3引入了灵活的盒子(又名flex盒子),它也可以实现这种行为.

只需定义第一个div的宽度,然后给第二个div设置一个flex-grow值,1使其能够填充父级的剩余宽度.

.container{
    display: flex;
}
.fixed{
    width: 200px;
}
.flex-item{
    flex-grow: 1;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">
  <div class="fixed"></div>
  <div class="flex-item"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

jsFiddle演示

请注意,弹性框不能与旧浏览器向后兼容,但对于定位现代浏览器来说是一个很好的选择(另请参见CaniuseMDN).CSS Tricks提供了有关如何使用弹性框的完整指南.

  • 花了一整天才找到解决方案,这个答案解决了!我有4个面板并排,第3和第4面板有时没有任何东西.他们都生活在一个包含div的区域中.整个浮动:在第一个div的情况下留下了一个div通过底部的边界,因为生成的标签是动态的.标签是跨度,因为ASP是如何呈现它们的.没有浮动:左边只有3个div在同一行.使用表格是不可能的.谢谢! (5认同)
  • 是否有向后兼容的方法来使用这样的东西,即对于我们仍然必须支持 IE 8-10 的可怜的 sap (2认同)

Gui*_*ino 15

我对HTML和CSS设计策略知之甚少,但是如果你正在寻找一些简单且适合屏幕的东西(就像我一样),我相信最直接的解决方案就是让div表现为单词一个段落.尝试指定display: inline-block

<div style="display: inline-block">
   Content in column A
</div>
<div style="display: inline-block">
   Content in column B
</div>
Run Code Online (Sandbox Code Playgroud)

您可能需要也可能不需要指定DIV的宽度

  • 可能`display:flex`是最好的解决方案,但我认为`inline-block`也很出色,因为它适用于更多的浏览器.顺便说一下,你可能需要用`<div style ="white-space:nowrap">`包装两个div,以防止在调整大小时分手. (5认同)
  • nvm,只需要搜索一下,解决方法是:vertical-align:top; (2认同)

Fen*_*ton 11

您可以使用CSS网格来实现此目的,这是用于说明目的的长版本:

div.container {
    display: grid;
    grid-template-columns: 220px 20px auto;
    grid-template-rows: auto;
}

div.left {
    grid-column-start: 1;
    grid-column-end: 2;
    grid-row-start: row1-start
    grid-row-end: 3;
    background-color: Aqua;
}

div.right {
    grid-column-start: 3;
    grid-column-end: 4;
    grid-row-start: 1;
    grid-row-end; 1;
    background-color: Silver;
}

div.below {
    grid-column-start: 1;
    grid-column-end: 4;
    grid-row-start: 2;
    grid-row-end; 2;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">
    <div class="left">Left</div>
    <div class="right">Right</div>
    <div class="below">Below</div>
</div>
Run Code Online (Sandbox Code Playgroud)

或者使用float和margin的更传统的方法.

我在此示例中包含了一个背景颜色,以帮助显示事物的位置 - 以及如何处理浮动区域下方的内容.

不要将你的风格内嵌在现实生活中,将它们提取到样式表中.

div.left {
    width: 200px;
    float: left;
    background-color: Aqua;
}

div.right {
    margin-left: 220px;
    background-color: Silver;
}

div.clear {
    clear: both;
}
Run Code Online (Sandbox Code Playgroud)
    <div class="left"> Left </div>
    <div class="right"> Right </div>
    <div class="clear">Below</div>
Run Code Online (Sandbox Code Playgroud)

<div style="width: 200px; float: left; background-color: Aqua;"> Left </div>
<div style="margin-left: 220px; background-color: Silver;"> Right </div>
<div style="clear: both;">Below</div>
Run Code Online (Sandbox Code Playgroud)