对齐控制大作战:align-content 和 align-items,到底谁才是真正的垂直大将?

news2024/11/24 8:25:47

在这里插入图片描述


🧑‍💼 个人简介:一个不甘平庸的平凡人🍬
🖥️ Node专栏:Node.js从入门到精通
🖥️ TS知识总结:十万字TS知识点总结
👉 你的一键三连是我更新的最大动力❤️!
📢 欢迎私信博主加入前端交流群🌹


📑 目录

  • 前言
  • - flex 中的应用
  • - align-content
  • - align-items
  • - align-self
  • - 总结
  • 结语


前言

CSS 属性繁多,布局方式也层出不穷,目前最常用的 Flex 和 Grid 布局中有很多相同的属性,但因这两种布局的实现原理和愿景不同,导致它们对属性运用的着重点也不同。

对于经常混用 Flex 和 Grid 这两种布局的小伙伴们来说,可能都会出现将 align-contentalign-item 搞混的情况,即使您从未搞混过它们,您也可能对它们之间的区别和联系一知半解。

其实不只是 align-contentalign-item ,还有 justify-contentjustify-items ,这种成对的 *-content*-items 属性具有相同的性质和区别。

话不多说,让我们一起捋清楚它们的区别和联系吧!

- flex 中的应用

我们先看 align-contentalign-item ,在 flex布局 中:

本文所有效果以下面这个 html 为基础来做演示!

<div class="container">
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
</div>
.container {
  display: flex;
  width: 200px;
  height: 300px;
  background-color: pink;
  flex-wrap: wrap;
  gap: 20px;
}

.item {
  width: 50px;
  height: 50px;
  background-color: aquamarine;
}

上面 CSS 样式中,我们通过 gap 属性设置了项的距离。之前,gap 只能在 Grid 布局中使用,但现在 Flex 布局也已支持该属性!

初始效果:

image-20230527205510987

align-content默认值虽然是normal,但它在 flex 布局中的初始效果stretch,也就是说默认情况下的效果等同于stretch(均匀分布项目)(align-items也是这样)。
所以每个 flex元素 所占的实际大小(这个“实际大小”,我称它为flex元素容器)如上图红色框所示,而绿色的正方形才是我们的真实内容(flex元素)。

这里有三个概念需要理解:

  • flex容器:指的是设置display: flex;的元素,如上面的div.container

  • flex元素:指的是设置display: flex;的元素的直接子元素,如上面的div.item

  • flex元素容器(虚拟概念):每个flex元素的包含块。

    • 主轴上:元素容器与元素尺寸相等,所以在主轴上flex元素容器等同于flex元素

      justify-content是唯一一个用于主轴上对齐的属性,

    • 交叉轴上:大多数情况下flex元素容器与flex元素尺寸是相等的,但也有一些例外,比如上图所示的红色框代表的flex元素容器和绿色的实际内容代表的flex元素在交叉轴上的尺寸就不相等。

    flex元素容器是我为了方便理解交叉轴各属性的功能提出的概念,这个概念与Grid布局中网格单元的概念一致,官方并没有提出flex元素容器这个概念。

- align-content

设置在 flex容器 上

  • align-contentjustify-content 一样,有相同的值,它们都可作用于 flex 容器。用于调整 flex元素容器 的排列方式。

    justify-content 设置的是主轴上的,align-content设置的是交叉轴上的。只有父容器在对应的轴上有剩余空间,它们才能生效。比如:父容器未设置高度,则align-content无效。

  • 该属性对设置了flex-wrap: nowrap;的弹性盒子模型无效。

    flex 布局默认情况下就是 flex-wrap: nowrap;,我们使用 flex 涉及最多的也只是单行情况,所以我们在 flex 布局中使用 align-content 属性比较少。

align-content 各属性效果:

image-20230527211600262

- align-items

设置在 flex容器 上

align-items 其实就是在父容器上统一设置所有直接子元素的 align-self 值,它本身并不具有任何的附加效果,所以我们直接看 align-self 即可。

- align-self

设置在 flex元素 上

设置交叉轴flex元素flex元素容器 中的排列方式。

所以当 align-content 的效果不是 stretchalign-self 无效(因为此时交叉轴上 flex元素flex元素容器 尺寸相等)!

注意align-selfalign-items )是相对于上面我们提出的 flex元素容器 的,不是 flex容器

对应的,在 flex 布局中之所以使用 justify-items 无效,就是因为 flex 布局中 justify-content 的效果永远不可能是 stretch (默认情况下以及设置其值为 stretch 时,表现的效果与 start 相同)!

align-items 各属性效果:

