标题

  • CSS 弹性盒子布局
    • CSS 属性
      • 应用在父容器元素上的CSS属性
        • 1.display: flex | inline-flex;
        • 2. flex-direction
        • 3. flex-wrap
        • 4. flex-flow
        • 5. justify-content
        • 6. align-items
        • 7. align-content
      • 应用在子元素上的CSS属性
        • order
        • flex-grow
        • flex-shrink
        • flex-basis
        • align-self

CSS 弹性盒子布局

CSS 弹性盒子布局 是 CSS 的模块之一,定义了一种针对用户界面设计而优化的 CSS 盒子模型。在弹性布局模型中,弹性容器的子元素可以在任何方向上排布,也可以“弹性伸缩”其尺寸,既可以增加尺寸以填满未使用的空间,也可以收缩尺寸以避免父元素溢出。子元素的水平对齐和垂直对齐都能很方便的进行操控。通过嵌套这些框(水平框在垂直框内,或垂直框在水平框内)可以在两个维度上构建布局。

CSS 属性

CSS 弹性盒子布局的css分两种:

  • 一种是应用中父容器的的CSS,用于设定父容器本身或者全部子元素的表现形式
  • 另一种则是应用在子元素上,用于设置单个子元素的表现行为

下面将逐一展示css代码和效果

应用在父容器元素上的CSS属性

1.display: flex | inline-flex;

用于设定一个flex(**弹性盒子布局**)容器

flex 设定一个块级的flex(弹性盒子布局)容器

<ul style="display: inline-flex;"><li>1</li><li>2</li>
</ul>
<ul style="display: inline-flex;"><li>1</li><li>2</li>
</ul>

inline-flex 设定一个行内的flex(弹性盒子布局)容器

<ul style="display: inline-flex;"><li>1</li><li>2</li>
</ul>
<ul style="display: inline-flex;"><li>1</li><li>2</li>
</ul>

2. flex-direction

设置伸缩盒对象的子元素在父容器中位置
  1. flex-direction: row; 设置伸缩盒对象的子元素在父容器中的水平分布并靠在父容器的左侧
<ul class="box" style="flex-direction: row;"><li>1</li><li>2</li><li>3</li>
</ul>

  1. flex-direction: row-reverse; 设置伸缩盒对象的子元素在父容器中的位置水平逆序分布并靠在父容器的右侧
<ul class="box" style="flex-direction: row-reverse;"><li>1</li><li>2</li><li>3</li>
</ul>

  1. flex-direction: column; 设置伸缩盒对象的子元素在父容器中的位置垂直分布并靠在父容器上面
<ul class="box" style="flex-direction:column;"><li>1</li><li>2</li><li>3</li>
</ul>

  1. flex-direction: column-reverse; 设置伸缩盒对象的子元素在父容器中的位置垂直逆序分布并靠在父容器底部
<ul class="box" style="flex-direction:column;"><li>1</li><li>2</li><li>3</li>
</ul>

3. flex-wrap

设置伸缩盒对象的子元素超出父容器时是否换行
  1. flex-wrap: nowrap; 设置伸缩盒对象的子元素超出父容器时是不换行,如果没有设置min-width,这样会压缩子元素的width
<ul class="box" style="flex-wrap: wrap;"><li>1</li><li>2</li><li>3</li><li>1</li><li>2</li><li>3</li><li>1</li><li>2</li><li>3</li><li>1</li><li>2</li><li>3</li>
</ul>


2. flex-wrap: wrap; 设置伸缩盒对象的子元素超出父容器时是换行

<ul class="box" style="flex-wrap: wrap;"><li>1</li><li>2</li><li>3</li><li>1</li><li>2</li><li>3</li><li>1</li><li>2</li><li>3</li><li>1</li><li>2</li><li>3</li>
</ul>

  1. flex-wrap: wrap-reverse; 设置伸缩盒对象的子元素超出父容器时是自下而上换行
<ul class="box" style="flex-wrap: wrap-reverse;"><li>1</li><li>2</li><li>3</li><li>1</li><li>2</li><li>3</li><li>1</li><li>2</li><li>3</li><li>1</li><li>2</li><li>3</li>
</ul>

4. flex-flow

复合属性,设置伸缩盒对象子元素的排列方式
 flex-flow: <‘flex-direction’> || <‘flex-wrap’>
