💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
[TOC] #### 简介: • Flex是Flexible Box的缩写,意为"弹性布局"用来为盒状模型提供最大的灵活性。 • 任何一个容器都可以指定为Flex布局。 • 采用Flex布局的元素,称为Flex容器(flex container),简称"容器"。 • 它的所有子元素自动成为容器成员,称为Flex项目(flex item),简称"项目"。 eg: <style type="text/css"> *{ padding: 0; margin: 0; } ul{ overflow: hidden; border: 2px solid purple; /*将外层容器转换成弹性盒模型模式*/ display: flex; } ul li{ list-style: none; width: 130px; width: 300px; height: 200px; border: 2px solid dodgerblue; background: yellow; line-height: 200px; text-align: center; font-size: 30px; } </style> <body> <!--弹性盒模型容器中的项目默认在主轴上排列--> <!--子元素默认都排列在主轴上,不换行--> <!--如果项目总宽度小于容器宽度,就正常排列,按照设置的宽度--> <!--如果项目总宽度大于容器宽度,那么子元素就均分容器宽度,设置宽度无效--> <ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> <li>6</li> <li>7</li> </ul> </body> #### flex-direction 设置主轴的方向 该属性决定主轴的方向(即项目的排列方向) • row(默认值):主轴为水平方向,起点在左端。 • row-reverse:主轴为水平方向,起点在右端。 • column:主轴为垂直方向,起点在上沿。 • column-reverse:主轴为垂直方向,起点在下沿。 eg: <style type="text/css"> *{ padding: 0; margin: 0; } ul{ overflow: hidden; border: 2px solid purple; /*将外层容器转换成弹性盒模型模式*/ width: 1100px; height: 550px; margin: 30px auto; display: flex; /*设置主轴方向*/ /*flex-direction: row-reverse;*/ flex-direction: column-reverse; } ul li{ list-style: none; width: 130px; width: 300px; height: 200px; border: 2px solid dodgerblue; background: yellow; /*line-height: 200px;*/ text-align: center; font-size: 30px; } </style> <body> <!--主轴和交叉轴永远是垂直的--> <ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> <li>6</li> <li>7</li> </ul> </body> #### justify-content • 定义了项目在主轴上的对齐方式 • flex-start(默认值):左对齐 • flex-end:右对齐 • center: 居中 • space-between:两端对齐,项目之间的间隔都相等。 • space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。 ul{ overflow: hidden; border: 2px solid purple; width: 1100px; height: 550px; margin: 30px auto; display: flex; /*主轴上的排列方式*/ justify-content: space-between; } #### align-items • 定义项目在交叉轴上如何对齐。 • flex-start:交叉轴的起点对齐。 • flex-end:交叉轴的终点对齐。 • center:交叉轴的中点对齐。 • baseline: 项目的第一行文字的基线对齐。 • stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。 ul{ overflow: hidden; border: 2px solid purple; width: 1100px; height: 550px; margin: 30px auto; display: flex; /*主轴上的排列方式*/ justify-content: space-between; /*元素在交叉轴上的对齐方式*/ align-items: stretch; } <!--主轴和交叉轴永远是垂直的--> <ul> <li style="height: 200px;">1</li> <li style="height: 300px;">2</li> <li style="height: auto;">3</li> <li style="height: 260px;">4</li> <li style="height: 320px;">5</li> </ul> #### flex-wrap: • 默认情况下,项目都排在一条线(又称"轴线")上。flex- wrap属性定义,如果一条轴线排不下,如何换行。 • nowrap(默认):不换行。 • wrap:换行,第一行在上方。 • wrap-reverse:换行,第一行在下方。 eg: ul{ overflow: hidden; border: 2px solid purple; width: 1100px; height: 550px; margin: 30px auto; display: flex; /*主轴上的排列方式*/ justify-content: space-between; /*换行*/ /*如果子元素总宽度大于父级元素宽度,那么就一行能放多少就放多少,放不下的就被挤到下一行*/ /*flex-wrap: wrap-reverse;*/ flex-wrap: wrap; } <body> <!--主轴和交叉轴永远是垂直的--> <ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> </ul> </body> #### align-content • 定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。 • flex-start:与交叉轴的起点对齐。 • flex-end:与交叉轴的终点对齐。 • center:与交叉轴的中点对齐。 • space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。 • space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。 • stretch(默认值):轴线占满整个交叉轴。 eg: ul{ overflow: hidden; border: 2px solid purple; width: 1100px; height: 550px; margin: 30px auto; display: flex; /*主轴上的排列方式*/ justify-content: space-between; /*换行*/ /*如果子元素总宽度大于父级元素宽度,那么就一行能放多少就放多少,放不下的就被挤到下一行*/ /*flex-wrap: wrap-reverse;*/ flex-wrap: wrap; /*指定多行在交叉轴上的对齐方式*/ align-content: space-around; } <body> <!--主轴和交叉轴永远是垂直的--> <ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> </ul> </body> #### order • 定义项目的排列顺序。数值越小,排列越靠前,默认为0 eg: <ul> <li>1</li> <li style="order: 5;">2</li> <li>3</li> <li>4</li> <li>5</li> <li style="order: -5;">6</li> <li>7</li> </ul> #### flex 设置比例: <ul> <li>1</li> <li style="flex: 3;">2</li> <li>3</li> <li>4</li> <li style="flex: 2;">5</li> <li>6</li> <li>7</li> </ul>