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

弹性容器Flex中的自动外边距(Auto Margins) 的作用

最近在使用Flex布局时,遇到的一个情况:

有以下的代码:

    <div class="toolbox"><button id="decrease">-</button><span id="size">1</span><button id="increase">+</button><!-- 取色器 --><input type="color" id="color" /><button id="clear">X</button></div>

我们给父容器设置Flex布局,简单设置一下内部子元素的宽度和高度

      * {box-sizing: border-box;margin: 0;padding: 0;}.toolbox {display: flex;border: 1px solid lightcoral;width: 500px;}.toolbox > * {height: 50px;width: 50px;}

效果如下:
在这里插入图片描述
很简单的例子,但是如果我给最后一个子元素设置设置一下css代码 :

 .toolbox > *:last-child {margin-left: auto;}

效果变成了以下:
在这里插入图片描述
最后一个元素变成了右对齐,自动把剩余的空间全部变成了他的左外边距margin-left:
在这里插入图片描述
为什么会产生这种情况呢?
关于这个问题,我直接问了GPT3.5,它提到了一个叫做 自动外边距(Auto Margins),但是我并没有搜索到相关的资料,所以只能参考了GPT的回答,其中给出了W3C的候选规范:Aligning with auto margins

This section is non-normative. The normative definition of how margins affect flex items is in the Flex Layout Algorithm section.

Auto margins on flex items have an effect very similar to auto margins in block flow:

  • During calculations of flex bases and flexible lengths, auto margins
    are treated as 0.
  • Prior to alignment via justify-content and align-self, any positive
    free space is distributed to auto margins in that dimension.
  • Overflowing boxes ignore their auto margins and overflow in the end
    direction.

Note: If free space is distributed to auto margins, the alignment properties will have no effect in that dimension because the margins will have stolen all the free space left over after flexing.

在这里插入图片描述

nav > ul {display: flex;
}
nav > ul > #login {margin-left: auto;
}
<nav><ul><li><a href=/about>About</a><li><a href=/projects>Projects</a><li><a href=/interact>Interact</a><li id="login"><a href=/login>Login</a></ul>
</nav>

理解不太容易理解,只能说这就是规范,直接记住结论,关键点如下:
本例中的margin-left: auto;的效果是该方向的外边距尽可能大,直到填充主轴上的所有可用空间为止,在设置 margin-left: auto 的情况下,浏览器会为该元素的左侧自动分配剩余空间,结果是该元素会被推到容器的右侧。

然后副作用是:如果自动外边距吸收了所有可用空间,那么像 justify-content 这样的对齐属性在该维度上将不再有效,因为没有剩余空间来进行对齐。

所以,如果我们设置了父容器的justify-content: center;同时内部的子元素设置了 margin-left: auto ,此时justify-content: center;不生效:

      .toolbox {display: flex;/* justify-content: space-between; */justify-content: center;border: 1px solid lightcoral;width: 500px;}.toolbox > * {height: 50px;width: 50px;}.toolbox > *:nth-child(5) {margin-left: auto;}

效果如下,justify-content: center;不生效
在这里插入图片描述
根据这个效果,我们就可以在一些场景下应用这个,比如类似的导航栏效果:
在这里插入图片描述
实现类似效果还有其他方法,比如弹性盒子的嵌套,或者用定位,但是这种方式代码简单,同时也具备响应式。

另外如果我们修改代码为:

      .toolbox > *:nth-child(4) {margin-left: auto;}

第4个元素以及后面的兄弟元素会一起被左侧边距挤到右侧
在这里插入图片描述

相关文章:

弹性容器Flex中的自动外边距(Auto Margins) 的作用

最近在使用Flex布局时&#xff0c;遇到的一个情况&#xff1a; 有以下的代码&#xff1a; <div class"toolbox"><button id"decrease">-</button><span id"size">1</span><button id"increase">…...

C语言调用子函数时入/出栈(保护/恢复现场)全过程分析:以Cortex-M3为例

