我想有3个div对齐在一个容器div,就像这样:
[[LEFT] [CENTER] [RIGHT]]
容器div是100%宽(没有设定宽度),中心div在调整容器大小后应该保持在中心。
所以我设置:
#container{width:100%;}
#left{float:left;width:100px;}
#right{float:right;width:100px;}
#center{margin:0 auto;width:100px;}
但它变成了:
[[LEFT] [CENTER] ]
[RIGHT]
任何建议吗?
Float属性实际上并不用于对齐文本。
此属性用于将元素添加到右侧、左侧或中心。
Div > Div{边框:1px纯黑色;}
< html >
< div >
< div风格= "浮动:左”>第一个< / div >
< div风格= "浮动:左”>第二< / div >
< div风格= "浮动:左”>第三< / div >
< div风格= "浮动:对" >第一个< / div >
< div风格= "浮动:对" >第二< / div >
< div风格= "浮动:对" > 3 < / div >
< / div >
< / html >
左输出为[First][second][Third]
右输出为[Third][Second][First]
这意味着float => left属性将把你的下一个元素添加到上一个元素的左边,right也是如此
此外,你还必须考虑父元素的宽度,如果子元素的宽度之和超过了父元素的宽度,那么下一个元素将在下一行添加
< > html
< div style =教室:100% >
< div style =花车:左派;教室:50%第一> < / div >
< div style =花车:左派;教室:50% >第二个< / div >
< div style = "漂浮:左派;第三教室:50% > < / div >
< / div >
< / html >
(第一次)(第二次)
(三)
所以你需要考虑所有这些方面来得到完美的结果
使用Flexbox水平对齐三个div
下面是一个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;
}
<div id="container">
<div></div>
<div></div>
<div></div>
</div>
js小提琴
justify-content属性有五个值:
flex-start(默认)
flex-end
中心
之间的空间
空间
在所有情况下,三个div都在同一行上。有关每个值的描述,请参见:https://stackoverflow.com/a/33856609/3597276
flexbox的好处:
最少的代码;非常有效的
对中,无论是垂直还是水平,都是简单易行的
等高列简单易行
调整伸缩元素的多个选项
这是响应
与浮动和桌子不同,它们提供的布局容量有限,因为它们从未用于建筑布局,
flexbox是一种现代(CSS3)技术,具有广泛的选项。
欲了解更多关于flexbox的信息,请访问:
调整伸缩项目的方法
使用CSS灵活的盒子~ MDN
Flexbox ~ CSS-Tricks的完整指南
什么Flexbox?!~ YouTube视频教程
浏览器支持:除IE < 10外,所有主流浏览器都支持Flexbox。一些最新版本的浏览器,如Safari 8和IE10,需要使用厂商前缀。要快速添加前缀,请使用Autoprefixer。更多细节在这个答案中。