【CSS3】Flex弹性布局

news2024/11/24 21:50:05

文章目录

  • 前言
  • 一、基本概念
    • 1.容器和项目:
    • 2.主轴和交叉轴:
  • 二、容器属性
    • 1.flex-direction:决定主轴的方向,即x轴还是y轴
    • 2.flex-wrap:定义项目的换行方式
    • 3.flex-flow:flex-direction属性和flex-wrap属性的简写形式
    • 4.justify-content:定义项目在主轴上的对齐方式
    • 4.align-items:定义项目在交叉轴上的对齐方式
  • 三、项目属性
    • 1.order:定义项目的排列次序
    • 2.flex-grow:定义项目的放大比例
    • 3.flex-shrink:定义项目的缩小比例
    • 4.flex-basis:定义项目在分配多余空间之前的默认大小
    • 5.flex:flex-grow、flex-shrink和flex-basis的简写形式
    • 6.align-self:允许单个项目在交叉轴上覆盖容器的align-items属性进行对齐
  • 四、应用场景
  • 五、完结撒花


前言

弹性布局(Flexible Layout),也称为Flexbox布局,是CSS3主推的一种布局方式!!!


提示:以下是本篇文章正文内容,下面案例可供参考

一、基本概念

1.容器和项目:

使用display: flex;布局的元素(父元素)称为“容器”,其所有子元素自动成为容器成员,称为“项目”。容器和项目是弹性布局的基本组成单位,它们各自拥有控制布局的属性。

2.主轴和交叉轴:

主轴是项目的排列方向,可以是水平方向(x轴)或垂直方向(y轴)。交叉轴则是与主轴垂直的轴,即绕主轴顺时针旋转90°得到的轴。

在复杂布局中,元素既可以是容器也可以是项目。

二、容器属性

1.flex-direction:决定主轴的方向,即x轴还是y轴

可选值解释
row从左到右(默认值)
row-reverse从右到左
column从上到下
column-reverse从下到上

示例效果:
flex-direction: row;
在这里插入图片描述
flex-direction: row-reverse;
在这里插入图片描述
flex-direction: column;
在这里插入图片描述
flex-direction: column-reverse;
在这里插入图片描述

2.flex-wrap:定义项目的换行方式

可选值解释
nowrap不换行(默认值)
wrap换行,第一行在上方
wrap-reverse换行,第一行在下方

示例效果:(主轴方向:默认从左到右)
flex-wrap: nowrap;
在这里插入图片描述
flex-wrap: wrap;
在这里插入图片描述
flex-wrap: wrap-reverse;
在这里插入图片描述

3.flex-flow:flex-direction属性和flex-wrap属性的简写形式

比如实现水平从左到右排列,自动换行,第一行在上方,可自行尝试。

4.justify-content:定义项目在主轴上的对齐方式

可选值解释
flex-start起点对齐(默认值)
flex-end终点对齐
center居中对齐
space-between两端对齐,项目之间的间隔相等
space-around每个项目两侧的间隔相等,项目之间的间隔比项目与边框的间隔大一倍

示例效果:(主轴方向:默认从左到右)
justify-content: flex-start ;
在这里插入图片描述
justify-content: flex-end;
在这里插入图片描述
justify-content: space-between;
在这里插入图片描述
justify-content: space-around;
在这里插入图片描述
justify-content: center;
在这里插入图片描述

4.align-items:定义项目在交叉轴上的对齐方式

可选值解释
flex-start起点对齐
flex-end终点对齐
center中点对齐
baseline项目的第一行文字的基线对齐
stretch默认值,如果项目未设置高度或设为auto,将占满整个容器的高度

示例效果:(主轴方向:默认从左到右)
align-items: flex-start;
在这里插入图片描述
align-items: flex-end;
在这里插入图片描述
align-items: baseline;
在这里插入图片描述
align-items: center;
在这里插入图片描述

ps:以上属性均添加在设置display: flex;属性的元素中。

三、项目属性

1.order:定义项目的排列次序

数值越大排的越靠后,默认为0

