CSS【详解】弹性布局 flex

适用场景

一维(行或列)布局

基本概念

  • 包裹所有被布局元素的父元素为容器

    在这里插入图片描述

  • 所有被布局的元素为项目

    在这里插入图片描述

  • 项目的排列方向(垂直/水平)为主轴

  • 与主轴垂直的方向交交叉轴

在这里插入图片描述

容器上启用 flex 布局

将容器的 display 样式设置为 flexinline-flex

排列方向 flex-direction

  • row(默认值):从左到右水平排列,此时主轴为水平方向在这里插入图片描述

  • row-reverse:从右到左水平排列,此时主轴为水平方向

    在这里插入图片描述

  • column:从上到下垂直排列,此时主轴为垂直方向
    在这里插入图片描述

  • column-reverse:从下到上垂直排列,此时主轴为垂直方向
    在这里插入图片描述

换行 flex-wrap

  • nowrap(默认值):不换行,项目可能被压缩或溢出容器。

    在这里插入图片描述

  • wrap:换行,第二行在第一行下方(水平排列时)
    在这里插入图片描述

  • wrap-reverse:换行,第二行在第一行上方(水平排列时)。
    在这里插入图片描述

主轴上的对齐方式 justify-content

  • flex-start(默认值):项目靠主轴起点对齐。
  • flex-end:项目靠主轴终点对齐
  • center:项目在主轴上居中对齐
  • space-between:项目两端对齐,间隔均匀分布
  • space-around:项目周围间隔均匀分布(两端间隔为中间的一半)
  • space-evenly:项目之间及两端间隔完全相等

在这里插入图片描述

交叉轴的对齐方式 align-items

交叉轴即与主轴垂直的方向

  • stretch(默认值):项目拉伸以填满交叉轴。
  • flex-start:项目靠交叉轴起点对齐。
  • flex-end:项目靠交叉轴终点对齐。
  • center:项目在交叉轴上居中对齐。
  • baseline:项目基于文本基线对齐。
    在这里插入图片描述

多行的对齐方式 align-content

仅在 flex-wrap: wrap 生效

  • flex-start:多行靠交叉轴起点对齐。
  • flex-end:多行靠交叉轴终点对齐。
  • center:多行在交叉轴上居中对齐。
  • stretch:多行拉伸以填满交叉轴剩余空间。
  • space-between:多行两端对齐,间隔均匀分布。
  • space-around:多行周围间隔均匀分布。
  • space-evenly:多行之间及两端间隔完全相等。
.container {display: flex;flex-wrap: wrap;align-content: space-around;
}

在这里插入图片描述

项目上添加 flex 特性

放大 flex-grow

  • 定义项目在容器有剩余空间时的放大比例,默认值为 0(不放大)。
  • 给容器添加 min-width: 0overflow: auto;可防止内容撑开容器。
.item {flex-grow: 1; /* 项目将按比例分配剩余空间 */
}

在这里插入图片描述

缩小 flex-shrink

定义项目在容器空间不足时的缩小比例,默认值为 1(按比例缩小)。

.item {flex-shrink: 0; /* 项目不缩小,可能导致溢出 */
}

在这里插入图片描述
在这里插入图片描述

初始大小 flex-basis

定义项目在分配剩余空间之前的初始大小,可以是长度值(如 200px)或百分比(如 50%),默认值为 auto(根据内容大小自动调整)。

.item {flex-basis: 100px; /* 项目初始宽度为 100px */
}

调整项目交叉轴的对齐方式 align-self

优先级高于容器的 align-items

.item {align-self: flex-end; /* 该项目在交叉轴上靠终点对齐 */
}

在这里插入图片描述

排序 order

项目的排列顺序。数值越小,排列越靠前,默认为0

在这里插入图片描述

简写

flex

flexflex-growflex-shrinkflex-basis 的简写属性,常用写法:

  • flex: 1:等同于 flex: 1 1 0%,表示项目放大、缩小且初始大小为内容大小。
  • flex: 0 1 auto:表示项目不放大、按比例缩小且初始大小为内容大小。
.item {flex: 1;
}
  • flex: initial、flex:0、flex:1、flex:none、flex:auto的区别和使用场景
    https://blog.csdn.net/weixin_41192489/article/details/120846362

flex-flow

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

深度详解

剩余空间分配规则

flex-grow,flex-shrink和flex-basis
https://blog.csdn.net/weixin_41192489/article/details/120842902

实战范例

绘制骰子

https://blog.csdn.net/weixin_41192489/article/details/136398234

水平居中导航栏

<nav class="flex justify-center space-x-4"><a href="#">首页</a><a href="#">产品</a><a href="#">关于我们</a>
</nav>
nav {display: flex;justify-content: center;gap: 16px;
}

垂直居中卡片