此时 flex 容器为多行形式(flex-wrap: wrap),align-content 属性生效,其默认效果呈现为 stretch ,于是 align-self 生效,即 align-items 生效。

image-20230527212431508

- 总结

引入了元素容器这个概念后,就很好理解 align-contentalign-items 的区别了,正如它们的名字而言:

  • 一个是 content ,表示每一块整个的 “内容区域” 在父容器中的排列方式。
  • 一个是 item ,表示每一块中的 “内容项目” 在 “内容区域” 中的排列方式。

这种区别具有广泛性,凡是 *-content *-item 这种格式成对的都具有此区别,如:justify-contentjustify-items

Grid布局 中,*-content*-item 的区别和在 Flex布局 中的一样,只不过在 Grid布局 中有我提出的这个 元素容器 概念的官方表示,即: 网格单元

结语

好啦,今天的分享就先到此为止啦,感谢您的观看🤗

如果您有什么建议或者想法欢迎在评论区或者私信交流哦,一起学习,一起进步,加油!

如果本篇文章对你有所帮助,还请客官一件四连!❤️

在这里插入图片描述

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

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

相关文章

算法通过村第二关-链表黄金笔记|K个一组反转

文章目录 前言链表反转|K个一组翻转链表解题方法&#xff1a;头插法处理&#xff1a;穿针引线法处理&#xff1a; 总结 前言 提示&#xff1a;没有人天生就喜欢一种气味而讨厌另一种气味。文明的暗示而已。 链表反转|K个一组翻转链表 给你链表的头节点 head &#xff0c;每 k…

毕业后想往开发上位机的方向发展,不知道怎么样?

上位机的薪资目前还可以&#xff0c;虽然不能比肩互联网&#xff0c;但是在所有行业中应该还算比较高的&#xff0c;二十几万的年薪比较容易。 还不错&#xff0c;最流行的开发方式有labview和C#&#xff0c;建议选C#。工控主要还是集中在长三角和珠三角&#xff0c;搞上位机很…

CentOS 安装 Jenkins

本文目录 1. 安装 JDK2. 获取 Jenkins 安装包3. 将安装包上传到服务器4. 修改 Jenkins 配置5. 启动 Jenkins6. 打开浏览器访问7. 获取并输入 admin 账户密码8. 跳过插件安装9. 添加管理员账户 1. 安装 JDK Jenkins 需要依赖 JDK&#xff0c;所以先安装 JDK1.8。输入以下命令&a…

为什么亚马逊购物车会丢失呢?如何找回来呢?

想要找回店铺购物车&#xff0c;必须先清楚购物车丢失的原因&#xff0c;只有找到原因&#xff0c;对症下药&#xff0c;才能以最快的速度找回。 一、亚马逊购物车丢失的原因&#xff1a; 1.listing新上架 通常来说&#xff0c;新上架的Listing&#xff0c;该Listing在亚马逊…

HIVE优化之不需要参数优化

#1.数据倾斜 什么是数据倾斜&#xff1f; 一部分数据多 一部分数据少 造成的结果&#xff1a; MR运行过慢 主要是shuffle和reduce过程慢 分组聚合导致数据倾斜 Hive未优化的分组聚合 方法1&#xff1a;在MAP端直接聚合&#xff08;分组聚合优化&#xff09;&#xff0c;减少…

wxwidgets Ribbon使用wxRibbonToolBar实例

wxRibbonToolBar就是工具栏&#xff0c;一下是实现的效果&#xff0c;界面只是功能展示&#xff0c;没有美化 实现代码如下所示&#xff1a; MyFrame::MyFrame(const wxString& title) : wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(800, 600)) …

超越传统线程:探索Java Loom协程(纤程/虚拟线程)的无限潜力

《超越传统线程&#xff1a;探索Java Loom协程(纤程/虚拟线程)的无限潜力》 一、Java协程的发展历程 Java协程的发展历程可以概括为以下几个阶段&#xff1a; 1963年&#xff0c;协程的概念被正式提出&#xff0c;它的诞生甚至早于线程。2007年&#xff0c;Kilim项目发布&…

【C++】map和set在OJ中的应用

文章目录 前言1. 剑指 Offer &#xff1a; 复杂链表&#xff08;带随机指针&#xff09;的复制1.1 思路分析&#xff08;利用map搞&#xff09;1.2 AC代码 2. 前K个高频单词2.1 思路1AC代码2.2 思路2AC代码2.3 思路3AC代码 3. 两个数组的交集3.1 思路分析3.2 AC代码 前言 上一篇…

AI和ChatGPT:人工智能的奇迹

