当前位置: 首页 > news >正文

【CSS】flex布局

Flex 布局(也称为 弹性盒子布局)。

Flexible Box 模型,通常称为 Flexbox,是一种为一维布局设计的 CSS 布局模式。它旨在提供一种更有效的方式来对容器中的元素进行排列、对齐和分配空间,即使它们的大小是未知或动态的。

文章目录

      • 一、什么是 Flex 布局?
      • 二、基本概念和术语
      • 三、Flex 容器的属性(作用于父元素)
      • 四、Flex 项目的属性(作用于子元素)
      • 五、一个完整的示例
      • 总结

一、什么是 Flex 布局?

核心思想:通过赋予容器控制其子元素(弹性项目)高度/宽度和顺序的能力,来填充可用空间。其核心是让容器能够改变其子项目的宽度、高度和顺序,以最佳方式填充可用空间(主要是为了适应各种显示设备和屏幕尺寸)。

主要特征

  • 一维布局:Flex 布局一次只能处理一个维度(行或列)上的布局。这与处理行和列的 CSS Grid(二维布局)形成对比。
  • 两个轴:Flex 布局基于主轴交叉轴
    • 主轴:由 flex-direction 属性定义的方向(默认为水平,从左到右)。
    • 交叉轴:与主轴垂直的方向。

二、基本概念和术语

要使用 Flex 布局,你需要理解两个基本组件:

  1. Flex 容器:设置了 display: flexdisplay: inline-flex 的父元素。
  2. Flex 项目:Flex 容器内的直接子元素。
<div class="flex-container">  <!-- Flex 容器 --><div class="flex-item">项目 1</div>  <!-- Flex 项目 --><div class="flex-item">项目 2</div>  <!-- Flex 项目 --><div class="flex-item">项目 3</div>  <!-- Flex 项目 -->
</div>

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

这些属性控制着容器内所有项目的整体行为。

属性作用常用值
display定义一个 Flex 容器。flex(块级容器)
inline-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定义了多根轴线的对齐方式(多行)。如果项目只有一根轴线,该属性不起作用。stretch,
flex-start,
flex-end,
center,
space-between,
space-around,
space-evenly

flex-flow 简写属性:是 flex-directionflex-wrap 的简写形式。

  • 语法:flex-flow: <flex-direction> || <flex-wrap>;
  • 示例:flex-flow: row wrap;

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

这些属性控制单个项目在容器内的行为。

属性作用常用值
order定义项目的排列顺序。数值越小,排列越靠前,默认为 0。<integer>(整数,如 -1, 0, 1, 2)
flex-grow定义项目的放大比例,默认为 0(即如果存在剩余空间,也不放大)。<number>(数字,如 0, 1, 2)
flex-shrink定义项目的缩小比例,默认为 1(即如果空间不足,该项目将缩小)。<number>(数字,如 0, 1, 2)
flex-basis定义在分配多余空间之前,项目占据的主轴空间。浏览器根据这个属性计算是否有多余空间。auto(默认,项目本来的大小), 长度值(如 20%, 250px
align-self允许单个项目有与其他项目不一样的对齐方式,可覆盖 align-items 属性。auto(继承父容器的 align-items), stretch, flex-start, flex-end, center, baseline

flex 简写属性:是 flex-grow, flex-shrinkflex-basis 的简写。

  • 语法:flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
  • 推荐使用简写,因为它可以智能地设置其他值。
  • 常用值:
    • flex: initial:等同于 flex: 0 1 auto。(不放大,可缩小,初始大小)
    • flex: auto:等同于 flex: 1 1 auto。(可放大,可缩小)
    • flex: none:等同于 flex: 0 0 auto。(不放大,不缩小)
    • flex: 1:等同于 flex: 1 1 0%。(常用,平均分配空间)

五、一个完整的示例

<!DOCTYPE html>
<html lang="zh-CN">
<head><style>.container {display: flex; /* 定义 Flex 容器 */flex-direction: row; /* 主轴为水平方向 */flex-wrap: wrap; /* 允许换行 */justify-content: space-around; /* 主轴对齐方式 */align-items: center; /* 交叉轴对齐方式(单行) */height: 200px;background-color: #f0f0f0;}.item {flex: 1; /* 每个项目可伸缩,平均分配空间 */min-width: 100px; /* 设置最小宽度,防止过小 */height: 60px;margin: 10px;background-color: tomato;text-align: center;line-height: 60px;color: white;}.item-special {flex: 2; /* 这个项目占据的空间是其他的两倍 */background-color: steelblue;align-self: flex-end; /* 这个项目自己底部对齐 */}</style>
</head>
<body><div class="container"><div class="item">1</div><div class="item">2</div><div class="item item-special">3 (特殊)</div><div class="item">4</div></div>
</body>
</html>

总结

Flex 布局是现代 CSS 的基石,它极大地简化了以往非常棘手的布局问题(如垂直居中、等高布局、圣杯布局等)。掌握 Flex 布局是前端开发者的必备技能。

http://www.dtcms.com/a/418889.html

相关文章:

  • 【论文阅读】具身人工智能:从大型语言模型到世界模型
  • 【论文阅读】Segment Anything
  • 大连网站制作仟亿科技wordpress免费网站模板下载
  • 商城网站开发的任务书网址大全2345
  • 八、安装 Hadoop
  • 华为电脑 银河麒麟系统 使用CrossOver安装微软Office2016
  • 设计模式(C++)详解——迭代器模式(3)
  • 做58网站怎么赚钱吗公司起名字大全免费四个字
  • 基于Python的CrewAI多智能体协同写作助手
  • 按月付费网站建设网站建设学那些课程
  • Nginx原生模快和Nginx平滑升级
  • 响应模板作为特殊标记(107)
  • 【langgraph】确保用户不覆盖langgraph-api 包实现及dockerfile分析
  • 重庆那家做网站做得好长尾关键词是什么
  • RabbitMQ 在 Windows 环境下启动失败的完整解决方案
  • 公司响应式网站asp sql网站安全性
  • Swagger 3.0 + Knife4j 入门到实战:Spring Boot API 文档搭建、注解详解与生产环境配置
  • Spring Boot 自动配置之 Spring‘s AOP
  • 基于单片机的直流电机控制系统(论文+源码)
  • 步进电机上电瞬间异常微动分析与常见类似问题解析
  • cms网站是什么怎么建好网站
  • 网站后台帐号密码破解贵阳网站设计报价
  • FFmpeg过滤器实战:混音
  • docker desktop镜像无法加载问题
  • CrashHandler 崩溃处理工具类(兼容 Android 16+ / API 16)捕获未处理异常、本地存储崩溃日志、上传日志到服务器
  • K8s学习----节点(Node)
  • 网站常用文件夹网站建设 月嫂 模板
  • 做整合营销的网站天津网站制作专业
  • gitlab定时备份
  • 企业网站源码怎么获取html家乡网页完整代码