为什么 CSS flex 布局中没有 `justify-items` 和 `justify-self`?

为什么 CSS flex 布局中没有 justify-itemsjustify-self

为什么在 CSS flex 布局中存在 align-itemsalign-self,却没有 justify-itemsjustify-self 呢?要解答这个问题,首先需要理解主轴(main axis)和交叉轴(cross axis)之间的差异。

1. 主轴和交叉轴的区别

在没有折行的情况下,一个 flex 容器(flex container)只有一个主轴,但却有 n 个交叉轴(n 代表 flex item的数量)。每个 flex item 都拥有自己独立的交叉轴。

一个 flex item 在主轴上的位置会影响其他 flex item,因为它们共享相同的主轴,而交叉轴却不会引发这种相互影响。

2. CSS 属性的命名规则

2.1 align-*justify-*

在 CSS flex 布局中,属性名称中的 align-* 表示这是应用于主轴上的规则,而 justify-* 表示这是应用于交叉轴上的规则。

2.2 *-items*-content*-self

*-self 表示每个 flex item 都拥有独立的轴,它们在轴上的位置不会影响其他 flex item。我们可以针对单个 item 设置它的位置。

*-items*-self 在本质上相似,只不过前者是批量设置,而后者是针对单个 item 的设置。可以看作是一个语法糖。

*-content 表示多个 flex item 共享一个轴,一个 flex item 在轴上的位置会影响其他 flex item。

3. 总结

因此,在 flex 布局中,我们不能使用 justify-items,因为多个元素共享一个轴,它们属于同一组,这会导致相互干扰。想象一下:假如我们指定了justify-items: flex-end,最终只会有一个元素抢到这个位置。

同样的道理,我们也不能使用 justify-self,因为各元素之间可能会竞争位置导致冲突。但是,我们可以采用其他解决方案,例如使用 order 属性来对它们进行更为精细的排序(和flex-startflex-endcenter 相比)。

相关推荐
我爱吃朱肉3 小时前
纯HTMLCSS静态网站——元神
css·html
格子惊蛰版4 小时前
🪲正在开发后台管理系统的同学 UnoCSS 一定要用起来
前端·css
我怎么能这么帅气4 小时前
拯救排版焦虑!CSS省略号的终极指南:单行、多行、生效与失效场景全解析
前端·css
前端大白话5 小时前
前端工程师必看!手把手教你用CSS实现超丝滑的自适应视频嵌入
前端·css·前端框架
一个天蝎座 白勺 程序猿6 小时前
Python爬虫(4)CSS核心机制:全面解析选择器分类、用法与实战应用
css·爬虫·python
sunbyte12 小时前
Tailwind CSS 初学者入门指南:项目集成,主要变更内容!
前端·css
鹿九巫17 小时前
【CSS】层叠,优先级与继承(四):层叠,优先级与继承的关系
前端·css
HuaHua的世界21 小时前
说说 Vue 中 CSS scoped 的原理?
css·vue.js
鹿九巫21 小时前
【CSS】层叠,优先级与继承(三):超详细继承知识点
前端·css
AXUI21 小时前
至美!看AXUI如何美化原始HTML标签(reset/normalize)
css·html