当前位置: 首页 > 知识库问答 >
问题:

在自证项目和自证项目上灵活启动和灵活结束的目的是什么?

云飞翮
2023-03-14

据我所知,CSS网格布局中使用了justify itemsjustify selfCSS属性,在Flexbox布局中没有任何效果(与名称相似但不同的justify content属性不同)。事实上,MDN在文档中对justify itemsjustify self都说

在flexbox布局中,此属性将被忽略

并且在Flexbox中的框对齐页面上有一整节标题为Flexbox中没有自我证明。

然而,奇怪的是,justify items文档列出了这两个可能的值:

justify-items: flex-start; /* Pack flex items from the start */
justify-items: flex-end;   /* Pack flex items from the end */

如果您开始设置justify itemsjustify self属性,这些值也会在浏览器(如Chrome和Firefox)的开发工具中显示为自动完成建议。

如果在Flexbox布局中忽略了justify itemsjustify self,为什么会存在这些值?它们是特殊的吗?他们是干什么的?

共有2个答案

颜镜
2023-03-14

规范确实规定了这些是有效的证明项证明自我值。它列出了证明项目的合法值如下:

正常|拉伸|

并定义

<self-position> = center | start | end | self-start | self-end |
       flex-start | flex-end

我不确定,但我推测这些可能的值被拉进来作为可能的值为证明自我证明项目没有太多的考虑仅仅是因为它是的一部分

无论如何,flex startspec说明:

仅用于灵活布局。[CSS-FLEXBOX-1]将对准对象与对应于柔性容器主启动侧或交叉启动侧的对准容器的边缘齐平。

在flex格式上下文之外使用时,此值的行为与start相同。也就是说,在非柔性项的框上(或假装为柔性项,例如在确定绝对定位框的静态位置时,该框是柔性容器的子对象),在自对齐属性中使用此值时,以及在非柔性容器的框上,此值的行为与开始相同,在内容分发属性中使用此值时,其行为与“开始”相同。

(对于柔性端,有类似的措辞)

如果我们谈论的是证明-项目证明-自我属性,那么,如果它们没有被忽略,我们保证不会处于灵活格式化上下文中,因此总是这样:

此值表现为start。

我们可以在简单的网格布局中看到这一点:

#grid {
    display: grid;
}
#item1 {
  justify-self: flex-start;
}
#item2 {
  justify-self: flex-end;
}
<div id="grid">
    <div id="item1">flex-start</div>
    <div id="item2">flex-end</div>
</div>

禹昊穹
2023-03-14

这是一个错误。justify itemsjustify self属性不适用于flexbox。

考虑你的信息来源:MDN Web文档(以前是Mozilla开发者网络)。这一资源虽然通常是有用和可靠的,但仍然代表着二手信息。

MDN页面上的CSS定义基于W3C官方文档。MDN贡献者(人员)读取、过滤和解释W3C数据,以便在MDN上进行演示。因此,MDN信息可能会出现人为错误。这就是问题所在。

如果您直接进入规范,您将找到正确的信息:

7.1. 内联/主轴对齐:justify items属性

此属性为参与此框的格式化上下文的所有子框(包括匿名框)指定默认的证明自我

好的。因此,让我们转到证明自我

6.1. 内联/主轴对齐:justify self属性

适用于:块级别框、绝对定位框和网格项

如前所述,证明-项目证明-自我不适用于flex项目。

还请注意,justify itemsjustify self适用于多框模型,而不仅仅是CSS网格。有关更多详细信息,请参见CSS框对齐模块规范。

 类似资料:
  • 我有时觉得Flex太复杂了。 演示:https://jsfiddle.net/304xhguw/ 我试图创建一个容器,它的末尾有多行文本: 使用Flex应该很容易,对吧? 完成后,容器使用flex,在末尾对齐项,并且h1由于的和而创建新行。完美。 不是真的: 等等,刚才发生了什么事<代码> 不用担心,有一些惊人的特性应该可以工作,让我们试试:

  • 想象一下没有自动化构建工具的场景 大部分的软件开发者都会面临下面的情形: 让IDE完成所有的工作. 用IDE来编码,导航到源代码、实现新特性、编译代码、重构代码、运行单元测试,一旦代码写完了,就按下编译按钮。一旦IDE提示没有编译错误测试通过,然后就把代码放入版本控制系统中以便与其他人分享。IDE是非常强大的工具,但是每个人都要安装一套标准的版本来执行上面介绍的任务,当你需要使用一个只有新版IDE

  • 问题内容: 我现在两次遇到问题,生产者线程会产生N个工作项,将它们提交给an ,然后需要等待,直到所有N个项都已处理完毕。 注意事项 N事先未知 。如果是这样,我将简单地创建一个然后具有生产者线程,直到完成所有工作。 使用a 是不合适的,因为尽管我的生产者线程需要阻塞(即,通过调用),但 无法表示所有工作都已完成 ,从而导致生产者线程停止等待。 我当前喜欢的解决方案是使用整数计数器,并在提交工作项

  • 我不清楚是否因为robolectric还没有完成一些必要的实现而不可能使用robolectric来扩展这个视图,或者我只是没有正确地连接所有的东西。 我尝试将依赖项添加到测试中,如下所述: 但这没有效果。 完整测试类: 和堆栈跟踪:

  • 我创建了一个android项目(项目A),并在其中导入了另一个项目(项目B),其中包含: - 现在我想从项目A调用位于项目B内部的活动。 我用过: 但我明白了 类不成立异常 如何解决这个问题? 使现代化 我发现我需要使用以下方法将项目B作为依赖项添加到项目a中: 项目结构/依赖关系/ 当我试图构建我得到这个错误: 错误:无法确定任务的依赖项:app: compileDebugJavaBackJav

  • 我刚刚安装了,但是我很难启动它。有了我的项目,没有它,当我开始时,它在中显示相同的错误: 14:15:37571信息[org.jboss.modules](主)jboss模块版本1.5.2。最终14:15:37757信息[org.jboss.msc](main)jboss msc版本1.2.6。最终14:15:37829信息[org.jboss.as](MSC服务线程1-7)WFLYSRV0049