html - 由于溢出导致的填充底部:自动
问题描述
我正在尝试将 MathJax 内容放入带有 css 'overflow:auto' 的 div 中,以便 div 将为长数学表达式显示一个水平滚动条。
但是,我有一个奇怪的行为。现有的 div 类似于以下代码段中的第一个。但是,当我添加 overflow:auto 时,会出现一个垂直滚动条(请参阅以下代码段中的第二个 div)。通过查看细节,我了解到,这是由于 MathJax 类引起的对齐造成的。
请注意,更改 box-sizing 或 vertical-align 属性并不能解决此问题。但是,如果我在 div 中添加一个 padding-bottom 或者我设置了 overflow-y:hidden,这可以解决。但我不确定这是否是正确的方法。
谁能帮我理解为什么溢出自动强制为 div 填充底部,为什么它不包含在 div 的高度中,强制垂直滚动条出现,以及解决它的最佳方法是什么。谢谢
.margin-botom-zero {
margin-bottom: 0;
}
.red {
background: red;
}
.blue {
background: blue;
}
.overflow-auto {
overflow-x: auto;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({ tex2jax:{inlineMath: [['$','$']]} });
</script>
<div class="red">
<p>this is test</p>
<p class="blue margin-botom-zero">$\dfrac{1}{2}$</p>
</div>
<br>
<div class="red overflow-auto">
<p>this is test</p>
<p class="blue margin-botom-zero">$\dfrac{1}{2}$</p>
</div>
解决方案
正如我评论的那样,插件动态添加了很多代码,很难识别问题。这显然是所有嵌套中的一个造成的溢出问题,span
并且它在某种程度上是随机的。
例如,如果您将数字替换为字母,则不会出现问题:
.margin-botom-zero {
margin-bottom: 0;
}
.red {
background: red;
}
.blue {
background: blue;
}
.overflow-auto {
overflow-x: auto;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({ tex2jax:{inlineMath: [['$','$']]} });
</script>
<div class="red">
<p>this is test</p>
<p class="blue margin-botom-zero">$\dfrac{1}{2}$</p>
</div>
<br>
<div class="red overflow-auto">
<p>this is test</p>
<p class="blue margin-botom-zero">$\dfrac{1}{j}$</p>
</div>
<div class="red overflow-auto">
<p>this is test</p>
<p class="blue margin-botom-zero">$\dfrac{1}{9}$</p>
</div>
修复的一个想法是增加line-height
ofp
以避免溢出。对于这种特殊情况,它仍然是一个近似解决方案。它可能在其他情况下不起作用:
.margin-botom-zero {
margin-bottom: 0;
line-height: 2.7em;
}
.red {
background: red;
}
.blue {
background: blue;
}
.overflow-auto {
overflow-x: auto;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({ tex2jax:{inlineMath: [['$','$']]} });
</script>
<div class="red">
<p>this is test</p>
<p class="blue margin-botom-zero">$\dfrac{1}{2}$</p>
</div>
<div class="red overflow-auto">
<p>this is test</p>
<p class="blue margin-botom-zero">$\dfrac{1}{j}$</p>
</div>
<div class="red overflow-auto">
<p>this is test</p>
<p class="blue margin-botom-zero">$\dfrac{1}{9}$</p>
</div>
推荐阅读
- python - 从需要poppler的python代码库为Windows创建可执行文件
- javascript - 使用父状态的子组件在状态更改时不重新渲染
- python - Python Django App Design 在部署到服务器时发生变化
- highcharts - 如何修复此错误类型“数字”与类型“XrangePointOptionsObject”没有共同的属性
- mysql - 根据每个用户的不同值过滤值
- terraform - 如何在 terraform vmware vm 部署后运行自定义脚本?
- java - 如何为实现 ApplicationListener 的类编写 JUNIT 测试用例
- c++ - Qt TextEdit 慢
- r - 在ggplot中为geom_label添加颜色的奇怪行为
- python - Python通过数据框中的字符串列表连接