0 参考资料&工具 Cortex M3权威指南(中文).pdf keil5&#xff08;用于仿真查看寄存器、栈变化&#xff09;1 C语言调用子函数时出入/出栈&#xff08;保护/恢复现场&#xff09;全过程分析 使用C语言调用子函数是如何保护/恢复现场的呢&#xff1f;本文以Cortex-M3为例&a…...

理解Sigmoid激活函数原理和实现

Sigmoid 激活函数是一种广泛应用于机器学习和深度学习中的非线性函数&#xff0c;特别是在二分类问题中。它的作用是将一个实数值映射到(0, 1)区间&#xff0c;使得输出可以被解释为概率值&#xff0c;这在处理二分类问题时非常有用。 Sigmoid 函数的定义 Sigmoid 函数的数学…...

探秘DevSecOps黄金管道,安全与效率的完美融合

软件应用的安全性已成为企业和用户关注的焦点&#xff0c;DevSecOps作为一种将安全融入开发和运维全过程的理念和实践&#xff0c;旨在消除传统开发模式中安全被后置处理的弊端。DevSecOps黄金管道&#xff08;Golden Pipeline&#xff09;是实现这一理念的核心框架&#xff0c…...

Redis的内存淘汰策略- volatile-lru

volatile-lru 策略简介 在 volatile-lru 策略下&#xff0c;当 Redis 的内存使用达到配置的上限&#xff08;maxmemory&#xff09;时&#xff0c;它会优先删除那些设置了过期时间的键&#xff0c;并且选择最近最少使用的键进行删除。LRU 算法的核心思想是&#xff0c;优先删除…...

HTTP和HTTPS的区别?哪一个更适合你的网站?

什么是 HTTP&#xff1f; HTTP&#xff08;超文本传输协议&#xff09;&#xff08;Hypertext Transfer Protocol&#xff09;它是一组允许网络浏览器与网络服务器&#xff08;托管网站的计算机&#xff09;进行通信的规则。 HTTP 使用请求-响应模型。 例如&#xff0c;当你…...

OpenAI SORA团队负责人 通往智能的方式 报告笔记

OpenAI SORA团队负责人 通往智能的方式 报告笔记 这个报告其实是2024年智源大会的主旨报告&#xff0c;OpenAI SORA和DALL-E团队负责人Aditya Ramesh给出的一段有关多模态大模型的报告。我去听了现场&#xff0c;感觉倍受启发&#xff0c;但是感觉很多并不能当场理解&#xff…...

006-Sleuth(Micrometer)+ZipKin分布式链路追踪

这里写目录标题 1 分布式链路追踪概述1.1 为什么会出现这个技术&#xff1f;需要解决哪些问题&#xff1f;1.2 在分布式与微服务场景下需要解决的问题 2 新一代Spring Cloud Sleuth&#xff1a;Micrometer2.1 官网重要提示2.1.1 新一代Sleuth2.1.2 官网2.1.3 说明2.1.3.1 老项目…...

AI模型:追求全能还是专精?-- 之6 语言复杂度类别(Category 0~3 类)和语言功能性类型(Type 0~Ⅲ 型)之2

Q17、我前面说过&#xff0c;语言复杂度的0~3级&#xff08;Category 0~3&#xff09;表示了语言的的上下文相关性 &#xff1a; 完全不相关&#xff0c; 单相关的 单词上下文&#xff0c; 双相关的句子上下文 全相关的文章上下文 。我准备翻译为 Context - irrelative /relati…...

20240907 每日AI必读资讯

大疆发布 DJI Neo 掌上 Vlog 无人机&#xff01; - DJI Neo 是 DJI 迄今最轻、最小的无人机&#xff0c;无需遥控器&#xff0c;掌上起降即可轻松拍出主角大片… &#xff5c;135 克轻巧便携 丨零门槛掌上起降 丨AI 智能跟拍 &#xff0c;一键成片 丨多种操控&#xff0c;丰富…...

深度学习基础--卷积基础模块

本节主要关注卷积神经网络发展过程中具有里程碑意义的基础模块&#xff0c;了解它们的原理和设计细节 1. 批归一化 在机器学习中&#xff0c;一般会假设模型的输入数据的分布是稳定的。如果这个假设不成立&#xff0c;即模型输入数据的分布发生变化&#xff0c;则称为协变量偏…...

