我有一个有趣的问题,我正在构建一个动态导航菜单,它不能在Firefox(v114.01)中正确呈现其内容。它在Edge(v114.0.1823.43)和Chrome(v114.0.5735.134)上都呈现良好。
这似乎是“写作模式:vertical-lr”属性在Firefox中的应用方式不同。
我使用writing-mode的原因是为了克服flex box Package 的列不能增加其宽度When flexbox items wrap in column mode, container does not grow its width的问题。同样,这似乎在Edge/Chrome中工作得很好,但在Firefox中却不行。
下面是一个代码笔的例子:https://codepen.io/Jean-Paul-Larach/pen/vYQNRPY的
.wrapper {
display: flex;
flex-direction: row;
padding-top: 0px;
padding-bottom: 0px;
padding-right: 0px;
max-width: 90vw;
}
h4 {
margin: 0;
}
.group {
display: flex;
flex-direction: row;
>div {
display: inline-flex;
flex-flow: row wrap;
}
}
.groupHeader {
padding-top: 0px;
padding-left: 5px;
margin: 0 0 10px 0;
writing-mode: horizontal-tb;
font-style: italic;
}
.section {
writing-mode: horizontal-tb;
}
.navMenuLink {
writing-mode: horizontal-tb;
padding: 0 0.5rem;
margin: 0 0.5rem;
}
.header {
flex-wrap: wrap;
display: inline-flex;
flex-flow: row wrap;
writing-mode: vertical-lr;
max-height: 55vh;
}
个字符
边缘截图:
x1c 0d1x的数据
火狐截图:
的
任何指导或反馈将不胜感激!
我试图改变我的代码来使用其他类型的布局,但这带来了许多挑战。Flexbox应该是创建导航的选择。
1条答案
按热度按时间xoshrz7s1#
我在Firefox中遇到了一些奇怪的问题,嵌套的flex元素和垂直书写模式。
看看Firefox中的this CodePen,这是一个最小的设置,您将看到Firefox在嵌套的flex父级的内容大小方面存在问题。看起来这实际上是Firefox中的一个bug。
解决您的案例和问题:
1.你正在使用CSS嵌套。请注意,这只是supported from Firefox Version 117,大多数用户还无法使用(截至目前)。
1.我不认为使用
inline-flex
对您的目标是必不可少的,所以我将内联flex元素更改为flex
。display: grid;
而不是flex
是可以的,因为在大多数情况下,您可以使用CSS Grid实现相同的结果。不幸的是,在您的特定情况下,我无法让它与Grid一起工作。flex-flow
属性可以解决这个问题。我的猜测是,这是在浏览器中触发样式重新计算。因此,我编写了以下JavaScript,通过删除CSS属性并将其添加回相应的元素,重现了禁用和重新启用CSS属性的行为:字符串
我知道这是一个非常黑客解决方案,但它似乎解决了Firefox中的问题;至少现在
以下是经过调整的CSS:
型