目录
一个div宽度/高度固定,另一个div铺满剩余空间 (flex: 1;)
原址:Flexbox 布局的最简单表单 - 阮一峰的网络日志
关于align-item和align-self
上图中,按钮变高了,输入框也自动变得一样高了!
前面说过,弹性布局默认不改变项目的宽度,但是它默认改变项目的高度。如果项目没有显式指定高度,就将占据容器的所有高度。 本例中,按钮变高了,导致表单元素也变高了,使得输入框的高度自动拉伸了。
align-self
属性可以改变这种行为。
input { flex-grow: 1; align-self: center; }
align-self
属性可以取四个值。
flex-start
:顶边对齐,高度不拉伸flex-end
:底边对齐,高度不拉伸center
:居中,高度不拉伸stretch
:默认值,高度自动拉伸
如果项目很多,一个个地设置align-self
属性就很麻烦。这时,可以在容器元素(本例为表单)设置align-items
属性,它的值被所有子项目的align-self
属性继承。
form { display: flex; align-items: center; }
上面代码中,<form>
元素设置了align-items
以后,就不用在控件上设置align-self
,除非希望两者的值不一样。
flex实现平均分布加换行
<style type="text/css">
ul{
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
flex-wrap: wrap;
align-content: flex-start;text-align: center;}
ul li{width: 20%;}
</style>
<ul class="unstyle">
<li>0-3万</li>
<li>3-5万</li>
<li>5-10万</li>
<li>5-10万</li>
<li>5-10万</li>
<li>5-10万</li>
<li>5-10万</li>
<li>5-10万</li>
<li>5-10万</li>
<li>5-10万</li>
<li>5-10万</li>
</ul>
一个div宽度/高度固定,另一个div铺满剩余空间 (flex: 1;)
<style>
.content {
width: 500px;
height: 500px;
background-color: brown;
display: flex;
flex-direction: column;
}
.top {
width: 100px;
height: 200px;
background-color: burlywood;
}
.bottom {
flex: 1;
background-color: cadetblue;
}
</style>
<div class="content">
<div class="top">top</div>
<div class="bottom">bottom</div>
</div>
消除flex-wrap产生的间距
<style>
ul{width: 400px;height: 400px;display: flex;flex-flow: column wrap;align-content: flex-start;list-style: none;}
li{width: 100px;height: 200px;background-color: antiquewhite;}
</style>
</head>
<body>
<ul>
<li>1</li>
<li>1</li>
<li>1</li>
<li>1</li>
</ul>
</body>
flex布局设置单个子元素靠右
子元素设置
flex: 1;
text-align: right;
或
margin-left: auto;
关于flex详细的可以看https://github.com/laizimo/zimo-article/issues/13