举例:
.box{ display: flex; }注意,设为Flex布局以后,子元素的float、clear和vertical-align属性将失效。
排列方向:
flex-direction:属性决定主轴的方向(即项目的排列方向) ——row(默认值):主轴为水平方向,起点在左端。 ——row-reverse:主轴为水平方向,起点在右端。 ——column:主轴为垂直方向,起点在上沿。 ——column-reverse:主轴为垂直方向,起点在下沿实例:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> div{ /*把div变成弹性盒子 加一句咒语 display:flex*/ display:flex; /*排列属性*/ /*flex-direction: row;*/ /*flex-direction: row-reverse;*/ /*flex-direction: column;*/ /*flex-direction: column-reverse;*/ width: 600px; height: 300px; background: red; margin: 0 auto; } span{ width: 100px; height: 100px; background: blue; border: 1px solid yellow; } </style> </head> <body> <div> <span>1</span> <span>2</span> <span>3</span> <span>4</span> </div> </body> </html>折行:
flex-wrap:默认情况下,项目都排在一条线上。flex-wrap属性定义,如果一条轴线排不下,如何换行。 ——nowrap(默认):不换行 ——wrap:换行,第一行在上方。 ——wrap-reverse:换行,第一行在下方。
实例:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> div{ /*把div变成弹性盒子 加一句咒语 display:flex*/ display:flex; /*折行*/ /*flex-wrap: nowrap;*/ /*flex-wrap: wrap;*/ flex-wrap: wrap-reverse; width: 600px; height: 300px; background: red; margin: 0 auto; } span{ width: 200px; height: 100px; background: blue; border: 1px solid yellow; } </style> </head> <body> <div> <span>1</span> <span>2</span> <span>3</span> <span>4</span> </div> </body> </html>排列折行复合写法 flex-flow:属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap。
实例:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> div{ /*把div变成弹性盒子 加一句咒语 display:flex*/ display:flex; /*排列折行复合写法*/ /*flex-flow: row nowrap;*/ /*flex-flow: row wrap;*/ /*flex-flow: column wrap;*/ flex-flow: column wrap-reverse; width: 600px; height: 300px; background: red; margin: 0 auto; } span{ width: 200px; height: 100px; background: blue; border: 1px solid yellow; } </style> </head> <body> <div> <span>1</span> <span>2</span> <span>3</span> <span>4</span> </div> </body> </html>x对起方式 justify-content:属性定义了项目在主轴上的对齐方式。 ——flex-start(默认值):左对齐 ——flex-end:右对齐 ——center: 居中 ——space-between:两端对齐,项目之间的间隔都相等。 ——space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。
实例:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> div{ /*把父元素 变成弹性盒子*/ display: flex; /*x对起方式*/ /*justify-content:space-around ;*/ /*justify-content: space-between;*/ /*justify-content: flex-start;*/ /*justify-content:center;*/ justify-content:flex-end; width:600px; height: 400px; background: red; margin: 0 auto; } span{ width: 100px; height: 100px; background: pink; border: 1px solid yellow; } </style> </head> <body> <div> <span>1</span> <span>2</span> <span>3</span> <span>4</span> </div> </body> </html>y单行对起方式
align-items:属性定义项目在交叉轴上如何对齐(设置单行元素,多行元素没有作用)。。 ——flex-start:交叉轴的起点对齐。 ——flex-end:交叉轴的终点对齐。 ——center:交叉轴的中点对齐。 ——baseline: 项目的第一行文字的基线对齐。 ——stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。
实例:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> div{ /*把父元素 变成弹性盒子*/ display: flex; /*y单行对起方式*/ /*align-items: flex-start;*/ /*align-items: baseline;*/ /*align-items: flex-end;*/ /*align-items: center;*/ /*align-items:stretch;*/ /*混合写法*/ /*justify-content: center; align-items: center; flex-direction: row-reverse;*/ flex-direction: column; /*align-items: flex-start;*/ /*align-items: flex-end;*/ /*align-items: center;*/ width:600px; height: 500px; background: red; margin: 0 auto; } span{ width: 100px; height: 100px; background: pink; border: 1px solid yellow; } </style> </head> <body> <div> <span>1</span> <span>2</span> <span>3</span> <span>4</span> </div> </body> </html>y多行对起方式
align-content:属性定义了多根轴线的对齐方式(设置多行元素,单行元素没有作用)。 ——flex-start:与交叉轴的起点对齐。 ——flex-end:与交叉轴的终点对齐。 ——center:与交叉轴的中点对齐。 ——space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。 ——space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。 ——stretch(默认值):轴线占满整个交叉轴。
实例:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> div{ /*把父元素 变成弹性盒子*/ display: flex; /*折行*/ flex-wrap:wrap ; /*多行对起方式*/ /*align-content: flex-start;*/ /*align-content: flex-end;*/ /*align-content: center;*/ /*align-content: space-around;*/ /*align-content: space-between;*/ /*align-content:stretch;*/ /*排列方式*/ /*flex-direction:column ;*/ /*align-content: center;*/ /*align-content: space-between;*/ /*align-content: space-around;*/ /*单行*/ /*align-items: flex-end;*/ /*align-items: center;*/ width:600px; height: 500px; background: red; margin: 0 auto; } span{ width: 200px; height: 100px; background: pink; border: 1px solid yellow; } </style> </head> <body> <div> <span>1</span> <span>2</span> <span>3</span> <span>4</span> <span>5</span> <span>6</span> </div> </body> </html>order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0。
实例:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> div{ /*把父元素 变成弹性盒子*/ display: flex; width:600px; height: 500px; background: red; margin: 0 auto; } span{ /*width: 100px;*/ /*flex: 1;*/ height: 100px; background: pink; border: 1px solid yellow; } span:nth-child(1){ flex: 1; /*order: 1;*/ } span:nth-child(2){ flex: 2; /*order:3;*/ order:-10; } span:nth-child(3){ flex: 3; /*order:2;*/ order:-99; } span:nth-child(4){ flex: 4; /*order:40;*/ order:-1; } </style> </head> <body> <div> <span>1</span> <span>2</span> <span>3</span> <span>4</span> </div> </body> </html>flex属性是flex-grow, flex-shrink 和 flex-basis的简写,控制子元素的大小。
实例:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> *{ margin: 0; padding: 0; } div{ /*把div盒子变成 弹性盒子*/ display: flex; /*justify-content: space-between;*/ width: 900px; height: 400px; background: red; margin: 0 auto; } span{ /*display:block;*/ width:100px; height: 100px; background: blue; /*margin: 0 50px;*/ } </style> </head> <body> <div> <span>1</span> <span>2</span> <span>3</span> <span>4</span> </div> </body> </html> align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。 flex-end baseline center stretch flex-start实例:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> div{ /*把div变成弹性盒子 加一句咒语 display:flex*/ display: flex; justify-content: space-around; align-items: center; width: 600px; height: 300px; background: red; margin: 0 auto; } span{ /*float: left;*/ /*display: block;*/ width: 100px; height: 100px; background: blue; border: 1px solid yellow; } </style> </head> <body> <div> <span>1</span> <span>2</span> <span>3</span> </div> </body> </html>