<div class="flex items-center justify-center h-screen bg-gray-200"><div class="bg-white p-8 rounded shadow-md"><h2 class="text-2xl font-bold mb-4">欢迎使用</h2><p>这是一个垂直居中的卡片。</p></div>
</div>
body {margin: 0;
}

响应式列布局

<div class="flex flex-wrap"><div class="w-full md:w-1/2 lg:w-1/3 p-4">内容1</div><div class="w-full md:w-1/2 lg:w-1/3 p-4">内容2</div><div class="w-full md:w-1/2 lg:w-1/3 p-4">内容3</div>
</div>
@media (min-width: 768px) {.w-1/2 {flex: 0 0 50%;max-width: 50%;}
}
@media (min-width: 1024px) {.w-1/3 {flex: 0 0 33.33%;max-width: 33.33%;}
}

实战技巧

  • 使用margin:auto智能分配剩余空间
    https://blog.csdn.net/weixin_41192489/article/details/120834852
  • flex-grow 自适配宽度避免内容超出挤压两侧的最佳实践
    https://blog.csdn.net/weixin_41192489/article/details/139058300

注意事项

  • Flex 与 floatclear 冲突:Flex 项目自动脱离文档流,floatclear 属性对其无效。

  • 浏览器兼容性:主流浏览器(Chrome、Firefox、Safari、Edge)均支持 Flex 布局,但需注意对旧版浏览器(如 IE10 及以下)添加前缀(-webkit-, -ms-)。

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

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

相关文章

全能视频处理工具介绍说明

软件介绍 本文介绍的软件是FFmpeg小白助手&#xff0c;它是一款视频处理工具。 使用便捷性 这款FFmpeg小白助手无需安装&#xff0c;解压出来就能够直接投入使用。 主要功能概述 该工具主要具备格式转换、文件裁剪、文件压缩、文件合并这四大功能。 格式转换能力 软件支持…

Linux中的DNS的安装与配置

DNS简介 DNS&#xff08;DomainNameSystem&#xff09;是互联网上的一项服务&#xff0c;它作为将域名和IP地址相互映射的一个分布式数据库&#xff0c;能够使人更方便的访问互联网。 DNS使用的是53端口 通常DNS是以UDP这个较快速的数据传输协议来查询的&#xff0c;但是没有查…

tshark的使用技巧(wireshark的命令行,类似tcpdump):转换格式,设置filter

tshark的使用技巧&#xff08;wireshark的命令行&#xff0c;类似tcpdump&#xff09;&#xff1a;转换格式&#xff0c;设置filter tshark一般在 C:\Program Files\Wireshark 使用管理员权限 打开cmd tshark -D 列出支持抓包的接口&#xff1a; c:\Program Files\Wiresh…

vscode打开的文件被覆盖/只能打开两个文件(Visual Studio Code)

vscode打开的文件被覆盖/只能打开两个文件&#xff08;Visual Studio Code&#xff09; 单击代码文件&#xff1a;是预览模式&#xff0c;只会显示有限的一两个文件&#xff0c;在一个tab里更新显示 双击代码文件&#xff1a;是编辑模式&#xff0c;可以同时显示多个代码文件…

唯创安全优化纸业车间安全环境:门口盲区预警报警器的应用与成效

一、客户现场 客户主要从事于卷烟纸、成型纸、烟草制造业用纸及其他特定用途纸类制品的加工、生产与销售。在其厂区内&#xff0c;叉车频繁作业&#xff0c;车间环境复杂。经实地查看&#xff0c;发现几大安全隐患&#xff1a; 门口拐角隐患&#xff1a;门口拐角处因卷帘门阻…

Debezium快照事件监听器系统设计

Debezium快照事件监听器系统设计 1. 系统概述 1.1 设计目标 为 Debezium 的快照过程提供可扩展的事件监听机制允许外部系统在快照过程中执行自定义逻辑提供线程安全的事件分发机制确保监听器的异常不会影响主快照流程1.2 核心功能 表快照开始事件监听表快照完成事件监听行数据…

Ubuntu 20.04安装及配置docker

在安装docker的过程中主要参考博客&#xff1a;ubuntu20.04 安装docker (详细版) 但是在测试&#xff1a; sudo docker run hello-world 时报错&#xff1a; docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request ca…

第23天-Python Flet 开发指南

