CSS 弹性布局 flex

目录

常用场景

理论

1. 容器常用属性

2. 项目常用属性

常用属性效果演示

1. 容器属性效果演示

2. 项目属性效果演示


常用场景

当碰见多个盒子之间, 间距比较有规律的布局时, 或者需要垂直居中时, 本人比较喜欢用 flex 布局, 避免了很多浮动。

 

理论

flex 布局概念图:

名词解释:

1. 容器:

flex 布局需要先定义一个外层盒子, 该盒子被称作容器, 既上图中蓝色背景的盒子。

2. 项目:

容器内部的每一个盒子都被称为项目, 既上图中黄色背景的盒子。

3. 主轴:

flex 布局时容器会有 x轴 和 y轴 的概念,  这时需要指明到底哪个是主轴,  然后容器内的项目会按照主轴去排列,

x轴是主轴时, 容器内的项目水平排列(左右、右左)。 y轴是主轴时, 容器内的项目垂直排列(上下、下上)

4. 侧轴:

当主轴确定后, 另外一个就是侧轴。既 x轴是主轴时 y轴就是侧轴。 y轴是主轴时, x轴就是侧轴。

5. 属性:

容器属性: 可以定义该盒子为一个弹性容器, 也可以选定主轴, 或者指定容器内项目的对齐方式和排列方式等。

项目属性: 定义自己所占的剩余空间, 或者想对自己设置独特的排列方式等。

 

1. 容器常用属性

属性常用值描述
displayflex将元素变为弹性盒子, 是不能省略的属性
flex-directionrow、row-reverse、column、column-reverse选定主轴和排列方式
justify-contentflex-start、flex-end、center、space-between、space-around指定主轴上项目的对齐方式
flex-wrapnowrap、wrap、wrap-reverse指定项目是否换行
align-itemsstretch、flex-start、flex-end、center设置侧轴上项目的对齐方式 (单行)
align-contentstretch、flex-start、flex-end、center、
space-between、space-around
设置侧轴上项目的对齐方式 (多行)
flex-flowflex-flow: flex-direction flex-wrapflex-direction 和 flex-wrap 的连写简写

 

2. 项目常用属性

属性常用值描述
flex数值指定当前项目所占剩余空间的份数
align-selfauto、flex-start、flex-end、center、stretch指定当前项目在侧轴的排列方式

 

常用属性效果演示

 

1. 容器属性效果演示

(1) flex-direction 选定主轴和指定排列方式

① 主轴: x轴

 

② 主轴: y轴

 

(2) justify-content 指定主轴对齐方式

① 主轴: x轴

 

② 主轴: y轴

 

(3) flex-wrap 是否换行

① 主轴: x轴

 

② 主轴: y轴

 

(4) align-items 侧轴对齐方式 注: 仅单行时才能准确居中, 单行指得是主轴

① 主轴: x轴

 

② 主轴: y轴

 

(5) align-content 侧轴对齐方式 注: 仅多行时才能准确居中, 多行指得是主轴

① 主轴: x轴

 

② 主轴: y轴

 

2. 项目属性效果演示

 

项目属性一般来说最常用得就是 flex 属性了。 

x轴主轴: 常用场景就是, 容器内部左右两侧, 各有一个固定宽度的项目, 想让两个项目中间得剩余空间自动平均分配宽度。

y轴主轴: 常用场景就是, 容器内部上下两侧, 各有一个固定高度的项目, 想让两个项目中间得剩余空间自动平均分配高度。

x轴主轴的效果:

x轴主轴的代码:

<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport"
        content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Flex</title>
  <style>
    .flex_container {
      display: flex;
      width: 1000px;
      height: 300px;
      border: 1px solid black;
    }

    .item {
      width: 200px;
      height: 200px;
      background-color: skyblue;
    }

    .item_auto {
      flex: 1;
      margin-left: 5px;
      height: 200px;
      background-color: skyblue;
    }

    .item_auto2 {
      flex: 2;
      margin-left: 5px;
      margin-right: 5px;
      height: 200px;
      background-color: skyblue;
    }
  </style>
</head>
<body>
<div class="flex_container">
  <div class="item">固定大小</div>
  <div class="item_auto">预想把剩余空间分为三份, 本项目占一份 flex: 1</div>
  <div class="item_auto2">预想把剩余空间分为三份, 本项目占两份 flex: 2</div>
  <div class="item">固定大小</div>
</div>
</body>
</html>

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值