视频智能分析打手机检测算法安防监控打手机检测算法应用场景、算法源码、算法模型介绍

随着智能手机的普及&#xff0c;手机已成为人们生活中不可或缺的一部分。然而&#xff0c;在某些场合&#xff0c;如驾驶、会议、学校课堂等&#xff0c;不当使用手机可能会导致安全隐患或干扰他人。因此&#xff0c;开发出一种能够准确识别并阻止不当使用手机的行为检测算法显…...

6.2图的存储及基本操作

6.2.1顺序存储 邻接矩阵法,用一个一维数组存储图中顶点信息,二维数组存储图中边的信息 无向图 1.无向图的邻接矩阵关于对角线对称,可采用压缩存储 2.边数为e,则邻接矩阵中1为2e; 3.第i行or 第i列非零元素之和恰好为顶点i的度数 4.判断是否有边用0,1 5. 有向图 1.关于对…...

Java语法全解析:掌握基本规则,打造稳固编程基础!

Java基本语法是编写Java程序的核心&#xff0c;它包括了数据类型、运算符、控制结构、类与对象等基本组成部分。这些语法要素共同构成了Java程序的基础框架&#xff0c;掌握它们是进行Java编程的前提。以下是Java基本语法的详细介绍&#xff1a; 数据类型 基本数据类型&#x…...

同时播放多个视频

介绍一款小众的视频播放器&#xff0c;之前有小伙伴找那种可以同时播放多个视频的软件&#xff0c;“恒硕加播放”可以做到这一点&#xff0c;功能不是太多&#xff0c;但是日常播放是足够了。 同时播放多个视频控制多个视频跳到指定进度同时暂停/播放/停止/静音/倍速浏览系统…...

伴奏提取消除人声如何操作?轻松几步玩转音乐世界

你是否梦想着独自演绎一曲&#xff0c;或是进行个性化的混音创作&#xff0c;却又希望摆脱原唱声音的干扰&#xff1f;那么&#xff0c;学会免费伴奏提取就显得尤为关键。 在这篇文章中&#xff0c;我将为你展示四种简单易学的方法&#xff0c;让你能够轻松地从歌曲中提取出伴…...

uniapp二维码生成

uniapp二维码生成 参考文档依赖引入代码html部分生成代码&#xff08;vue3 hook&#xff09;使用 参考文档 【博主&#xff1a;ChoneyLove】uniapp中生成二维码及解决微信小程序端问题总结 依赖引入 npm i uqrcodejs代码 html部分 <canvas type"2d" id"…...

Android UID 和 userID 以及 appID

我们知道Android 操作系统是基于Linux内核的&#xff0c;所以Android 的UID 是基于 Linux UID的。 Linux UID Linux 本身就是一个多用户操作系统&#xff0c;每一个用户都会有一个UID&#xff0c;不同UID 之间的资源访问是受限的。 其中&#xff0c;Linux的DAC权限模型&#…...

Kafka的三高设计原理

1.生产者缓存机制--高性能 生产者缓存机制的主要目的是将消息打包&#xff0c;减少网络IO频率 kafka生产者端存在消息累加器RecordAccumulator&#xff0c;它会对每个Partition维护一个双端队列&#xff0c;队列中消息到达一定数量后 或者 到达一定时间后&#xff0c;通过sen…...

生信圆桌x生信宝库:生物信息学资源与工具的终极指南

介绍 生物信息学作为现代生物科学的重要分支&#xff0c;涉及到大量的数据处理、分析和存储工作。随着领域的不断发展&#xff0c;各类生物信息学资源与工具也如雨后春笋般涌现。这些资源涵盖了从基因组数据、蛋白质结构到代谢路径的方方面面&#xff0c;极大地丰富了科研人员的…...

G-Helper华硕笔记本优化指南:三步告别臃肿控制中心,性能提升30%

G-Helper华硕笔记本优化指南&#xff1a;三步告别臃肿控制中心&#xff0c;性能提升30% 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, …...

