Padding 不为 0 ,Chrome 缩放 120%,子元素内容宽高异常

这是两个简单得几乎不能再简单的块块了

<!DOCTYPE html><html><head>
<meta charset="utf-8">
<title>DEBUG</title>
<style>
body {
  margin: 0;
}
header {
  height: 32px;
  padding: 16px;
  background-color: #9c27b0;
}
div {
  width: 32px;
  height: 32px;
  background: rgba(0,0,0,.1);
}
</style></head><body>
<header><div id="BUG"></div></header>
<script>
var BUG = document.getElementById("BUG");
console.log(BUG.clientHeight);
</script>
</body></html>

就是出了问题

1.运行这个网页,打开你的控制台。

咳咳…

Padding+1px

事实是 #BUG 的clientWidthclientHeight都多了1px。若是 header 的padding为0就正常。问题不在于 header 是个header。

Padding+1px-3

元素框图是正常的

2.

如果在 #BUG(block/inline-block) 之前/之后加 块级/内联,会有不同结果。例如,在 #BUG(inline-block) 之后加一个块级,#BUG的margin超过2.08333315120803…px,则clientHeight正常。

3.

多的这1px多在 #BUG 底部和右部。从 “有时 #BUG(overflow: hidden) 内容溢出时色彩无法覆盖这1px” 看出。同时从中知道 这是个 BUG ?

Padding+1px-2

非常情况下浏览器的表现(#BUG::before 宽高200%,半透明,中心与 #BUG 中心重合,以及其他神奇的CSS和JS。此为JS完成 ::before 的opacity从0到1之后的某一断点)

注:Chrome 缩放自定义120%,默认缩放值则无问题。

阅读 2.5k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题