环境准备 pip install flet 示例1:基础计数器应用 import flet as ftdef main(page: ft.Page):page.title = "计数器"page.vertical_alignment = ft.MainAxisAlignment.CENTERtxt_number = ft.TextField(value="0", text_align=ft.TextAlign.RIGHT, wid…

牛客网NC21989:牛牛学取余

牛客网NC21989:牛牛学取余 &#x1f4dd; 题目描述 ⏱️ 限制条件 时间限制&#xff1a;C/C/Rust/Pascal 1秒&#xff0c;其他语言2秒空间限制&#xff1a;C/C/Rust/Pascal 32 M&#xff0c;其他语言64 M输入范围&#xff1a;两个整数&#xff0c;在int范围内 &#x1f4e5;…

unity XCharts插件生成曲线图在UICanvas中

【推荐100个unity插件之22】基于UGUI的功能强大的简单易用的Unity数据可视化图表插件——XCharts3.0插件的使用_unity xcharts-CSDN博客

自动驾驶传感器数据处理:Python 如何让无人车更智能?

自动驾驶传感器数据处理:Python 如何让无人车更智能? 1. 引言:为什么自动驾驶离不开数据处理? 自动驾驶一直被誉为人工智能最具挑战性的应用之一,而其背后的核心技术正是 多传感器融合与数据处理。 一辆智能驾驶汽车,通常搭载: 激光雷达(LiDAR) —— 3D 环境感知,…

MCU 上电不启动的常见原因分析与排查思路

在开发过程中&#xff0c;“MCU 上电不运行”是我们经常遇到的问题之一。但客户对此类问题的描述往往较为模糊&#xff0c;仅简单表示“产品不工作”或“怀疑 MCU 没有运行”&#xff0c;这给我们现场排查带来了较大的挑战。即便工程师到达现场&#xff0c;往往也无法迅速定位问…

React中使用 Ant Design Charts 图表

// 引入 Ant Design Charts 的柱状图组件 Column import { Column } from ant-design/charts;// 定义函数组件 App&#xff0c;用于展示柱状图 function App() {// 数据源&#xff1a;每个对象代表一个柱子&#xff0c;包含类型&#xff08;type&#xff09;和销售额&#xff0…

30、WebAssembly:古代魔法——React 19 性能优化

一、符文编译术&#xff08;编译优化&#xff09; 1. 语言选择与量子精简 // Rust编译优化 cargo build --target wasm32-wasi --release 魔法特性&#xff1a; • 选择低运行时开销语言&#xff08;如Rust/C&#xff09;&#xff0c;编译后文件比Swift小4倍 • --rel…

初识计算机网络。计算机网络基本概念,分类,性能指标

初识计算机网络。计算机网络基本概念&#xff0c;分类&#xff0c;性能指标 本系列博客源自作者在大二期末复习计算机网络时所记录笔记&#xff0c;看的视频资料是B站湖科大教书匠的计算机网络微课堂&#xff0c;祝愿大家期末都能考一个好成绩&#xff01; 视频链接地址 一、…

深入理解 MongoDB 的 _id 和 ObjectId:从原理到实践

在 MongoDB 的世界中&#xff0c;_id 字段和 ObjectId 是每个开发者都必须理解的核心概念。作为 MongoDB 文档的唯一标识符&#xff0c;它们不仅影响着数据库的设计&#xff0c;也直接关系到应用的性能和扩展性。本文将全面剖析 _id 和 ObjectId 的工作原理、实际应用场景以及最…

计算机视觉与深度学习 | Python实现ARIMA-WOA-CNN-LSTM时间序列预测(完整源码和数据

以下是一个结合ARIMA、鲸鱼优化算法(WOA)、CNN和LSTM进行时间序列预测的Python实现框架。由于完整代码和数据量较大,此处提供核心代码结构和示例数据集,您可根据需求扩展。 1. 数据准备(示例数据) 使用airline-passengers.csv(航空乘客数据集): import pandas as pd…

【project】--基于大数据离线数仓技术检测网站流量

文章目录 项目介绍项目指标1)页面浏览量&#xff08;PV&#xff09;&#xff1a;2)独立访客数&#xff08;UV&#xff09;&#xff1a;3)每小时环比增长&#xff1a;4)每小时同比增长&#xff1a;5)跳出率&#xff08;Bounce Rate&#xff09;&#xff1a; 环境搭建 项目介绍 …

Cross-Site Scripting(XSS)

1. XSS介绍 跨站脚本攻击&#xff08;Cross-Site Scripting&#xff09;简称XSS&#xff0c;人们经常将跨站脚本攻击&#xff08;Cross Site Scripting&#xff09;缩写为CSS&#xff0c;但这会与层叠样式表&#xff08;Cascading Style Sheets&#xff0c;CSS&#xff09;的缩…

【HTML-1】HTML骨架标签:构建网页的基础框架

在网页开发的世界中&#xff0c;HTML&#xff08;超文本标记语言&#xff09;是构建所有网站的基石。而HTML骨架标签则是这个基石中最基础、最重要的部分&#xff0c;它们构成了每个网页的基本框架。无论你是刚入门的前端开发者&#xff0c;还是经验丰富的全栈工程师&#xff0…