<ul class="box" style="flex-flow: column wrap-reverse; max-height: 200px;"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li>
</ul>

5. justify-content

设置或检索弹性盒子元素在水平方向上的对齐方式。
  1. justify-content:flex-start; 设置伸缩盒对象的子元素在父容器中水平方向上左对齐
<ul class="box" style="justify-content:flex-start;"><li>1</li><li>2</li><li>3</li>
</ul>

  1. justify-content:flex-end; 设置伸缩盒对象的子元素在父容器中水平方向上右对齐
<ul class="box" style="justify-content:flex-end;"><li>1</li><li>2</li><li>3</li>
</ul>

  1. justify-content:center; 设置伸缩盒对象的子元素在父容器中水平方向上居中对齐
<ul class="box" style="justify-content:center;"><li>1</li><li>2</li><li>3</li>
</ul>

  1. justify-content:space-around; 设置伸缩盒对象的子元素在父容器中水平方向上平均分布
<ul class="box" style="justify-content:space-around"><li>1</li><li>2</li><li>3</li>
</ul>

  1. justify-content:space-between; 设置伸缩盒对象的子元素在父容器中水平方向上平均分布
<ul class="box" style="justify-content:space-between;"><li>1</li><li>2</li><li>3</li>
</ul>

6. align-items

设置弹性盒子元素在垂直方向上的对齐方式。(适用于子元素排列为单行)
  1. align-items:flex-start; 设置伸缩盒对象的子元素在父容器中紧靠顶部
<ul class="box" style="min-height: 200px; align-items:flex-start;"><li>1</li><li>2</li>    <li>3</li>
</ul>

  1. align-items:flex-end;设置伸缩盒对象的子元素在父容器中紧靠底部
<ul class="box" style="min-height: 200px; align-items:flex-end;"><li>1</li><li>2</li><li>3</li>
</ul>


3. align-items:center;设置伸缩盒对象的子元素在父容器中垂直居中

<ul class="box" style="min-height: 200px; align-items:center;"><li>1</li><li>2</li><li>3</li>
</ul>


4. align-items:baseline;设置伸缩盒对象的子元素在父容器中基线对齐.如弹性盒子元素的行内轴与侧轴为同一条,则该值与’flex-start’等效。

<ul class="box" style="min-height: 200px; align-items:baseline;"><li style="height: 30px;">1</li><li style="height: 40px;">2</li><li>3</li>
</ul>


5. align-items:stretch;如果指定侧轴大小的属性值为’auto’,则其值会使项目的边距盒的尺寸尽可能接近所在行的尺寸,但同时会遵照’min/max-width/height’属性的限制。

<ul class="box" style="min-height: 200px; align-items:baseline;"><li style="height: 30px;">1</li><li style="height: 40px;">2</li><li>3</li>
</ul>

7. align-content

设置弹性盒堆叠伸缩行的垂直方向上对齐方式。(适用于子元素排列为多行)
  1. align-content: flex-start; 设置弹性盒堆叠伸缩行的顶部对齐
<ul class="box" style="min-height: 200px; flex-wrap: wrap; align-content: flex-start;"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li>
</ul>


2. align-content: flex-end;设置弹性盒堆叠伸缩行的底部对齐

<ul class="box" style="min-height: 200px; flex-wrap: wrap; align-content: flex-end;"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li>
</ul>


3. align-content: center; 设置弹性盒堆叠伸缩行的垂直居中

<ul class="box" style="min-height: 200px; flex-wrap: wrap; align-content: center;"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li>
</ul>


4. align-content: space-between; 设置弹性盒堆叠伸缩行的平均分布,第一行和最后一行会紧靠边框

<ul class="box" style="min-height: 200px; flex-wrap: wrap; align-content: space-between;"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li>
</ul>


5. align-content: space-around; 设置弹性盒堆叠伸缩行的平均分布,第一行和最后一行不会紧靠边框

<ul class="box" style="min-height: 200px; flex-wrap: wrap; align-content: space-around;"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li>
</ul>


6. align-content:stretch; 各行将会伸展以占用剩余的空间

<ul class="box1" style="display: flex; min-height: 200px; flex-wrap: wrap; align-content: stretch;"><li style="width: 50px;">1</li><li style="width: 50px;">2</li><li style="width: 50px;">3</li><li style="width: 50px;">4</li><li style="width: 50px;">5</li><li style="width: 50px;">6</li><li style="width: 50px;">7</li><li style="width: 50px;">8</li><li style="width: 50px;">9</li><li style="width: 50px;">10</li><li style="width: 50px;">11</li><li style="width: 50px;">12</li><li style="width: 50px;">13</li>
</ul>

