css - PC Chrome 和 Mac Chrome 计算盒子高度的方式不同
问题描述
我正在处理的网站设计要求在文本底部压扁下划线,从字面上触及基线。我绝对定位了一个after
带有边框底部的伪元素来完成此操作,并且我看到 Mac Chrome 和 PC Chrome 中的框高度之间存在奇怪的不一致。
注意右上角的“访问”链接。此屏幕截图是 Mac Chrome,它应该是这样的。<a>
开发工具声称标签的盒子高度是30px
.
在 PC Chrome 中查看同一站点的情况。如您所见,文本和下划线下方有一个小间隙,因为 PC Chrome 认为相同的确切元素的框高度为22px
.
下划线的 CSS:
a {
position: relative;
&::after {
content: '';
position: absolute;
top: 1em;
width: 100%;
left: 0;
border-bottom: 4px solid;
}
}
如您所见,1em
将下划线放置在两个不同操作系统上的不同位置。
这里发生了什么!?
以下是我检查过的内容的汇总:
- 我使用FontSquirrel导出了 woff/woff2 文件,并将“Match X-Height”选项打开为“100%”
- 两种浏览器都将缩放设置为 100%
- 元素的计算字体大小在两者上都是 22px。
- 元素的计算行高在两者上都是 22px。
- 两个元素都有
box-sizing: content-box
。
解决方案
如果盒子模型确实是问题所在,您可以在a
标签和::after
元素上设置 box-sizing 属性以强制一致地渲染盒子模型,然后根据需要调整变量。
box-sizing: border-box
推荐阅读
- javascript - 如何允许所有第三方在 chrome 中使用 javascript 或 python?
- c# - 如何在 C# 中模拟用于单元测试的记录器?
- git - 无法添加到存储库
- mapbox-gl-js - Mapbox-gl-draw 单击按钮后更改绘图样式
- uml - 一群人可以成为用例图中的参与者吗?
- angular - 使用库快速设置 Angular monorepo
- c++ - 如何实现部分输出到 cmd 窗口和部分重定向到 c++ 程序的文件?
- excel - Excel VBA 在第二个空格后拆分
- django - 在 django 中检查我的数据库时出现问题
- cmd - IP 地址以 fra 和 ec 开头是什么意思?