2.flex-grow:定义项目的放大比例

  • 默认为0,即如果存在剩余空间,也不放大。
  • 当项目设置了该属性之后,原来的宽度或高度失效。
  • 父元素有多余的空间时,设置放大比例的元素会按照比例占据多余空间;当父元素空间不足时,项目会同等比例缩小。

示例效果:(主轴方向:默认从左到右)
设定flex父容器宽度为1200px,按如下设置项目的flex-grow属性
1:flex-grow: 1;
2:flex-grow: 2;
3:flex-grow: 3;
在这里插入图片描述

3.flex-shrink:定义项目的缩小比例

  • 默认为1,负值无效。
  • 当容器空间不足时,设置了flex-shrink属性的项目会按照比例缩小。
  • flex-shrink为0的项目则不会压缩。

4.flex-basis:定义项目在分配多余空间之前的默认大小

5.flex:flex-grow、flex-shrink和flex-basis的简写形式

默认值为0 1 auto。

6.align-self:允许单个项目在交叉轴上覆盖容器的align-items属性进行对齐

四、应用场景

弹性布局广泛应用于移动端网页开发,具有以下优点:

自适应性:容器与元素的自适应特性使得页面能够快速适应不同尺寸的设备和屏幕分辨率。
灵活性:提供了多种属性来控制布局,可以轻松地调整页面行为。
可读性:语法简洁清晰,易于理解,便于开发者维护和修改。
适合复杂布局:能够更好地满足设计师和开发者的要求,实现更多样化、更灵活的网页布局效果。

五、完结撒花

学习并不是枯燥无味的,只是我们不懂得从中寻找快乐罢了。
在这里插入图片描述

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

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

相关文章

简述C++map容器

pair键值对 std::pair在很多关联容器(如std::map、std::multimap、std::set、std:multiset等)中被广泛应用。以std::map为例,std::map是一个键值对的容器,其中每个元素都是一个std::pair,键用于唯一标识元…

刷题计划 day22回溯(一)【组合】【组合总和 III】【电话号码的字母组合】

⚡刷题计划day22 回溯(一)开始,此期开启回溯专题,敬请期待关注,可以点个免费的赞哦~ 往期可看专栏,关注不迷路, 您的支持是我的最大动力🌹~ 目录 回溯算法理论基础 回溯法解决的…

Qt桌面应用开发 第六天(鼠标事件 定时器事件 定时器类 事件分发器 事件过滤器)

目录 1.1鼠标进入和离开enterEvent\leaveEvent 1.2鼠标按下释放和移动mousePressEvent\mouseReleaseEvent\mouseMoveEvent 1.3定时器事件timerEvent 1.4定时器类QTimer 1.5事件分发器event 1.6事件过滤器eventFilter 1.1鼠标进入和离开enterEvent\leaveEvent 事件&#x…

【Linux清空显存占用】Linux 系统中清理 GPU 显存

操作指令 # 查看NVIDIA GPU状态和进程 nvidia-smi # 查找所有包含"python"的进程 ps -ef | grep python # 强制结束进程号为3023的进程 kill -9 3023截图演示 在 Linux 系统中清理 GPU 显存可以采用以下方法: 1. 终止特定进程(常用方法&…

对撞双指针(七)三数之和

15. 三数之和 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组…

vue2-基础核心

vue简介 动态构建用户界面的渐进式 JavaScript 框架 vue的特点: 遵循MVVM模式 采用组件化模式,提高代码复用率,让代码更好维护 声明式编码,无需直接操作DOM,提高开发效率,编码简洁、体积小,运行效率高 本…

Prompting LLMs to Solve Complex Tasks: A Review

文章目录 题目简介任务分解未来方向结论 题目 促使 LLM 解决复杂任务: 综述 论文地址:https://www.intjit.org/cms/journal/volume/29/1/291_3.pdf 简介 大型语言模型 (LLM) 的最新趋势显而易见,这体现在大型科技公司的投资以及媒体和在线社…

反射、依赖注入

特性和依赖注入都是基于反射的,同时反射一般和接口配合着使用。 接口隔离原则 接口隔离原则:主张应该把客户端对一个类的需求分解成更小、更具体的接口,而不是提供一个包含所有功能的大接口。 接口中的需求是:乙方不能少给&am…

