写在前面
在 CSS 布局时常常遇到的一个样式如下所示:
即三个元素,后两个或多个为一组,分为两派,则这种布局实现方式仅仅使用flex
布局无法实现,故可在flex
布局的基础上使用如下几种方式实现:
<div class="wrapper">
<button>删除</button>
<button>取消</button>
<button>完成</button>
</div>
.wrapper{
display: flex;
justify-content: space-between;
width: 300px;
margin: 50px;
border: 1px solid #666;
}
巧用span
标签
可用span标签将后两个元素包裹起来,即可实现。
但是这种方式仅仅适用于元素为inline
或inline-block
的元素,若元素为block
元素,则此方法行不通,因为在span
标签内的div
不是flex
布局,会自动占用一行,成两行。
button
默认为inline
内联元素
<div class="wrapper">
<button>删除</button>
<span>
<button>取消</button>
<button>完成</button>
</span>
</div>
巧用div
+flex
若元素为block
元素,基于上述方式的改进,可以将span
标签里设置为flex
布局,但尽量不要在内联元素(或内联块级元素)里包含块级元素,因此可改用div
包裹后两个元素,并结合flex
布局
<div class="wrapper">
<div>删除</div>
<div class="wrapper1">
<div>取消</div>
<div>完成</div>
</div>
</div>
.wrapper1{
display: flex;
}
巧用margin
对于block
块级元素,还有另外一种更简单的方法,即使用margin
<div class="wrapper">
<div>删除</div>
<div class="cancel">取消</div>
<div>完成</div>
</div>
.cancel{
margin-left: auto;
}
当然依葫芦画瓢,为第一个元素加上margin-right: auto;
也是一样的效果