【前端】【css】flex布局详解

Flex 布局(Flexible Box Layout,弹性盒子布局)是 CSS3 中的一种布局模式,用于在容器中更高效地分配空间并对齐内容,即使它们的大小是动态未知的。它非常适用于响应式设计。


一、Flex 布局的基本概念

1. 启用 Flex 布局
  • 只需要给父容器设置:
display: flex;
  • 或者:
display: inline-flex;  /* 行内弹性盒子 */
2. 容器与项目
  • 容器(Flex Container):设置了 display: flex 的元素。
  • 项目(Flex Item):容器内的直接子元素。

二、主轴和交叉轴

  • 主轴(Main Axis):项目排列的方向,默认是水平方向(从左到右)。
  • 交叉轴(Cross Axis):与主轴垂直的方向。

三、Flex 容器的属性(作用于父元素)

1. flex-direction:主轴方向
说明
row(默认)主轴为水平方向,起点在左
row-reverse主轴为水平方向,起点在右
column主轴为垂直方向,起点在上
column-reverse主轴为垂直方向,起点在下
2. flex-wrap:是否换行
说明
nowrap(默认)不换行
wrap换行,第一行在上方
wrap-reverse换行,第一行在下方
3. flex-flowflex-direction + flex-wrap 的简写
flex-flow: row wrap;
4. justify-content:主轴对齐方式
说明
flex-start(默认)起始对齐
flex-end末尾对齐
center居中对齐
space-between两端对齐,项目之间间隔相等
space-around每个项目两侧间隔相等
space-evenly所有间隔都相等(包括头尾)
5. align-items:交叉轴对齐方式
说明
stretch(默认)填满交叉轴
flex-start顶部对齐
flex-end底部对齐
center居中对齐
baseline按基线对齐
6. align-content:多行交叉轴对齐方式(有多行时生效)
说明
stretch(默认)填满交叉轴
flex-start顶部对齐
flex-end底部对齐
center居中对齐
space-between两端对齐
space-around间距相等
space-evenly间距全部相等

四、Flex 项目的属性(作用于子元素)

1. order:定义排列顺序
.order { order: 1; }

值越小,越靠前,默认是 0。

2. flex-grow:放大比例
.flex-grow { flex-grow: 1; }

所有项目的 flex-grow 总和决定空间分配比例。

3. flex-shrink:缩小比例
.flex-shrink { flex-shrink: 1; }

为负空间时如何缩小,默认是 1。

4. flex-basis:项目在主轴上的初始大小
.flex-basis { flex-basis: 100px; }
5. flex:简写属性,包含 grow、shrink、basis
flex: 1 0 100px;

通常写法:

  • flex: 1; 等价于 flex: 1 1 0%
  • flex: auto; 等价于 flex: 1 1 auto
  • flex: none; 等价于 flex: 0 0 auto