Nanbeige 4.1-3B Streamlit WebUI效果展示:气泡时间戳与消息状态可视化

Nanbeige 4.1-3B Streamlit WebUI效果展示&#xff1a;气泡时间戳与消息状态可视化 1. 引言&#xff1a;当大模型遇见沉浸式聊天界面 想象一下&#xff0c;你正在本地部署一个强大的开源大语言模型&#xff0c;比如南北阁的4.1-3B版本。你通过命令行与它对话&#xff0c;看着…...

小米平板4/4Plus驱动板安装与调试全攻略:从HDMI连接到触摸校准

1. 小米平板4驱动板安装前的准备工作 第一次接触驱动板安装的朋友可能会觉得有点复杂&#xff0c;但其实只要做好准备工作&#xff0c;整个过程就会顺利很多。我去年帮朋友改装过三台小米平板4&#xff0c;总结出几个关键点。首先&#xff0c;你需要确认手头的驱动板型号是否匹…...

技术奇点移民局:人类文明延续证书申领指南

当测试思维遇见文明延续在软件测试领域&#xff0c;我们日复一日地构建测试用例、执行回归测试、提交缺陷报告&#xff0c;核心目标是为确保软件系统的稳定性、安全性与可持续性。如果将这一专业视角放大至人类文明的尺度&#xff0c;我们所面临的&#xff0c;正是一场空前规模…...

5大核心功能解锁QuickBMS:从二进制解析到跨领域数据提取的实战指南

5大核心功能解锁QuickBMS&#xff1a;从二进制解析到跨领域数据提取的实战指南 【免费下载链接】QuickBMS QuickBMS by aluigi - Github Mirror 项目地址: https://gitcode.com/gh_mirrors/qui/QuickBMS 问题导入&#xff1a;当你面对无法打开的神秘文件时&#xff0c;…...

千问3.5-9B模型Java开发环境快速配置:从JDK安装到项目集成

千问3.5-9B模型Java开发环境快速配置&#xff1a;从JDK安装到项目集成 1. 引言 如果你是一名Java开发者&#xff0c;想要快速上手调用千问3.5-9B大模型&#xff0c;这篇文章就是为你准备的。我们将从最基础的JDK安装开始&#xff0c;一步步带你完成整个开发环境的配置&#x…...

Phi-3-mini-4k-instruct-gguf实战:Java面试题智能解析与答案生成

Phi-3-mini-4k-instruct-gguf实战&#xff1a;Java面试题智能解析与答案生成 1. 引言&#xff1a;Java面试准备的痛点与AI解决方案 Java开发者求职或复习时&#xff0c;常常面临一个普遍问题&#xff1a;如何高效准备海量的技术面试题。从多线程到JVM原理&#xff0c;从Sprin…...

QMCDecode技术解密:让加密音频重获自由的无损转换方案

QMCDecode技术解密&#xff1a;让加密音频重获自由的无损转换方案 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac&#xff0c;qmc0,qmc3转mp3, mflac,mflac0等转flac)&#xff0c;仅支持macOS&#xff0c;可自动识别到QQ音乐下载目录&#xff0c;默认转…...

SEO_从入门到精通,掌握SEO的核心优化思路

SEO的核心优化思路&#xff1a;从入门到精通&#xff0c;你需要知道的一切 在当今的互联网时代&#xff0c;SEO&#xff08;搜索引擎优化&#xff09;已经成为了提升网站流量和品牌知名度的关键手段。无论你是新手还是已经有一些SEO知识的人&#xff0c;掌握SEO的核心优化思路…...

Wan2.2-I2V-A14B企业知识库联动:从内部文档自动生成培训视频

Wan2.2-I2V-A14B企业知识库联动&#xff1a;从内部文档自动生成培训视频 1. 企业知识管理的新范式 在当今快节奏的商业环境中&#xff0c;企业知识管理正面临前所未有的挑战。传统文档形式的培训材料往往存在几个痛点&#xff1a; 更新不及时导致信息滞后员工学习效率低下知…...