应用在子元素上的CSS属性

order

用整数值来定义排列顺序,数值小的排在前面。可以为负值
<ul class="box" style="justify-content: space-around;"><li style="order: 3;">1</li><li style="order: 2;">2</li><li style="order: 1;">3</li>
</ul>

flex-grow

设置弹性盒的扩展比率。根据弹性盒子元素所设置的扩展因子作为比率来分配剩余空间。
<ul class="box" style="justify-content: space-around;"><li>1</li><li style="flex-grow:1;">2</li><li style="flex-grow:3;">3</li>
</ul>
/**
*  不设置“1” 的扩展比例;所以“1”的宽度为默认宽度;
*  “2”和“3”的扩展比例为1:3;也就是说把父容器content
*  宽度减去“1”的宽度,然后再把剩余的宽度分成1+3=4份,
*  “2”占一份,“3” 占据三份
*/

flex-shrink

设置弹性盒的收缩比率。根据弹性盒子元素所设置的扩展因子作为比率来分配收缩空间。
<ul class="box" style="justify-content: space-around;"><li style="width: 400px;">1</li><li style="width: 400px;">2</li><li style="width: 400px; flex-shrink:3;">3</li>
</ul>
/***  不设置“1” “2“收缩比例;“3”的收缩比例为3;* 收缩比例跟扩展比例相反,当子元素可宽度加起* 来超过父容器的content的宽度,则子元素需要* 按收缩比例来分摊超出的宽度。也就是说减去分* 担的宽度。这里每个子元素的默认宽度为400px,* 而父容器的宽度为600px,则超出了200px.这时就* 需要每个子元素按比例减去各自的宽度。分别为* 40px:40px:120px
*/

flex-basis

设置弹性盒伸缩基准值
<ul class="box" style="justify-content: space-around;"><li style="width: 400px;">1</li><li style="width: 400px;flex-basis:600px">2</li><li style="width: 400px; flex-shrink:3;">3</li>
</ul>

align-self

设置或检索弹性盒子元素自身在垂直方向上的对齐方式

可选值:

align-self: auto | flex-start | flex-end | center | baseline | stretch

  • auto:如果’align-self’的值为’auto’,则其计算值为元素的父元素的’align-items’值,如果其没有父元素,则计算值为’stretch’。
  • flex-start:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴起始边界。
  • flex-end:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴结束边界。
  • center:弹性盒子元素在该行的侧轴(纵轴)上居中放置。(如果该行的尺寸小于弹性盒子元素的尺寸,则会向两个方向溢出相同的长度)。
  • baseline:如弹性盒子元素的行内轴与侧轴为同一条,则该值与’flex-start’等效。其它情况下,该值将参与基线对齐。
  • stretch:如果指定侧轴大小的属性值为’auto’,则其值会使项目的边距盒的尺寸尽可能接近所在行的尺寸,但同时会遵照’min/max-width/height’属性的限制。
<ul class="box" style="justify-content: space-around; height: 100px;"><li style="align-self: auto;">auto</li><li style="align-self: flex-start;">flex-start</li><li style="align-self: flex-end;">flex-end</li><li style="align-self: center;">center</li><li style="align-self: baseline;">baseline</li><li style="align-self: stretch;">stretch</li>
</ul>

以上就是 CSS 弹性盒子布局 的简述。

本文参考自:

http://caibaojian.com/flexbox-guide.html
https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Flexible_Box_Layout

本文案例源码下载地址:
https://download.csdn.net/download/weixin_44869002/11912701

