CSS常用布局二(flex布局)

article/2025/9/13 20:46:21

flex布局

前言:flex是flexible box的缩写,译为“弹性布局”,用来为盒模型提供最大的灵活性,任何一个容器都可以指定为flex布局,只需要设置“display:flex"即可;行内元素可以通过设置”display:inline-flex“实现;需要注意的是,如果设置了flex布局,则子元素的float、clear和vertical-align属性将失效

1.基本概念

使用了flex布局的元素,称为flex容器(flex container),简称为”容器“。它所有的子元素自动生成容器成员,称为flex项目(flex item),简称”项目”;
在这里插入图片描述

容器默认存在两根主轴水平的主轴(main axis)和垂直的交叉轴(cross axis),主轴的开始位置(即边框的交叉点)叫做main start,结束位置叫做main end;交叉轴的开始位置叫做cross start,结束位置叫做cross end。项目默认沿主轴排列,单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size。

2.容器的属性

  • flex-flow:该属性作用于弹性盒容器,用于控制容器内元素的排列方向和换行方式,该属性是一个复合属性,由flex-direction和flex-wrap组成;

  • flex-direction:指定弹性盒子内子元素的排列方向;

  • flex-wrap:指定弹性盒子内子元素的换行方式;

  • justify-content:该属性作用于弹性盒容器内的子元素,用于控制该子元素自身在排列方向上的分布方式;

  • align-items:该属性作用于弹性盒容器,用于控制弹性盒内所有子元素在排列方向的垂直方向上的对齐方式;

  • align-content:该属性作用域弹性盒容器,用于控制弹性盒内行的分布方式;

(1)flex-flow

flex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap;

.box{flex-flow:<flex-direction><flex-wrap>;
}

下面详细介绍flex-direction属性和flex-wrap属性;

(2)flex-direction

flex-direction属性决定主轴的方向(即项目的排列方向);

.box{flex-direction:row|row-reverse|column|column-reverse;
}

该属性有4个值

  • row(默认值):主轴为水平方向,起点在左端;
  • row-reverse:主轴为水平方向,起点在右端;
  • column:主轴为垂直方向,起点在上沿;
  • column-reverse:主轴为垂直方向,起点在下沿;

上述效果如下图所示:
在这里插入图片描述

(3)flex-wrap属性

默认情况下,项目都排在一条线(又称”轴线“)上,flex-wrap属性定义,如果一条轴线排不下,如何换行,有以下三个取值:

.box{flex-wrap:nowrap|wrap|wrap-reverse
}
  • nowrap(默认):不换行,排列方式效果如图:
    在这里插入图片描述

  • wrap:换行,第一行在上方,排列方式效果如图:
    在这里插入图片描述

  • wrap-reverse:换行,第一行在下方,排列方式效果如图:
    在这里插入图片描述

(4)justify-content属性

justify-content属性定义了项目在主轴上的对齐方式

.box{justify-content:flex-start|flex-end|center|space-between|space-around;
}

该属性有5个值:

  • flex-start(默认值):左对齐;
  • flex-end:右对齐;
  • center:居中;
  • space-between:两端对齐,项目之间的间隔都相等;
  • space-around:每个项目两侧的间隔相等,所以项目之间的间隔比项目与边框的间隔大一倍;

上述效果如下图所示:
在这里插入图片描述

(5)align-items属性

align-item属性定义项目在交叉轴上如何对齐

.box{align-items:flex-start|flex-end|center|baseline|stretch;
}

该属性有5个值,具体的对齐方式与交叉轴的方向有关,假设交叉轴从上到下:

  • flex-start:交叉轴的起点对齐;
  • flex-end:交叉轴的中点对齐;
  • center:交叉轴的中点对齐;
  • baseline:项目的第一行文字的基线对齐;
  • stretch(默认值):如果项目未设置高度或设置为auto,将占满整个容器的高度;

上述效果如下图所示:
在这里插入图片描述

(6)align-content属性

align-content属性定义了多根轴线的对齐方式,如果只有一根轴线,该属性不起作用

.box{align-content:flex-start|flex-end|center|space-between|stretch;
}

该属性有6个值:

  • flex-start:与交叉轴的起点对齐;
  • flex-end:与交叉轴的终点对齐;
  • center:与交叉轴的重点对齐;
  • space-between:与交叉轴两端对齐,轴线之间的间隔平均分布;
  • space-around:每根轴线两侧的间隔都相等,所以,轴线之间的间隔比轴线与边框的间隔大一倍;
  • stretch(默认值):轴线占满整个交叉点;

上述效果如下图所示:
在这里插入图片描述

3.项目的属性

(1)order属性

order属性定义项目的排列顺序,数值越小、排列越靠前,默认值为0;

.item{order:<integer>;
}

上述效果如下图所示:
在这里插入图片描述

(2)flex属性

flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选;

