css——flex布局

flex布局

主要运用再移动端

PC端常用传统布局

自适应效果好

flex布局意为:弹性布局,用来为盒模型提供最大的灵活性,任何一个容器都可以指定为flex布局

当我们为父盒子设置flex布局后,子元素的float,clear,vertical-align属性将失效,可以实现元素垂直居中

1、布局原理

2

 2.主轴方向:取决于flex-direction属性的设置

      /* 我们的元素是跟着主轴来排列的 */

/* 默认的主轴是X轴 也就是行 row  这时y轴就是侧轴*/

      /* flex-direction: row; */

      /* 简单了解 翻转 */

      /* flex-direction: row-reverse; */

      /* 也可以把主轴设置为y轴,x轴就成了侧轴 */

flex-direction: column;

3、justify-content属性  justify-content: space-between;

      /* justify-content: 是设置主轴上子元素的排列方式; */

      /* 所以要先确定主轴  这里不设置flex-direction属性 主轴默认是x轴*/

      /* justify-content: flex-start;默认从从左到右 */

      /* 让子元素贴到右边,但是顺序不变 */

      /* justify-content: end; */

      /* 居中显示 */

      /* justify-content: center; */

      /* 平分剩余空间 */

      /* justify-content: space-around; */

      /* 最重要的是:先两边贴边,再分配剩余空间 */

      /* justify-content: space-between; */

4、flex-wrap

/* 默认是不换行的属性 */

      /* flex-wrap: nowrap; */

      /* 换行 */

      flex-wrap: wrap;

5、align-items设置侧轴的属性

/* 设置侧轴居中 */

      align-items: center;

      /*了解 沿着侧轴拉伸 ,但是盒子不要给高度*/

      align-items: stretch;

和  justify-content属性一起可以实现元素水平垂直都居中的效果

/* 默认的主轴是x轴row */

      justify-content: center;

      /* 设置侧轴居中 */

      align-items: center;

6、align-content设置侧轴子元素排列方式(多行)

这个属性只能用于子项出现换行的情况下,也就是必须要多行,单行是没有效果的。

7、 align-content和align-items的区别

8、flex-flow属性是flex-direction和flex-wrap属性的复合属性

        flex-direction: column;

        flex-wrap: wrap;

      /* 简写 */

      flex-flow: column wrap;

二、flex布局子项常见属性

 1、flex属性

定义子项目分配剩余空间,用flex来表示占多少份数。

例如:flex: 1;就是在剩余空间总占一份的意思,如果只有一个子元素加上这个属性就是它会占剩余全部的空间。有多个子元素的话就是平分剩余空间

当然,某个子元素要多占空间就增大数值就行了,flex: 2;就是占两份

2、align-self属性,控制自己在侧轴上的排列方式

3、order属性,控制排列顺序

使用order属性来控制排列的顺序,数值越小越靠前,默认为0

和z-index不同,z-index数值越大越靠近

### CSS Flex 布局使用指南 #### 什么是 Flex 布局Flexbox 是一种用于一维布局的设计模型,旨在提供更高效的方式来分配空间以及调整容器内的子元素位置。这种布局方式非常适合处理动态或者未知大小的内容。 #### 如何定义一个 Flex 容器? 要创建一个 Flex 容器,只需将 `display` 属性设置为 `flex` 或者 `inline-flex` 即可[^4]。一旦设置了这个属性,所有的直接子元素都会成为 Flex 子项(即 flex items)。 ```css .container { display: flex; } ``` #### 主轴与交叉轴的概念 在 Flexbox 中存在两个主要的方向——主轴和交叉轴。默认情况下,主轴是水平方向(从左到右),而交叉轴则是垂直方向(从上到下)。可以通过修改 `flex-direction` 来改变这两个轴的方向[^5]。 - **row**: 默认值,表示主轴沿水平方向排列。 - **column**: 表示主轴改为竖直向下排列。 #### 控制子项目的对齐方式 通过一系列的属性可以精确控制子项目的位置: 1. **justify-content**:决定主轴上的对齐方式。 - `flex-start`: 对齐至起点。 - `center`: 居中显示。 - `space-between`: 平均分布在两端之间留有间距。 2. **align-items**:影响交叉轴上的对齐行为。 - `stretch`: (默认)拉伸填充整个可用高度。 - `center`: 让所有子项相对于父级中心化。 3. **gap**:指定相邻两项之间的空白区域宽度[^5]。 ```css .container { justify-content: space-around; align-items: stretch; gap: 1em; /* 设置间隙 */ } ``` #### 实现简单的三栏布局 下面是一个基本的例子展示如何利用 Flexbox 构建三个等宽列并保持它们间的适当距离[^5]: ```html <div class="container"> <div class="item">Item 1</div> <div class="item">Item 2</div> <div class="item">Item 3</div> </div> <style> .container { display: flex; flex-direction: row; justify-content: space-evenly; align-items: baseline; height: 200px; border: solid black 1px; } .item { background-color: lightblue; padding: 20px; text-align: center; flex: 1; } </style> ``` #### 解决常见问题 当尝试让某个特定区块占据剩余的空间时,可以借助于 `flex-grow` 和其他相关参数来达成目标: ```css .item:last-child { flex: 2; /* 这里意味着最后一个 child 将会占用两倍的基础单位长度 */ } ``` 另外,在某些场景下可能还需要考虑旧版浏览器兼容性问题;不过现代主流浏览器已经广泛支持标准版本的 Flexbox[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值