MT8768/MTK8768安卓核心板性能参数_联发科安卓智能模块开发方案

MT8768安卓核心板 是一款采用台积电12nm FinFET制程工艺的智能手机芯片。MT8768核心板不仅提供所有高级功能和出色体验,同时确保智能终端具备长电池寿命。该芯片提供了一个1600x720高清(20:9比例)分辨率显示屏,排除了清晰度和功耗之间的平衡问题。该芯片…

VBA技术资料MF229:以毫米为单位设置行高和列宽

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套,分为初级、中级、高级三大部分,教程是对VBA的系统讲解&#…

深入JMeter核心引擎:揭秘JmeterEngine、StandardJmeterEngine、ClientJmeterEngine与Remote的奥秘

引言 Apache JMeter是一款广泛使用的开源性能测试工具,它能够帮助开发者和测试人员模拟大量并发用户对应用程序进行负载测试。JMeter的强大功能和灵活性源于其精心设计的核心引擎。本文将深入探讨JMeter的核心引擎,包括JmeterEngine、StandardJmeterEng…

软件工程导论 选填题知识点总结

一 原型化方法是一种动态定义需求的方法,提供完整定义的需求不是原型化方法的特征,其特征包括尽快建立初步需求、简化项目管理以及加强用户参与和决策。 软件危机的表现包括用户对已完成的软件系统不满意的现象经常发生、软件产品的质量往往靠不住、软件…

Rust中Tracing 应用指南

欢迎来到这篇全面的Rust跟踪入门指南。Rust 的tracing是一个用于应用程序级别的诊断和调试的库。它提供了一种结构化的、异步感知的方式来记录日志和跟踪事件。与传统的日志记录相比,tracing能够更好地处理复杂的异步系统和分布式系统中的事件跟踪,帮助开…

机器学习实战:银行客户是否认购定期存款

项目结构与步骤 1. 项目概述 项目名称:葡萄牙银行电话营销活动分析与定期存款认购预测目标:通过分析银行的电话营销数据,构建模型预测客户是否会认购定期存款。数据来源:葡萄牙银行营销活动数据集关键挑战:数据不平衡…

服务器数据恢复—raid5阵列热备盘上线失败导致EXT3文件系统不可用的数据恢复案例

服务器数据恢复环境: 两组分别由4块SAS硬盘组建的raid5阵列,两组阵列划分的LUN组成LVM架构,格式化为EXT3文件系统。 服务器故障: 一组raid5阵列中的一块硬盘离线。热备盘自动上线替换离线硬盘,但在热备盘上线同步数据…

C++vector

Cvector是标准库中的一员,vector直译过来是“向量”、“矢量”的意思,在C中,是一个动态的数组容器,可以动态的开辟空间,自动实现内存的管理,不需要我们手动操作,在标准库中,写作一个…

“漫步北京”小程序及“气象景观数字化服务平台”上线啦

随着科技的飞速发展,智慧旅游已成为现代旅游业的重要趋势。近日,北京万云科技有限公司联合北京市气象服务中心,打造的“气象景观数字化服务平台“和“漫步北京“小程序已经上线,作为智慧旅游的典型代表,以其丰富的功能…

LlamaIndex+本地部署InternLM实践

LlamaIndex本地部署InternLM实践 XTuner是一个调整模型参数的小工具,通过对于给定的大模型输入有限的参数来调整同类型问题的结果输出 ‌LlamaIndex‌是一个将大语言模型(LLMs)和外部数据连接在一起的工具,主要用于增强大模型的知识获取能力…

【阵列信号处理】相干信号和非相干信号生成

文章目录 一、总结二、知识点相干(coherent)和非相干(incoherent)信号相干信号生成代码 相关信号(correlated signal)相关信号生成代码 正交信号定义 本文记录博主的科研日记。如果对博主的其他文章感兴趣&…

vue3项目部署在阿里云轻量应用服务器上

文章目录 概要整体部署流程技术细节小结 概要 vue3前端项目部署在阿里云轻量服务器 整体部署流程 首先有一个Vue3前端项目和阿里云应用服务器 确保环境准备 如果是新的服务器,在服务器内运行以下命令更新软件包 sudo apt update && sudo apt upgrade -y …