注意:该属性有两个快捷值:auto(1 1 auto)none(0 0 auto)。建议优先使用这个属性,而不是单独些三个分离的属性,因为浏览器会推算相关值影响渲染;

.item{flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
}

下面详细介绍flex-grow, flex-shrink 和 flex-basis三个属性;

(3)flex-grow属性

flex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大;

.item{flex-grow:<number>;/*default 0*/
}

注意:如果所有项目的flex-grow属性都为1,那么他们将等分剩余空间(如果存在剩余空间的话);如果一个项目的flex-grow属性为2,其他项目都为1,则前者(属性为2的)占据的剩余空间将比其他项多一倍

上述效果如下图所示:
在这里插入图片描述

(4)flex-shrink属性

flex-shrink属性定义了项目的缩小比例,默认为1,如果空间不足,该项目将会缩小;

注意:如果所有项目的flex-sharink属性都为1,当空间不足时,都将等比例缩小;如果一个项目的flex-shrink属性为0,其它项目都为1,则空间不足时,前者(属性为0)不缩小。负值对该属性无效

上述效果如下图所示:
在这里插入图片描述

(5)flex-basis属性

flex-basis属性定义了部分在分配多余空间之前,项目占据的主轴空间(main size),浏览器根据这个属性,计算主轴是否有多余空间,它的默认值为auto,即项目本来的大小;

注意:它可以设置根width或height属性一样的值(如200px),则项目将占据固定空间

.item{flex-basis:<length>|auto;/*default auto*/
}

(6)align-self属性

align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。

.item{align-self: auto | flex-start | flex-end | center | baseline | stretch;
}

该属性可能取6个值,除了auto,其他都与align-items属性完全一致。

效果图如下:
在这里插入图片描述


http://chatgpt.dhexx.cn/article/8o1gVQn4.shtml

相关文章

flex布局(详解)

目录 前言 一、何为Flex布局 二、基本概念 三、容器的属性 3.1 flex-direction属性 3.2 flex-wrap属性 3.3 flex-flow 3.4 justify-content属性 3.5 align-items属性 3.6 align-content属性 四、项目的属性 4.1 order属性 4.2 flex-grow属性 4.3 flex-shrink属性 …

Flex布局详解

Flex 布局详解 一、入门 1. flex 是什么&#xff1f; flex 是 Flexible Box 的缩写&#xff0c;就是弹性盒子布局的意思 2. 为什么我们需要 flex? 解决元素居中问题 自动弹性伸缩&#xff0c;合适适配不同大小的屏幕&#xff0c;和移动端 3.flex 常见术语 三个2 序号简…

SQL语句的解析过程

于最近需要做一些sql query性能提升的研究&#xff0c;因此研究了一下sql语句的解决过程。在园子里看了下&#xff0c;大家写了很多相关的文章&#xff0c;大家的侧重点各有不同。本文是我在看了各种资料后手机总结的&#xff0c;会详细的&#xff0c;一步一步地讲述一个sql语句…

SQL学习TASK06

section A 1.创建员工信息表&#xff1a; CREATE TABLE Employee (s_product_id char(4) NOT NULL, s_name VARCHAR(32) NOT NULL, s_salary INTEGER, s_department_id INTEGER); 创建部门信息表&#xff1a; CREATE TABLE department (d_id char(4) NOT NULL, d_name VARCHAR…

MySQL高级SQL语句

目录 一、常用查询 1、按关键字排序 1.1 前期准备 1.2 升序、降序列出数据 1.3 找出其中南京的数据并以分数降序列出 1.4 查询学生信息先按兴趣id降序排列&#xff0c;相同分数的&#xff0c;id也按降序排列 1.5 查询学生信息先按兴趣id降序排列&#xff0c;兴趣id相同的…

HANA 一些sql语句

函数&#xff01;&#xff01; 时间函数&#xff1a;DAYS_BETWEEN、ADD_DAYS、FORMAT、CURRENT_DATE、YEAR、MONTH等。 字符串函数&#xff1a;CONCAT、TRIM、LENGTH、REPLACE、STRING_AGG、SUBSTRING等&#xff1b; 数字函数&#xff1a; ROUND、FLOOR、RAND、ABS等 视图&…

SQL语句的封装

本篇供个人学习使用&#xff0c;有问题欢迎讨论 封装SQL语句 ​ 在封装SQL语句之前&#xff0c;我们得知道什么是DAO封装与实体类以及JDBC工具类的封装与连接数据库的具体流程。 ​ 关于JDBC工具类的封装可以查看我的另一篇博文 JDBC工具类的封装 ​ 想了解具体的连接数据库…

mysql sql delete语句_SQL Delete语句

在本教程中,您将学习如何使用SQL DELETE语句删除表中的一行或多行。 1. SQL DELETE语句简介 要从表中删除一行或多行,请使用DELETE语句。 DELETE语句的一般语法如下: DELETE FROM table_name WHERE condition; 首先,提供要删除行的表名称(table_name)。 其次,在WHERE子句中…

