容器居中布局下使用float:left/right,Div无法靠边求助
问题根源
flex布局里,float属性对flex子元素完全无效——这是CSS规范明确规定的。再加上你的容器设置了flex-direction: column(子元素垂直排列)和align-items: center(所有子元素水平居中),所以div1和div2自然没法靠向两侧。
两种可行解决方案
方案1:保留垂直布局,给两个div加包裹容器
给div1和div2套一个父容器,让这个容器用flex布局实现左右分布:
修改后的CSS
.container { width: 65%; border: 1px solid black; display: flex; flex-direction: column; align-items: center; } /* 新增包裹容器,占满父容器宽度并分布子元素 */ .div-container { width: 100%; display: flex; justify-content: space-between; } .div1 { width: 100px; height: 100px; background-color: aqua; } .div2 { width: 100px; height: 100px; background-color: red; }
修改后的HTML
<!DOCTYPE html> <html lang="en"> <body> <div class="container"> <h1>content of h1</h1> <div class="div-container"> <div class="div1"></div> <div class="div2"></div> </div> </div> </body> </html>
方案2:调整布局结构,单独控制元素对齐
如果不需要所有子元素都垂直居中,可以让h1单独居中,两个div在水平方向分布:
修改后的CSS
.container { width: 65%; border: 1px solid black; display: flex; flex-direction: column; } /* 让h1单独水平居中 */ h1 { align-self: center; } .div1 { width: 100px; height: 100px; background-color: aqua; margin-right: auto; /* 靠左 */ } .div2 { width: 100px; height: 100px; background-color: red; margin-left: auto; /* 靠右 */ }
修改后的HTML
<!DOCTYPE html> <html lang="en"> <body> <div class="container"> <h1>content of h1</h1> <div class="div1"></div> <div class="div2"></div> </div> </body> </html>
内容的提问来源于stack exchange,提问作者Rodrigo Racr
相关产品推荐
相关产品推荐

