我知道如何让2个div并排浮动,只需向左浮动一个,向右浮动另一个。
但如何使用3个div进行此操作,还是应该只为此目的使用表格?
答案 0 :(得分:286)
只需给它们一个宽度float: left;
,这是一个例子:
<div style="width: 500px;">
<div style="float: left; width: 200px;">Left Stuff</div>
<div style="float: left; width: 100px;">Middle Stuff</div>
<div style="float: left; width: 200px;">Right Stuff</div>
<br style="clear: left;" />
</div>
答案 1 :(得分:111)
现代的方法是使用CSS flexbox,请参阅support tables。
.container {
display: flex;
}
.container > div {
flex: 1; /*grow*/
}
<div class="container">
<div>Left div</div>
<div>Middle div</div>
<div>Right div</div>
</div>
您也可以使用CSS grid,请参阅support tables。
.container {
display: grid;
grid-template-columns: 1fr 1fr 1fr; /* fraction*/
}
<div class="container">
<div>Left div</div>
<div>Middle div</div>
<div>Right div</div>
</div>
答案 2 :(得分:51)
这与你对两个div的方式相同,只是向左或向右浮动第三个。
<style>
.left{float:left; width:33%;}
</style>
<div class="left">...</div>
<div class="left">...</div>
<div class="left">...</div>
答案 3 :(得分:24)
将它们全部浮动
确保指定宽度,它们都可以放在容器中(另一个div或窗口),否则它们将换行
答案 4 :(得分:22)
<br style="clear: left;" />
有人在那里发布的代码,它就是诀窍! 当我在关闭Container DIV之前粘贴它时,它有助于清除所有后续DIV与我在顶部并排创建的DIV重叠!
<div>
<div class="left"></div>
<div class="left"></div>
...
...
<div class="left"></div>
<!-- then magic trick comes here -->
<br style="clear: left;" />
</div>
tadaa !! :)
答案 5 :(得分:15)
向左浮动所有三个div。像这里:
.first-div {
width:370px;
height:150px;
float:left;
background-color:pink;
}
.second-div {
width:370px;
height:150px;
float:left;
background-color:blue;
}
.third-div {
width:370px;
height:150px;
float:left;
background-color:purple;
}
答案 6 :(得分:9)
我通常只是将第一个浮动到左侧,第二个浮动到右侧。第三个自动对齐它们。
<div style="float: left;">Column 1</div>
<div style="float: right;">Column 3</div>
<div>Column 2</div>
答案 7 :(得分:8)
<style>
.left-column
{
float:left;
width:30%;
background-color:red;
}
.right-column
{
float:right;
width:30%;
background-color:green;
}
.center-column
{
margin:auto;
width:30%;
background-color:blue;
}
</style>
<div id="container">
<section class="left-column">THIS IS COLUMN 1 LEFT</section>
<section class="right-column">THIS IS COLUMN 3 RIGHT</section>
<section class="center-column">THIS IS COLUMN 2 CENTER</section>
</div>
这种方式的优点是你可以设置每个列宽度独立于另一个,只要你保持在100%以下,如果使用3 x 30%,剩下的10%被分割为5%的分隔符空间collumns
答案 8 :(得分:6)
你可以浮动:左边所有这些并将宽度设置为33.333%
答案 9 :(得分:6)
尝试将“display:block”添加到样式
<style>
.left{
display: block;
float:left;
width:33%;
}
</style>
<div class="left">...</div>
<div class="left">...</div>
<div class="left">...</div>
答案 10 :(得分:4)
我更喜欢这种方法,在早期版本的IE中支持浮点数(真的吗?...)
.column-left{ position:absolute; left: 0px; width: 33.3%; background: red; }
.column-right{position:absolute; left:66.6%; width: 33.3%; background: green; }
.column-center{ position:absolute; left:33.3%; width: 33.3%; background: yellow; }
更新: 当然,要使用这种技术并且由于绝对定位,您需要将div包含在容器上并进行后处理以定义if的高度,如下所示:
jQuery(document).ready(function(){
jQuery('.main').height( Math.max (
jQuery('.column-left').height(),
jQuery('.column-right').height(),
jQuery('.column-center').height())
);
});
这不是世界上最神奇的东西,但至少不会破坏旧的IE。
答案 11 :(得分:4)
我没有看到引导程序的答案,所以它的价值是什么:
<div class="col-xs-4">Left Div</div>
<div class="col-xs-4">Middle Div</div>
<div class="col-xs-4">Right Div</div>
<br style="clear: both;" />
让Bootstrap计算出百分比。 我想清除两者,以防万一。
答案 12 :(得分:3)
浮动每个div并设置清除;两者都为行。如果你不想,不需要设置宽度。适用于Chrome 41,Firefox 37,IE 11
<强> Click for JS Fiddle 强>
<div class="stack">
<div class="row">
<div class="col">
One
</div>
<div class="col">
Two
</div>
</div>
<div class="row">
<div class="col">
One
</div>
<div class="col">
Two
</div>
<div class="col">
Three
</div>
</div>
</div>
.stack .row {
clear:both;
}
.stack .row .col {
float:left;
border:1px solid;
}
答案 13 :(得分:2)
我在<footer>
元素中设法做了类似的事情:
<div class="content-wrapper">
<div style="float:left">
<p>© 2012 - @DateTime.Now.Year @Localization.ClientName</p>
</div>
<div style="float:right">
<p>@Localization.DevelopedBy <a href="http://leniel.net" target="_blank">Leniel Macaferi</a></p>
</div>
<div style="text-align:center;">
<p>☎ (24) 3347-3110 | (24) 8119-1085 ✉ @Html.ActionLink(Localization.Contact, MVC.Home.ActionNames.Contact, MVC.Home.Name)</p>
</div>
</div>
CSS:
.content-wrapper
{
margin: 0 auto;
max-width: 1216px;
}
答案 14 :(得分:1)
@Leniel这个方法很好,但你需要为所有浮动div添加宽度。我会说让它们等宽或指定固定宽度。像
这样的东西.content-wrapper > div { width:33.3%; }
您可以为每个div分配类名而不是添加inline style
,这不是一个好习惯。
请务必使用clearfix div或clear div以避免以下内容保留在这些div之下。
您可以找到有关如何使用clearfix div here
的详细信息答案 15 :(得分:0)
display: table;
换句话说;如果每个 <div>
中文本的垂直对齐方式需要相同,则可以尝试使用颇有争议的 table
样式将现代复古回归到昔日:
.container {display: table;}
div {display: table-cell;}
事实证明,这对于格式化 CSL 样式的 citations in Pandoc 非常有用,如下所示:
div.csl-bib-body {}
div.csl-entry {
margin-top: 1rem;
display: table;
}
div.csl-left-margin {
display: table-cell;
}
div.csl-right-inline {
padding-left: 1ex;
display: table-cell;
}
引文编号 div
和引文数据 div
现在是 shown at the exact same height。