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

为什么,css,flex,布局,没有,justify,items,self · 浏览次数 : 6

小编点评

因为 CSS flex 布局中没有 `justify-items` 和 `justify-self` 属性,这是因为 `justify-items` 和 `justify-self` 属性在 flex 布局中并非独立的属性,而是在 `align-items` 和 `align-self` 属性中实现的。 **1. 主轴和交叉轴** * 主轴:一个 flex 容器只有一个主轴,且每个 flex item拥有独立的主轴位置。 *交叉轴:每个 flex item拥有 n 个交叉轴,每个交叉轴对应一个 flex item,每个交叉轴都独立设置。 **2. CSS属性的命名规则** * `align-*` 和 `justify-*` 属性用于应用于主轴上的规则,例如 `align-items: center`。 * `*items`、`*content` 和 `*self*-self` 属性用于应用于交叉轴上的规则,例如 `align-self: center`。 **3. 结论** 由于多个元素共享一个主轴,`justify-items` 和 `justify-self` 属性无法单独应用。建议使用其他解决方案,例如 `order` 属性来对元素进行更为精细的排序。

正文

为什么 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 布局中,属性名称中的 justify-* 表示这是应用于主轴上的规则,而 align-* 表示这是应用于交叉轴上的规则。

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 相比)。

与为什么 CSS flex 布局中没有 `justify-items` 和 `justify-self`?相似的内容:

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

为什么 CSS flex 布局中没有 justify-items 和 justify-self? 为什么在 CSS flex 布局中存在 align-items 和 align-self,却没有 justify-items 和 justify-self 呢?要解答这个问题,首先需要理解主轴(main

tailwindcss -原子化 CSS 框架

原子化 CSS 框架 我记得很久之前有时候为了少写些css,我们通常会有如下的样板代码 .block { display: block; } .flex { display:flex } .flex-center { align-items: center; justify-content: cen

矩阵的乘法运算与css的3d变换(transform)

theme: qklhk-chocolate 引言:你有没好奇过,在一个使用了transform变换的元素上使用window.getComputedStyle(htmlElement)['transform'] 查询出来的值代表什么? 为什么硬件加速要使用transform,以及为什么硬件加速会快?

如何正确使用:has和:nth-last-child

我们可以用CSS检查,以了解一组元素的数量是否小于或等于一个数字。例如,一个拥有三个或更多子项的`grid`。你可能会想,为什么需要这样做呢?在某些情况下,一个组件或一个布局可能会根据子元素的数量而改变。 这在CSS中已经存在很多年了,但现在通过CSS `:has`,它变得更加强大。我们可以把`nt

前端已死?全栈当立?取法于中,仅得其下。

开篇明义,前端已死?根本就是扯淡。前端技术精微渊深,驳杂宽广,除了基础的 HTML、CSS 和 JavaScript 技术外,前端技术还涉及到许多其他相关技术和工具,比如前端框架、UI 库、自动化构建工具、代码管理工具等等。这些技术并没有死,反而生态圈愈发健壮,但为什么前端已死的论调甚嚣尘上? 前端

Vue学习笔记(七):绑定css样式

1 绑定class样式¶ vue为HTML绑定css中的class样式是通过v-bind实现的。 1.1 绑定单个class¶ 把需要绑定的样式class名赋值给一遍变量,然后通过变量v-bind绑定class属性,绑定后的class并不会覆盖原来的class属性,而是与原来的class进行叠加。如

CSS文本,字体设置与元素边框,阴影,显示模式

什么是元素的显示模式 网页中的标签很多,在不同的地方使用不同类型的标签。 元素显示模式就是标签以什么方式进行显示。如:div自己占一行,span一行可以放多个。 HTML元素一般分为块元素和行内元素两种类型。 块元素 常见的块元素有: ~, , , ,

如何优雅的写 css 代码

CSS(全称 Cascading Style Sheets,层叠样式表)为开发人员提供声明式的样式语言,是前端必备的技能之一,基于互联网上全面的资料和简单易懂的语法,CSS 非常易于学习,但其知识点广泛且分散,很难做到精通,在我们日常开发中,常常忽视了 CSS 代码的质量,很容易写出杂乱无章的 CS

如何使用Photino创建Blazor项目进行跨平台

Photino是什么 Photino是一组使用Web (HTML/CSS/JavaScript)UI创建桌面应用程序的技术。TryPhotino.io 维护 .NET 构建,并鼓励社区开发 Photino.Native 控件以用于其他语言和平台。我们鼓励并将支持Photino.CPP,Photino

Selenium4自动化测试3--元素定位By.NAME,By.LINK_TEXT 和通过链接部分文本定位,By.PARTIAL_LINK_TEXT,css_selector定位,By.CSS_SELECTOR

4-通过名称定位,By.NAME name属性为表单中客户端提交数据的标识,一个网页中name值可能不是唯一的。所以要根据实际情况进行判断 import time from selenium import webdriver from selenium.webdriver.common.by imp