ser*_*erg 375 html css alignment css-float flexbox
我希望在容器div中对齐3个div,如下所示:
[[LEFT] [CENTER] [RIGHT]]
Run Code Online (Sandbox Code Playgroud)
容器div是100%宽(没有设置宽度),并且在调整容器大小后中心div应保持在中心.
所以我设置:
#container{width:100%;}
#left{float:left;width:100px;}
#right{float:right;width:100px;}
#center{margin:0 auto;width:100px;}
Run Code Online (Sandbox Code Playgroud)
但它变成了:
[[LEFT] [CENTER] ]
[RIGHT]
Run Code Online (Sandbox Code Playgroud)
有小费吗?
dka*_*ins 349
有了这个CSS,就把你的div这样(先浮动):
<div id="container">
<div id="left"></div>
<div id="right"></div>
<div id="center"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
PS你也可以漂浮,然后向左,然后向中心.重要的是浮子位于"主"中心区域之前.
PPS你经常想要最后一个内部#container片段:<div style="clear:both;"></div>它将#container垂直延伸以包含两个侧面浮动,而不是仅从中获取高度,#center并且可能允许侧面从底部突出.
fru*_*sli 119
如果您不想更改HTML结构,也可以通过添加text-align: center;到包装元素和display: inline-block;中心元素来实现.
#container {
width:100%;
text-align:center;
}
#left {
float:left;
width:100px;
}
#center {
display: inline-block;
margin:0 auto;
width:100px;
}
#right {
float:right;
width:100px;
}
Run Code Online (Sandbox Code Playgroud)
现场演示:http://jsfiddle.net/CH9K8/
Mic*_*l_B 110
这是一个CSS3方法,用于在另一个div内水平对齐div.
#container {
display: flex; /* establish flex container */
flex-direction: row; /* default value; can be omitted */
flex-wrap: nowrap; /* default value; can be omitted */
justify-content: space-between; /* switched from default (flex-start, see below) */
background-color: lightyellow;
}
#container > div {
width: 100px;
height: 100px;
border: 2px dashed red;
}Run Code Online (Sandbox Code Playgroud)
<div id="container">
<div></div>
<div></div>
<div></div>
</div>Run Code Online (Sandbox Code Playgroud)
该justify-content属性有五个值:
flex-start (默认)flex-endcenterspace-betweenspace-around在所有情况下,三个div都在同一行.有关每个值的说明,请参阅:https://stackoverflow.com/a/33856609/3597276
flexbox的好处:
要了解有关flexbox的更多信息,请访
浏览器支持: 所有主流浏览器都支持 Flexbox,IE <10除外.最近的一些浏览器版本,例如Safari 8和IE10,需要供应商前缀.要快速添加前缀,请使用Autoprefixer.这个答案的更多细节.
Raj*_*ale 20
Float属性实际上不用于对齐文本.
此属性用于向右或左或中心添加元素.
div > div { border: 1px solid black;}Run Code Online (Sandbox Code Playgroud)
<html>
<div>
<div style="float:left">First</div>
<div style="float:left">Second</div>
<div style="float:left">Third</div>
<div style="float:right">First</div>
<div style="float:right">Second</div>
<div style="float:right">Third</div>
</div>
</html>Run Code Online (Sandbox Code Playgroud)
对于float:left输出将是[First][second][Third]
对于float:right输出将是[Third][Second][First]
这意味着float => left属性会将你的下一个元素添加到前一个元素的左边,相同的情况是右边的
您还必须考虑父元素的宽度,如果子元素的宽度总和超过父元素的宽度,则下一个元素将添加到下一行
<html>
<div style="width:100%">
<div style="float:left;width:50%">First</div>
<div style="float:left;width:50%">Second</div>
<div style="float:left;width:50%">Third</div>
</div>
</html>Run Code Online (Sandbox Code Playgroud)
[第一秒]
[第三]
因此,您需要考虑所有这些方面才能获得完美的结果
Eri*_*hic 13
我喜欢我的酒吧紧凑而充满活力.这适用于CSS 3和HTML 5
首先,将宽度设置为100px是有限的.不要这样做.
其次,将容器的宽度设置为100%可以正常工作,直到它被称为整个应用程序的页眉/页脚栏,如导航或信用/版权栏.使用right: 0;,而不是针对该方案.
您正在使用id(hash #container,#left等)而不是类(.container,.left等),这很好,除非您想在代码中的其他地方重复样式模式.我考虑使用类来代替.
对于HTML,无需交换订单:left,center和right.display: inline-block;解决了这个问题,将代码恢复到更清洁,逻辑更好的状态.
最后,你需要清除所有浮动,以便它不会混乱未来<div>.你这样做clear: both;
总结一下:
HTML:
<div class="container">
<div class="left"></div>
<div class="center"></div>
<div class="right"></div>
<div class="clear"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
.container {right: 0; text-align: center;}
.container .left, .container .center, .container .right { display: inline-block; }
.container .left { float: left; }
.container .center { margin: 0 auto; }
.container .right { float: right; }
.clear { clear: both; }
Run Code Online (Sandbox Code Playgroud)
使用HAML和SASS的加分点;)
HAML:
.container
.left
.center
.right
.clear
Run Code Online (Sandbox Code Playgroud)
上海社会科学院:
.container {
right: 0;
text-align: center;
.left, .center, .right { display: inline-block; }
.left { float: left; }
.center { margin: 0 auto; }
.right { float: right; }
.clear { clear: both; }
}
Run Code Online (Sandbox Code Playgroud)
San*_*lse 13
有几种技巧可用于对齐元素.
01.使用Table Trick
.container{
display:table;
}
.left{
background:green;
display:table-cell;
width:33.33vw;
}
.center{
background:gold;
display:table-cell;
width:33.33vw;
}
.right{
background:gray;
display:table-cell;
width:33.33vw;
}Run Code Online (Sandbox Code Playgroud)
<div class="container">
<div class="left">
Left
</div>
<div class="center">
Center
</div>
<div class="right">
Right
</div>
</div>Run Code Online (Sandbox Code Playgroud)
02.使用Flex Trick
.container{
display:flex;
justify-content: center;
align-items: center;
}
.left{
background:green;
width:33.33vw;
}
.center{
background:gold;
width:33.33vw;
}
.right{
background:gray;
width:33.33vw;
}Run Code Online (Sandbox Code Playgroud)
<div class="container">
<div class="left">
Left
</div>
<div class="center">
Center
</div>
<div class="right">
Right
</div>
</div>Run Code Online (Sandbox Code Playgroud)
03.使用Float Trick
.left{
background:green;
width:100px;
float:left;
}
.center{
background:gold;
width:100px;
float:left;
}
.right{
background:gray;
width:100px;
float:left;
}Run Code Online (Sandbox Code Playgroud)
<div class="container">
<div class="left">
Left
</div>
<div class="center">
Center
</div>
<div class="right">
Right
</div>
</div>Run Code Online (Sandbox Code Playgroud)
这可以通过CSS3 Flexbox轻松完成,这个功能将在<IE9几乎所有浏览器中将来使用(什么时候完全死机).
检查浏览器兼容性表
HTML
<div class="container">
<div class="left">
Left
</div>
<div class="center">
Center
</div>
<div class="right">
Right
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS
.container {
display: flex;
flex-flow: row nowrap; /* Align on the same line */
justify-content: space-between; /* Equal margin between the child elements */
}
Run Code Online (Sandbox Code Playgroud)
输出:
.container {
display: flex;
flex-flow: row nowrap; /* Align on the same line */
justify-content: space-between; /* Equal margin between the child elements */
}
/* For Presentation, not needed */
.container > div {
background: #5F85DB;
padding: 5px;
color: #fff;
font-weight: bold;
font-family: Tahoma;
}Run Code Online (Sandbox Code Playgroud)
<div class="container">
<div class="left">
Left
</div>
<div class="center">
Center
</div>
<div class="right">
Right
</div>
</div>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
761288 次 |
| 最近记录: |