MySQL入门(5)——基于datagrip的SQL语句学习

目录 一、什么是SQL二、SQL约束1、主键约束&#xff08;1&#xff09;添加主键约束方式一&#xff1a;创建表时&#xff0c;在字段描述处&#xff0c;声明指定字段为主键方式二&#xff1a;创建表时&#xff0c;在constraint约束区域&#xff0c;声明指定字段为主键方式三&…

MySQL数据库增删改查及聚合查询SQL语句学习汇总

目录 数据库增删改查SQL语句 MySQL数据库指令 1.查询数据库 2.创建数据库 3.删除数据库 4.选择数据库 创建表table 查看所有表 创建表 查看指定表的结构 删除表 数据库命令进行注释 增删改查&#xff08;CRUD&#xff09;详细说明 增加 SQL库提供了关于时间的…

第一部分_SQL查询语句学习

第一部分 SQL查询语句的学习 单表查询 查询订购日期在1996年7月1日至1996年7月15日之间的订单的订购日期、订单ID、客户ID和雇员ID等字段的值 SELECT 订购日期,订单ID,客户ID,雇员ID FROM 订单 WHERE 订购日期 BETWEEN 1996-07-01 AND 1996-07-15 查询供应商的ID、公司名称、…

了解RS-232、RS-485串口通信协议

文章目录 一、串口通信协议1、RS-232标准2、RS-485标准3、RS232、485电平与TTL电平的区别4、"USB/TTL转232"模块工作原理1、工作流程2、驱动 2、总结3、参考资料 一、串口通信协议 对于通信协议&#xff0c;我们可以分为两个层面进行理解&#xff0c;分别是物理层和…

RS485通讯协议

https://blog.csdn.net/qq_29344757/article/details/71516037 1. 硬件层协议 通讯协议主要是实现两个设备之间的数据交换功能&#xff0c;通讯协议分硬件层协议和软件层协议。硬件层协议决定数据如何传输问题&#xff0c;比如要在设备1向设备2发送0x63&#xff0c;0x63的二进…

RS——485通讯协议

1、RS485通讯实验简介 RS485是一种工业控制环境中 常用的通讯协议&#xff0c;它具有抗干扰能力强、传输距离远的特点。485协议又232协议改进而来&#xff0c;协议层不变&#xff0c;只改进了物理层&#xff0c;因而保留了串口通讯协议应用简单的特点。 看图就知道了&#xf…

485Modbus协议

1.RS485 1&#xff09;485通信 --差分传输 物理层&#xff1a; 通信引脚 A B 使用双绞线通信。 发送器&#xff1a; 逻辑1&#xff1a; A>B AB之间电压为2V~6V 逻辑0&#xff1a; A<B AB之间电压为-2V~-6V 接收器&#xff1a; 逻辑1&#xff1a; A>B AB之间电…

带你认识什么是485通信

在现代工业控制系统中&#xff0c;常常需要实现分布式控制&#xff0c;而分布式控制需要实现不同设备之间的通信。其中&#xff0c;485通信协议是一种被广泛使用的通信协议之一。 1. 介绍 A. 485通信的定义 485通信协议是一种串行通信协议&#xff0c;也被称为RS-485。它是由美…

常见的通讯协议总结(USART、IIC、SPI、485、CAN)

目录 一、通讯的基本概念1、串行通讯2、并行通讯3、串行通讯与并行通讯对比4、传输模式&#xff08;单工、半双工、全双工&#xff09; 二、USART—串口通讯1、物理层2、协议层&#xff08;1&#xff09;波特率&#xff08;2&#xff09;起始和停止信号&#xff08;3&#xff0…

485通讯与MODBUS的区别与联系

最近做智能检测的项目&#xff0c;设备、串口之间的通讯比较多&#xff0c;一会儿485&#xff0c;一会儿modbus RTU&#xff0c;有点晕了&#xff0c;这里重新梳理一下RS485、485通讯协议、ModBus通讯协议、Modbus Rtu通讯这几个点的联系和区别。 先说RS485吧&#xff0c;RS48…

485通讯和modbus通讯协议

485通信&#xff1a; 采用差分信号&#xff1a;A比B电压高是1&#xff0c;A比B电压低是0&#xff0c;电压高低值在0.2V-6V之间。 硬件连接上&#xff1a;所有A接到一起&#xff0c;所有B接到一起AB之间要加匹配电阻100欧到1K之间。 485通讯配置时&#xff1a;先要使能发送TX…

MODBUS通讯协议详解(基于485)

参考&#xff1a;灵育科技Modbus课程总结 作者&#xff1a;Naunyang 时间&#xff1a;2020-11-23 13:51:58 网址&#xff1a;https://blog.csdn.net/Naunyang/article/details/108740456?spm1001.2014.3001.5502 参考&#xff1a;MODBUS用于单片机通讯 作者&#xff1a;hillch…