### 彪哥

爱好前端

- HTML

- CSS

  - CSS教程和技巧收藏
  - flex布局语法
  - flex布局案例-基础
  - flex布局案例-骰子
  - flex布局案例-圣杯布局
  - flex布局案例-网格布局
  - flex布局案例-输入框布局
  - CSS3之transition过渡
  - CSS3之animation动画
  - 「布局技巧」图片未加载前自动撑开元素高度
  - 文字在一行或多行时超出显示省略号
  - 从box-sizing属性入手，了解盒子模型
  - 水平垂直居中的几种方式-案例
  - 如何根据系统主题自动响应CSS深色模式
  - 「css技巧」使用hover和attr()定制悬浮提示
  - CSS-function汇总
  - CSS给table的tbody添加滚动条

- 页面
- CSS

heBody
2019-12-25

# flex布局案例-基础

# # flex布局案例-基础

> 可用`F12`开发者工具查看元素及样式，可打开codepen在线编辑代码。

    <html>
      <div class="box">
        <span>1</span>
        <span>2</span>
        <span>3</span>
        <span>4</span>
        <span>5</span>
        <span>6</span>
        <span>7</span>
      </div>
    </html>
    <style>
    /* 父元素上定义弹性盒模型，称之为 “容器” */
    .box{
      width: 350px;
      height: 300px;
      background: #eee;
      /* 基本概念：.box为容器，.box下的span为项目；.box的x轴为主轴，y轴为交叉轴 */
      /* flex 定义为弹性盒模型 */
      display: flex;
      /*flex-direction 排列方向： row 行（默认） | row-reverse 行-反转  | column 列 | column-reverse 列-反转 */
      flex-direction: row;
      /*flex-wrap 是否换行： nowrap 不换行（默认，可能会压缩项目宽度） | wrap 换行 | wrap-reverse 换行-反转，第一行在下方 */
      flex-wrap: wrap;
      /* flex-flow  方向和换行的简写：默认值为row nowrap，方向 和 是否换行 的取值 */
      flex-flow: row wrap;
      /* justify-content 项目在主轴上的对齐方式: flex-start 左对齐（默认） | flex-end 右对齐 | center 居中 | space-between 两端对齐 | space-around 项目两侧的间隔相等*/
      justify-content: space-around;
      /* align-items 项目在交叉轴上的对齐方式：stretch（默认）伸展，如果项目未设置高度或设为auto，将占满整个容器的高度 |
      flex-start 交叉轴的起点对齐 | flex-end 交叉轴的终点对齐 | center 交叉轴的中心点对齐 | baseline 项目的第一行文字的基线对齐（适用于每个项目高度不一致，以项目中的文字为基准对齐） */
      align-items: center
      /* align-content 多根轴线的对齐方式（一排项目为一根轴线，只有一根轴线时此样式不起作用）:
      stretch（默认）伸展，轴线占满整个交叉轴 | flex-start 容器顶部对齐 | flex-end 容器底部对齐 | center 与交叉轴的中点对齐 |
      space-between 与交叉轴两端对齐，轴线之间的间隔平均分布| space-around 每根轴线两侧的间隔都相等*/
      align-content：flex-start
      /* 代码单词中文含义 ：
      flex 弹性； direction 方向； wrap 外套、包； flow 流动
      justify 对齐； content 内容；space 空间、距离；between 在...之间；around 周围的
      align 排列；stretch 伸展；
      */
    }
    /* 子元素称之为 “项目” */
    .box span{
      display:block;width: 50px;height: 50px;background: mediumspringgreen;margin: 10px;text-align: center;line-height: 50px;
      /* flex-grow 项目的放大比例，默认为0，即如果存在剩余空间，也不放大;
      如果所有为1时，则它们将等分剩余空间（如果有的话）。
      如果其中一个项目为2，其他项目都为1，则为2的占据的剩余空间将比其他项多一倍。
      */
      flex-grow: 0; /* grow 扩大 */
      /* flex-shrink属性定义了项目的缩小比例，默认为1，即如果空间不足，该项目将缩小。
      如果所有项目都为1，当空间不足时，都将等比例缩小。
      如果其中一个项目为0，其他项目都为1，则空间不足时，为0的不缩小*/
      flex-shrink: 1; /* shrink 缩小 */
      /* flex-basis属性定义了在分配多余空间之前，项目占据的主轴空间（宽度）。
      浏览器根据这个属性，计算主轴是否有多余空间。它的默认值为`auto`，即项目的本来大小。
      它可以设为跟`width`或`height`属性一样的值（比如50px），则项目将占据固定空间*/
      flex-basis: auto; /* basis 基础 */
      /* flex属性是flex-grow,flex-shrink 和 flex-basis的简写，默认值为`0 1 auto`。后两个属性可选。
      该属性有两个快捷值：auto (1 1 auto)，即放大 和 none (0 0 auto)，即缩小。
      建议优先使用这个属性，而不是单独写三个分离的属性，因为浏览器会推算相关值。*/
      flex:0 1 auto; /* flex: 0放大 1缩小 auto原本宽度*/
    }
    .box span:nth-child(2){
      /* order 项目的排列顺序。数值越小，排列越靠前，默认为0 ; 取值：正负整数。*/
      order: -1;
      background: red;
    }
    .box span:nth-child(7){
      /* align-self 属性允许单个项目有与其他项目不一样的对齐方式，可覆盖align-items属性。
      默认值为auto，表示继承父元素的align-items属性，如果没有父元素，则等同于stretch。
      取值：auto（默认） | flex-start | flex-end | center | baseline | stretch。
      */
      align-self: flex-end;
      background: blue;
    }
    </style>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76

> 参考：http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html
> (opens new window)

编辑
(opens new window)
上次更新: 2022/12/14, 19:36:42
flex布局语法
flex布局案例-骰子

← flex布局语法 flex布局案例-骰子→

最近更新

  01
Git修改分支名
08-11

  02
CSS给table的tbody添加滚动条
06-29

  03
我做了一个手写春联小网页，祝大家虎年暴富 原创
01-28

更多文章>

Copyright © 2016-2022 Hesb | MIT License

- 跟随系统
- 浅色模式
- 深色模式
- 阅读模式