知乎的公式为什么改版了?
14 个回答
变更是 公式的展示形式由外链图片改为了内联元素 。
外链图片服务由 MathJax v2 实现,此服务本身依赖 jsdom 来模拟浏览器环境,无法可靠的支持中文、偏移值不准确(例如使用 kern/lower 时,无法在不同平台上保持一致效果)。
此外,外链图片方案同时带来了一些其他缺陷:
- 无法内联对齐相邻的文本(每个公式的 vertical-align 是不相同的,大多情况都会显得下垂)
- 无法继承当前内容样式(如文本大小和颜色)
- 公式长度受限(过长将出现 414 错误)
- 不能很好的适配设备宽度(最多依赖 media query 的固定断点,这使公式无法准确居中,各种设备上公式大小也不一致)
- 不能很好的适配暗色模式(最多借助 invert filter 适配黑白色,但彩色会偏转,如紫色会错误转成绿色)
- 可访问性受限(文档搜索/屏幕阅读器)
改为内联元素避免了上述问题。
已知待改进问题:
- MathJax 加载慢:可能需要提前固定好占位尺寸,避免加载后内容偏移的影响
- 默认输出为 inline 模式:可能需要在编辑器内添加 inline/display 选项,明确输出样式
关于问题
点进含有公式的文章先显示一堆文字,然后才显示公式
这是为了减小内容偏移的影响(先用文本占位),同时需要通过网络加载 MathJax 库,首次渲染要一些加载时间。
引文的公式同引文一样是灰色
这是因为内联元素样式继承,公式文本与正常文本一致会不显得突兀。
当公式过长时分成多行显示
这是为了更好的支持窄屏设备(一半以上的浏览都在手机上)启用了自动断行特性,如果不进行断行图片会挤压在一行,使公式显得过小无法辨识。
新旧对比图(上新下旧):