十分钟了解flex布局

十分钟了解flex布局

以下内容来自于对Flex 布局语法教程 | 菜鸟教程 HTML行内元素与块级元素有哪些及区别的简单阅读

块级元素与行内元素组成的盒状模型

块级元素 block:

  • 默认起一个新行

  • 通常来说每一行只有一个块级元素,除非使用float浮动

  • 高度、行高可控制

  • 外边距、内边距可控制

  • 宽度缺省为父容器的100%

  • 可容纳行内元素和其他块元素

  • div是最常用的块级元素,display:block也可指定为块级元素

行内元素 inline :

  • 和其他元素在同一行

  • 高度、行高不可改变

  • 设置margin时上下不可改变,左右可改变

  • 设置padding时上下不可改变,左右可改变

  • 宽度不可改变,固定为其文字或图片的宽度

  • 只能容纳行内元素或文本

  • display:inline可指定为行内元素

写过前端的同学们肯定都清楚,在电脑前调整元素的各种position、float、align……耗尽万般心血才排版好,然后稍微改变一下窗口大小查看后排版就全乱了,此时的心是死的。

flex布局与flex容器

flex布局是W3C提出的一种新的方案,可以简便、完整、响应式地实现各种页面布局,而且目前来说已经获得了所有浏览器的支持(甚至IE,泪目)。

任何一个块级元素或行内元素都可以通过display:flex转换为flex容器 (flex container)。此时,其所有的子元素将转变为flex项目 (flex item)。

需要注意的是,flex项目的子元素的float、clear、vertical-align属性会失效。

flex容器内存在着两个基础的概念:

  • main 主方向,默认水平:

    • main axis:主轴

      • main start/end:主轴与容器左右边缘的交点
    • main size:每个flex项目的沿主轴方向长度

  • cross 与主方向交叉,默认垂直:

    • cross axis:交叉轴

      • cross start/end:交叉轴与容器上下边缘的交点
    • cross size:每个flex项目的沿交叉轴方向长度

同时,flex容器拥有六个主要属性:

  • flex-direction:决定了主轴方向

    • row:水平方向且起点在左端

    • column:垂直方向且起点在上沿

    • row-reverse:水平方向且起点在右端

    • column-reverse:垂直方向且起点在下沿

  • flex-wrap:决定如果一条轴线拍不下所有flex项目时,如何换行

    • nowrap:不换行,挤在一起

    • wrap:换行,且第一行在上

    • wrap-reverse:换行,且第一行在下

  • flex-flow:等同于<flex-direction>\ <flex-wrap>的简写形式

  • justify-content:定义了flex项目在主轴上的对齐方式

    • flex-start:左对齐

    • flex-end:右对齐

    • center:居中

    • space-between:两端对齐,且项目间隔相同,且最边缘项目与容器边沿相接

    • space-around:两端对齐,且项目间隔相同,但是最边缘项目与容器边沿也有相同间隔

  • align-items:定义了flex项目在交叉轴上的对齐方式

    • flex-start:略

    • flex-end:略

    • center:略

    • stretch:若项目未设置高度或auto,则占满整个容器高度

    • baseline:项目的第一行文字的基线相互对齐

  • align-content:定义了不同轴线的对齐方式(与flex-wrap有关,当我们进行了换行,就会出现多条主轴)

    • flex-start:与交叉轴的起点对齐。

    • flex-end:与交叉轴的终点对齐。

    • center:与交叉轴的中点对齐。

    • space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。

    • space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。

    • stretch(默认值):轴线占满整个交叉轴。

对flex项目,也有六个主要属性:

  • order:定义项目的排序键值,键值越小,排序越靠前

  • flex-grow:定义项目的放大键值。当主轴存在剩余空间时,项目间所占的main size比例将严格遵守占比键值的比例放大

  • flex-shrink:定义项目的缩小键值。当主轴拥挤时,项目间所占的main size比例将严格遵守占比键值的比例的缩小,0表示不缩小

  • flex-basis:定义项目所占的main size。auto表示为本来大小,也可指定为特定值

  • flex:相当于flex-grow、flex shrink、flex-basis的简写

  • align-self:允许单个项目与其他项目对齐方式不同(将覆盖父容器的align-items属性),其可选值与flex容器的align-items属性相同。缺省为auto,表示继承

posted @ 2022-05-25 20:14  neumy  阅读(353)  评论(0编辑  收藏  举报