Bootstrap4.x学习笔记【八】
Flex弹性布局
Flex弹性布局属性详解:。
一、Flex样式
1. 使用.d-flex 和.d-inline-flex 实现开启 flex 布局样式,同时也支持响应式的媒体查询:.d-*-flex
<div class="d-flex">Flex 弹性布局div>
2. .flex-row 可以呈现子元素水平方向的位置,默认居左并从左到右显示(1,2,3)
<div class="d-flex m-2 p-2 bg-secondary text-light flex-row "> <div class="p-2 border border-light">项目1div> <div class="p-2 border border-light">项目2div> <div class="p-2 border border-light">项目3div> div>
3. .flex-row-reverse 让子元素水平方向的位置居右并从左到右显示(3,2,1)
<div class="d-flex m-2 p-2 bg-secondary text-light flex-row-reverse "> <div class="p-2 border border-light">项目1div> <div class="p-2 border border-light">项目2div> <div class="p-2 border border-light">项目3div> div>
4. .flex-column 实现子元素垂直效果,并从上往下显示(1,2,3)
<div class="d-flex m-2 p-2 bg-secondary text-light flex-column"> <div class="p-2 border border-light">项目1div> <div class="p-2 border border-light">项目2div> <div class="p-2 border border-light">项目3div> div>
5. .flex-column-reverse 实现子元素垂直效果,并从上往下显示(3,2,1)
<div class="d-flex m-2 p-2 bg-secondary text-light flex-column-reverse"> <div class="p-2 border border-light">项目1div> <div class="p-2 border border-light">项目2div> <div class="p-2 border border-light">项目3div> div>
6. .justify-content-start(end、center、between、around)实现内容对齐
<div class="d-flex m-2 p-2 bg-secondary text-light justify-content-start"> <div class="p-2 border border-light">项目1div> <div class="p-2 border border-light">项目2div> <div class="p-2 border border-light">项目3div> div> <div class="d-flex m-2 p-2 bg-secondary text-light justify-content-center"> <div class="p-2 border border-light">项目1div> <div class="p-2 border border-light">项目2div> <div class="p-2 border border-light">项目3div> div> <div class="d-flex m-2 p-2 bg-secondary text-light justify-content-end"> <div class="p-2 border border-light">项目1div> <div class="p-2 border border-light">项目2div> <div class="p-2 border border-light">项目3div> div> <div class="d-flex m-2 p-2 bg-secondary text-light justify-content-between"> <div class="p-2 border border-light">项目1div> <div class="p-2 border border-light">项目2div> <div class="p-2 border border-light">项目3div> div> <div class="d-flex m-2 p-2 bg-secondary text-light justify-content-around"> <div class="p-2 border border-light">项目1div> <div class="p-2 border border-light">项目2div> <div class="p-2 border border-light">项目3div> div>
7. .align-self-start(end、center、baseline、stretch)实现单项目对齐
<div class="d-flex m-2 p-2 bg-secondary text-light align-items-start" style="height: 100px;"> <div class="p-2 border border-light">项目1div> <div class="p-2 border border-light">项目2div> <div class="p-2 border border-light">项目3div> div> <div class="d-flex m-2 p-2 bg-secondary text-light align-items-center" style="height: 100px;"> <div class="p-2 border border-light">项目1div> <div class="p-2 border border-light">项目2div> <div class="p-2 border border-light">项目3div> div> <div class="d-flex m-2 p-2 bg-secondary text-light align-items-end" style="height: 100px;"> <div class="p-2 border border-light">项目1div> <div class="p-2 border border-light">项目2div> <div class="p-2 border border-light">项目3div> div> <div class="d-flex m-2 p-2 bg-secondary text-light align-items-baseline" style="height: 100px;"> <div class="p-2 border border-light">项目1div> <div class="p-2 border border-light">项目2div> <div class="p-2 border border-light">项目3div> div> <div class="d-flex m-2 p-2 bg-secondary text-light align-items-stretch" style="height: 100px;"> <div class="p-2 border border-light">项目1div> <div class="p-2 border border-light">项目2div> <div class="p-2 border border-light">项目3div> div>
8. .align-self-start(end、center、baseline、stretch)实现单项目对齐
<div class="d-flex m-2 p-2 bg-secondary text-light" style="height: 100px;"> <div class="p-2 border border-light align-self-start">项目1div> <div class="p-2 border border-light align-self-center">项目2div> <div class="p-2 border border-light align-self-end">项目3div> <div class="p-2 border border-light align-self-baseline">项目4div> <div class="p-2 border border-light align-self-stretch">项目5div> div>
9. 使用.flex-fill 强制让每个元素项目占据相等的水平宽度
<div class="d-flex m-2 p-2 bg-secondary text-light flex-row "> <div class="p-2 border border-light flex-fill">项目1div> <div class="p-2 border border-light flex-fill">项目2div> <div class="p-2 border border-light flex-fill">项目3div> div>
三个项目同时设置了.flex-fill,则它们等比例分割宽度,适合导航项目;
如果其中一个或两个没有设置.flex-fill,则没有设置的会被设置的填充宽度
10.使用.flex-grow-*,*表示 0 或 1,设置为1则能实现.flex-fill 的功能
<div class="d-flex m-2 p-2 bg-secondary text-light flex-row "> <div class="p-2 border border-light flex-grow-1">项目1div> <div class="p-2 border border-light flex-grow-1">项目2div> <div class="p-2 border border-light flex-grow-1">项目3div> div>
11.使用.mr-auto 等对齐方式,对 flex 元素进行浮动对齐
<div class="d-flex m-2 p-2 bg-secondary text-light flex-row "> <div class="p-2 border border-light mr-auto">项目1div> <div class="p-2 border border-light ">项目2div> <div class="p-2 border border-light ">项目3div> div> <div class="d-flex m-2 p-2 bg-secondary text-light flex-row "> <div class="p-2 border border-light ">项目1div> <div class="p-2 border border-light ">项目2div> <div class="p-2 border border-light ml-auto">项目3div> div>
12. 对于垂直方向,也可以使用.mb-auto 和.mt-auto 来设置对象方向
<div class="d-flex m-2 p-2 bg-secondary text-light flex-column align-items-start" style="height:200px;"> <div class="p-2 border border-light mb-auto">项目1div> <div class="p-2 border border-light ">项目2div> <div class="p-2 border border-light ">项目3div> div> <div class="d-flex m-2 p-2 bg-secondary text-light flex-column align-items-start" style="height:200px;"> <div class="p-2 border border-light">项目1div> <div class="p-2 border border-light ">项目2div> <div class="p-2 border border-light mt-auto">项目3div> div>
13. 使用.flex-wrap(包裹)和.flex-nowrap(不包裹,默认)来设置子元素项目
<div class="d-flex m-2 p-2 bg-secondary text-light flex-wrap" style="width:200px;"> <div class="p-2 border border-light">项目1div> <div class="p-2 border border-light ">项目2div> <div class="p-2 border border-light ">项目3div> <div class="p-2 border border-light">项目4div> <div class="p-2 border border-light ">项目5div> <div class="p-2 border border-light ">项目6div> <div class="p-2 border border-light">项目7div> <div class="p-2 border border-light ">项目8div> <div class="p-2 border border-light ">项目9div> <div class="p-2 border border-light ">项目10div> div>
14.使用.order-*,来设置子元素项目的排序顺序,支持.order-*-*
<div class="d-flex m-2 p-2 bg-secondary text-light "> <div class="p-2 border border-light order-3">项目1div> <div class="p-2 border border-light order-1">项目2div> <div class="p-2 border border-light order-2">项目3div> div>
15. .align-content-start(end、center、between、around、stretch)垂直对齐
<div class="d-flex m-2 p-2 bg-secondary text-light flex-wrap align-content-start" style="height:200px;"> <div class="p-2 border border-light">项目1div> <div class="p-2 border border-light ">项目2div> <div class="p-2 border border-light ">项目3div> <div class="p-2 border border-light">项目4div> <div class="p-2 border border-light ">项目5div> <div class="p-2 border border-light ">项目6div> <div class="p-2 border border-light">项目7div> <div class="p-2 border border-light ">项目8div> <div class="p-2 border border-light ">项目9div> <div class="p-2 border border-light ">项目10div> <div class="p-2 border border-light">项目11div> <div class="p-2 border border-light ">项目12div> <div class="p-2 border border-light ">项目13div> <div class="p-2 border border-light">项目14div> <div class="p-2 border border-light ">项目15div> <div class="p-2 border border-light ">项目16div> <div class="p-2 border border-light ">项目17div> div>