CSS 弹性盒子布局使用方法介绍相关推荐

  1. CSS 弹性盒子布局详解

    CSS 弹性盒子 弹性盒子是CSS3的一种新布局模式.是一种当页面需要适应不同的屏幕大小以及设备类型时确保元素拥有恰当的行为的布局方式. 弹性盒子布局是一种在前端HTML开发中比较常用的布局方式,还有 ...

  2. CSS弹性盒子布局——flex布局的基本概念

    <CSS弹性盒子布局--flex布局的基本概念> Flexible Box 模型,通常被称为 flexbox,是一种一维的布局模型.它给 flexbox 的子元素之间提供了强大的空间分布和 ...

  3. 【CSS 弹性盒子布局 (Flexible Box Layout)】

    CSS 弹性盒子布局 Flexible Box Layout CSS 弹性盒子布局 (Flexible Box Layout) 1. 弹性盒子布局的 基本概念和术语 2. flex 属性: 设置 伸缩 ...

  4. CSS弹性盒子布局flex

    flex布局: flex布局是继标准流布局.浮动布局.定位布局后的第四种布局方式.这种方式可以非常优雅的实现子元素居中或均匀分布,甚至可以随着窗口缩放自动适应.flex布局在浏览器中存在一定的兼容性( ...

  5. CSS布局之“弹性盒子布局”

    弹性盒子,通常被称为 flexbox,是一种一维的布局模型.它给弹性元素提供了强大的空间分布和对齐能力,极大的方便了网页的布局和美化. 目录 前言 一.弹性盒子概述 二.弹性盒子组成 三.弹性容器(F ...

  6. css 弹性盒子 flex布局

    目录 css弹性盒子flex 布局 什么是flex 常见父项属性 概念与案例 主轴与侧轴 flex-direction设置主轴的方向 justify-content 设置主轴上的子元素排列方式 fle ...

  7. HTML+CSS_第三部分(Flex弹性盒子布局、grid网格布局、移动端、移动端流式布局、移动端rem布局、响应式布局、Bootstrap框架)

    文章目录 (1)Flex弹性盒子布局 一: 父容器上的属性 1. display:flex 设置为弹性盒子(写在父容器上) 2.flex-direction值 设置子项的布局方向(写在父容器上) 3. ...

  8. CSS知识点——盒子布局及一些常用属性

    CSS知识点--盒子布局及一些常用属性 - 盒子布局 先上一张图,方便理解后面的布局内容 盒子布局的主体通常为 div 标记(分区标签),这里不得不提一下 span 标签,它也是一个区域标签,但是区别 ...

  9. 弹性盒子布局(下面有代码)

    弹性盒子布局 语法:display:flex(设置弹性盒) 属性: flex-direction:决定主动方向 row:默认值,水平方向,起点在左端row-reverse:主轴为水平方向,起点在右端c ...

最新文章

  1. 去除RNA-seq数据批次效应
  2. mysql连接查询拒绝服务漏洞_MySQL-连接查询
  3. 面试c语言考题,c语言面试最必考的十道试题,求职必看!!!
  4. 御龙在天手游怎么不显示服务器了,御龙在天手游进不去怎么办 闪退原因及解决办法...
  5. 烂泥:利用Diskgen找回分区破坏前的资料
  6. java ssm 分页_ssm实现分页查询的实例
  7. 谷歌Chrome浏览器开发者工具教程—JS调试篇
  8. 5G组网方案和频谱规划
  9. 【笔记】编译报错error: cannot convert ‘main(int, char**)::sockadrr*’ to ‘const sockaddr*’ for
  10. spss软件下载安装
  11. 数据预处理之数据清洗案例
  12. window7下visio 2013 64位激活工具
  13. hadoop测试环境完全分布式安装配置
  14. 树莓派linux led字符设备驱动( linux自带)
  15. BetterJoy蓝牙将switch转化为xbox玩游戏,例子:双人成行(俄区版)
  16. 阿里云Centos8 yum报错Failed to synchronize cache for repo ‘BaseOS‘解决方案,通过换文件的方式来解决。
  17. 复旦计算机可以跨专业吗,I直达录取现场I2020,还能跨考计算机吗?
  18. 一.隐藏手机下面虚拟键盘(华为,魅族......)
  19. ubuntu 从刷机到yolov5环境搭建训练记录
  20. 【海思3798系列机顶盒NAS分区表修改软件】

热门文章

  1. Chat Bot问题相似度演进之路
  2. 绘制神经元的基本结构图,神经元的结构图简笔画
  3. PythonIDE:Thonny使用说明
  4. 京东-index.html
  5. LWN:浏览器战争硝烟依旧在!
  6. Eclipse非正常关闭导致不能正常启动
  7. 小学计算机应用到英语课教案,信息技术与小学英语教学的整合
  8. Dubbo 本地调试,直连本地服务提供者心法
  9. 找做IT的男朋友会不会没有隐私
  10. 安全运维 | 通过拦截页面辨别WAF产品!