AI和ChatGPT&#xff1a;人工智能的奇迹 引言什么是人工智能&#xff1f;ChatGPT&#xff1a;AI的语言之王ChatGPT的工作原理ChatGPT的优势和挑战AI和ChatGPT的未来展望结论 引言 人工智能&#xff08;Artificial Intelligence&#xff0c;简称AI&#xff09;是一项令人兴奋的…

收集到大量的名片怎么转为excel?

来百度APP畅享高清图片 参加完展会或集体会议&#xff0c;是不是收了一大堆名片&#xff0c;保管起来超级麻烦&#xff0c;还容易丢三落四&#xff1f;别急&#xff0c;我们有办法&#xff01;把名片转成电子版保存到电脑上就完美啦&#xff01;但要是名片数量有点多&#xff0…

Linux文本三剑客之awk

目录 前言 awk 1.认识awk 2.使用awk 2.1语法 2.2常用命令选项 2.3awk变量 2.3.1内置变量 2.3.2自定义变量 2.4printf命令 awk例题 前言 awk、grep、sed是linux操作文本的三大利器&#xff0c;合称文本三剑客&#xff0c;也是必须掌握的linux命令之一。三者的功能都是…

什么是全局代理,手机怎么设置全局代理

目录 什么是全局代理 全局代理的优缺点 优点 缺点 手机怎么设置全局代理 注意事项 总结 在计算机网络和信息安全中&#xff0c;全局代理是一种常用的技术手段&#xff0c;用于将网络流量通过代理服务器进行转发和处理。本文将介绍什么是全局代理&#xff0c;探讨全局代理…

Stable Diffusion - Candy Land (糖果世界) LoRA 提示词配置与效果展示

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/132145248 糖果世界 (Candy Land) 是一个充满甜蜜和奇幻的地方&#xff0c;由各种各样的糖果和巧克力构成。在糖果世界&#xff0c;可以看到&…

el-select 三级联动

一、效果图 二、思路&#xff1a;先请求一级select数据&#xff0c;通过选中的id请求二级数据&#xff0c;以此类推&#xff01; 三、代码 <template><div><el-card><el-form :inline"true"><el-form-item label"一级">&l…

如何用正确的姿势监听Android屏幕旋转

作者&#xff1a;37手游移动客户端团队 背景 关于个人&#xff0c;前段时间由于业务太忙&#xff0c;所以一直没有来得及思考并且沉淀点东西&#xff1b;同时组内一个个都在业务上能有自己的思考和总结&#xff0c;在这样的氛围下&#xff0c;不由自主的驱使周末开始写点东西&…

安卓:UDP通信

目录 一、介绍 网络通信的三要素&#xff1a; &#xff08;1&#xff09;、IP地址&#xff1a; IPv4: IPv6: IP地址形式&#xff1a; IP常用命令&#xff1a; IP地址操作类: &#xff08;2&#xff09;、端口&#xff1a; &#xff08;3&#xff09;、协议: UDP协…

【图论】单源最短路

算法提高课笔记。&#xff08;本篇还未更新完… 目录 单源最短路的建图方式例题热浪题意思路代码 信使题意思路代码 香甜的黄油题意思路代码 最小花费题意思路代码 最优乘车题意思路代码 昂贵的聘礼题意思路代码 单源最短路的建图方式 最短路问题可以分为以下两类&#xff1a…

红队钓鱼技术之LNK快捷方式

简介 lnk文件是用于指向其他文件的一种文件。这些文件通常称为快捷方式文件&#xff0c;通常它以快捷方式放在硬盘上&#xff0c;以方便使用者快速的调用。lnk钓鱼主要将图标伪装成正常图标&#xff0c;但是目标会执行shell命令 步骤 1.编写shell命令 首先新建一个文本文件t…

解码大众全新数字高尔夫8汽车CAN FD行驶功能电气架构

据在大众原厂的伙伴介绍&#xff0c;全新数字高尔夫8将在11月上市销售&#xff0c;目前高尔夫8在行驶功能电气架构上采用的CAN FD&#xff0c;在多媒体这一块采用的以太网&#xff0c;后续估计大部分类似同样MQBEvo平台的车型均会复制升级过来&#xff0c;那么&#xff0c;未来…

An unexpected error has occurred. Conda has prepared the above report

今日在服务器上创建anaconda虚拟环境的时候&#xff0c;出现了如下报错 An unexpected error has occurred. Conda has prepared the above report 直接上解决方案 在终端中输入如下指令 conda config --show-sources 如果出现以下提示&#xff0c;说明多了一个文件 输入以下…