6. align-self:单独设置某个项目在交叉轴上的对齐方式(覆盖 align-items

五、常见使用场景举例

1. 水平居中 + 垂直居中
.parent {display: flex;justify-content: center;align-items: center;
}
2. 两端对齐,中间自适应
.left { flex: 0 0 auto; }
.middle { flex: 1; }
.right { flex: 0 0 auto; }

总结

Flex 是一种强大且灵活的布局方式,核心在于:

  • 设置主轴方向(flex-direction
  • 控制项目在主轴/交叉轴的对齐方式
  • 利用 flex 属性实现伸缩布局
  • 响应式设计中的利器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/76517.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LEARNING DYNAMICS OF LLM FINETUNING【论文阅读笔记】

LEARNING DYNAMICS OF LLM FINETUNING 一句话总结 作者将LLM的学习动力机制拆解成AKG三项,并分别观察了SFT和DPO训练过程中​​正梯度信号​​和​​负梯度信号​​的变化及其带来的影响,并得到以下结论: ​​SFT通过梯度相似性间接提升无关…

Mac 下载 PicGo 的踩坑指南

Mac 下载 PicGo 的踩坑指南 一、安装问题 下载地址:https://github.com/Molunerfinn/PicGo/releases 下载之后直接安装即可,此时打开会报错:Picgo.app 文件已损坏,您应该将它移到废纸篓。 这是因为 macOS 为了保护用户不受恶意…

Element UI 设置 el-table-column 宽度 width 为百分比无效

问题描述: 想要每列宽度不同,不想使用 px 固定值,将 width 设置成百分比,但是每一列还是很窄 原因: el-table 组件会被 vue 解析成 html,vue 直接把百分号去掉把数值当做列宽来呈现,所以&#x…

第五篇:Python面向对象编程(OOP)深度教程

1. 类与对象 1.1 基本概念 ​​类​​是创建对象的蓝图,定义了对象的​​属性​​(数据)和​​方法​​(行为)。​​对象​​是类的实例化实体,每个对象拥有独立的属性值和共享的类方法 ​​示例​​:定义Dog类 class Dog:species = "Canis familiaris" …

【数据结构】2.顺序表实现通讯录

文章目录 一、通讯录的要求二、通讯录的具体实现0、 准备工作1、通讯录的初始化2、通讯录的销毁3、通讯录的展示4、通讯录添加数据5、通讯录删除数据6、通讯录的查找7、通讯录的修改8、保存通讯录数据到文件9、读取文件内容到通讯录 三、 通讯录的完整实现 一、通讯录的要求 通…

程序化广告行业(79/89):技术革新与行业发展脉络梳理

程序化广告行业(79/89):技术革新与行业发展脉络梳理 大家好!一直以来,我都热衷于在技术领域不断探索,也深知知识共享对于进步的重要性。写这篇博客,就是希望能和大家一起深入研究程序化广告行业…

【C++游戏引擎开发】第9篇:数学计算库GLM(线性代数)、CGAL(几何计算)的安装与使用指南

写在前面 两天都没手搓实现可用的凸包生成算法相关的代码,自觉无法手搓相关数学库,遂改为使用成熟数学库。 一、GLM库安装与介绍 1.1 vcpkg安装GLM 跨平台C包管理利器vcpkg完全指南 在PowerShell中执行命令: vcpkg install glm# 集成到系…

python文件打包无法导入ultralytics模块

💥打包的 .exe 闪退了?别慌!教你逐步排查 PyInstaller 打包的所有错误! 🛠 运行 .exe 查看报错信息✅ 正确姿势: ⚠ importlib 动态导入导致打包失败❓什么是动态导入?✅ 解决方式: …

【React框架】什么是 Vite?如何使用vite自动生成react的目录?

什么是 Vite? Vite 是一个基于原生 ES Modules 开发的前端构建工具,由 Evan You(Vue 的作者)开发。它最大的特点包括: 极速冷启动:因为利用了浏览器原生的 ES Modules,所以在开发时无需等待整…

深入解读 React 纯组件(PureComponent)

什么是纯组件? React 的纯组件(PureComponent)是 React.Component 的一个变体,它通过浅比较(shallow comparison)props 和 state 来自动实现 shouldComponentUpdate() 方法,从而优化性能。 核心特点 1. 自动浅比较: PureCompon…

JavaScript数组方法:`some()`的全面解析与应用

文章目录 JavaScript数组方法:some()的全面解析与应用一、some()方法的基本概念语法参数说明返回值 二、some()方法的核心特点三、基础用法示例示例1:检查数组中是否有大于10的元素示例2:检查字符串数组中是否包含特定子串 四、实际应用场景1…

判断两个 IP 地址是否在同一子网 C

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> // 将点分十进制的 IP 地址转换为 32 位无符号整数 unsigned int ip_to_uint(const char *ip) { struct in_addr addr; if (inet_pton(AF_INET, ip, &am…

React 组件样式

在这里插入图片描述 分为行内和css文件控制 行内 通过CSS中类名文件控制

尚硅谷Java第 4、5 章IDEA,数组

第 4 章&#xff1a;IDEA的使用 第 5 章&#xff1a;数组 5.1 数组的概述 数组(Array)&#xff1a;就可以理解为多个数据的组合。 程序中的容器&#xff1a;数组、集合框架&#xff08;List、Set、Map&#xff09;。 数组中的概念&#xff1a; 数组名 下标&#xff08;或索…

SQL注入基本原理靶场实现

↵ 一、前言 SQL注入漏洞(SQL injection)是WEB层面高危的漏洞之一&#xff0c;也是常见的攻击方式。 二、本质 1、什么是SQL注入 SQL 注入是一种利用应用程序对用户输入数据过滤不严格&#xff0c;将恶意 SQL 代码插入到正常 SQL 语句中&#xff0c;从而操控数据库查询逻辑的…

图像预处理(OpenCV)

1 图像翻转(图像镜像旋转) 在OpenCV中&#xff0c;图片的镜像旋转是以图像的中心为原点进行镜像翻转的。 cv2.flip(img,flipcode) 参数 img: 要翻转的图像 flipcode: 指定翻转类型的标志 flipcode0: 垂直翻转&#xff0c;图片像素点沿x轴翻转 flipcode>0: 水平翻转&…

PCDN收益高低的关键因素

PCDN&#xff08;P2P内容分发网络&#xff09;收益好的三个主要关键因素是&#xff1a;硬件配置与性能、网络环境与质量、业务调度与策略。 1. 硬件配置与性能 设备稳定性与兼容性 PCDN节点需长时间稳定运行&#xff0c;硬件性能直接影响收益。例如&#xff0c;使用高性能CPU、…

『生成内容溯源系统』详解

生成内容溯源系统详解 1. 定义与核心目标 生成内容溯源系统&#xff08;Generative Content Provenance System&#xff09;是指能够追踪AI生成内容的来源、生成过程、版权归属及修改历史的技术体系。其核心目标是&#xff1a; 验证真实性&#xff1a;证明内容由特定AI模型生…

conda如何安装和运行jupyter

在Conda环境中安装和运行Jupyter Notebook是一项常见且实用的任务&#xff0c;特别是在数据科学和机器学习项目中。以下是使用Conda安装和运行Jupyter Notebook的步骤&#xff1a; 安装Jupyter Notebook 首先&#xff0c;确保你的Conda是最新的。打开终端或Anaconda Prompt&a…

QML之Flickable(滚动区域)

Flickable 是 QML 中用于创建可滚动区域的基础组件&#xff0c;它比 ScrollView 提供更底层的控制&#xff0c;适合需要自定义滚动行为的场景。 基本用法 qml import QtQuick 2.15Flickable {width: 200height: 200contentWidth: 400 // 内容总宽度contentHeight: 800 // 内…