【发布时间】:2022-01-04 16:08:05
【问题描述】:
问题: 有没有办法使用inline-flex 和其他一些属性完美地模拟inline-block?理想情况下,不更改 DOM,因为在我的情况下,它是由 MathJax 生成的,我宁愿不必更改其源代码。
JSFiddle: https://jsfiddle.net/a9508cu6/1/
我为什么要这样做:我正在使用 MathJax 渲染数学公式,它创建了一个高度嵌套的 <span> 元素结构,其中大部分都设置了 display: inline-block。在某些情况下,当对这些 <span> 元素执行滚动触摸手势时,Chrome 会完全冻结。这个错误存在于我测试的所有 Chrome 版本中,包括 Beta、Dev 和 Canary,并且目前阻止我发布我的 Web 应用程序,所以我正在寻找解决方法。当然我会报告这个错误,但我担心修复它需要时间,甚至需要更多时间来分发修复。
我发现使用inline-flex 不会触发有问题的错误,所以我尝试用inline-flex 替换inline-block,同时不改变视觉结果。
MathJax 中原来的 CSS 规则是这样的:
.mjx-math * {
display: inline-block;
}
我将其替换为:
.mjx-math * {
display: inline-flex;
align-items: baseline;
}
那种 有效,但并不完全。一些元素的垂直定位现在被破坏了。
display: inline-block的原始结果:
display: inline-flex; align-items: baseline 的结果:
如您所见,“7”和“2”显示在错误的垂直位置。
【问题讨论】:
标签: html css google-chrome flexbox