从规范中,布局算法中的几乎所有内容都已定义,但该项似乎缺少。
第9.4.7段:https://www.w3.org/TR/css-flexbox-1/#algo-cross-item -说:
“通过使用的主尺寸和可用空间执行布局来确定每个项目的假设交叉大小,将自动视为合适的内容。
然而,“执行布局”是没有定义的--这是本段应该定义的内容,而它只是.递归定义自己?
相比之下,上一节(对于主尺寸)显式地定义了“执行布局”的算法。但是Main和Cross的算法必须是必需的(几乎按照定义?)是(至少稍微有点!)不一样。
我正在调试一些详细的Flexbox代码,并问“跨尺寸布局的正确行为到底是什么?”如果我找不到规范中明确的部分,就很难回答。
发布于 2022-08-12 15:02:34
最后,通过在浏览器中进行广泛的测试,我得出了这样的结论:
执行本规范中未定义的、任意的部分,不管您--实现者--认为它是“好的”。
也就是说,这里没有规范。(官方的说法是:“浏览器所做的一切”是正确的,但当然:它们所做的事情随着时间的推移而改变,并且有自己的错误)
特别是: CSS规范有一个很大的漏洞,那就是“元素的大小是什么?”;它显然是不明确的,为各种元素的大小提供了‘建议’。例如,一幅PNG图像也许可以使用它的原始像素宽度和高度(但你应该遵循视网膜大小、真实大小、点对像素等吗?)SVG应该做什么呢?有几个可以说是正确的答案))。
..。我想这就是为什么规范把这个空白留出来的原因。
最终,我找到了最好的结果,方法是为元素的内在大小实现一组合理的启发式方法,然后在这里使用它们与可用的元信息、约束等一起使用。这与浏览器所做的最接近,并给出了很好的结果。
https://stackoverflow.com/questions/60933339
复制相似问题