已经清空了各种元素的margin和padding, 为什么此时<body>的高度却是21px呢?

先看代码:
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JS Bin</title>
  <style type="text/css">
      *{
          margin:0 ;
          padding: 0;
      }
  </style>
</head>
<body>
    <img src="" alt=""/>
</body>
</html>
已经清空了各种元素的margin和padding,
为什么此时<body>的高度却是21px呢?<body>中不是什么都没有吗?

图片描述

阅读 2.5k
3 个回答

在内联盒模型中存在一个名叫“strut”的空白盒,是一个存在于每个“行框盒子”前面,同时具有该元素的字体和行高属性的0宽度的内联盒,此时如果你设置html {font-size: 0} 则body高度就会变为0

因为body标签里有空白字符,浏览器默认字体大小为16px,然后再加上行高(忘记多少了),算起来的话就是21px。不信你把<img>标签替换成 &nbsp;,会是一样的效果。可以尝试将body的font-size设置为0,那此时body的高度就是0了

img元素是行内元素。结合上面各位说的具有空白盒即是没有字体也会有行高

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