看到一个面试题 关于行内元素span的


    <style>
        * {
            padding: 0;
            margin: 0;
        }
        
        span {
            padding: 100px;
            border: 1px solid red;
        }
    </style>
<body>
    <span>1</span>
    <span>2</span>
</body>

我当时就笑了还有这种题? 送分的?

我想的结果:
image.png

实际结果:
image.png

我擦! 啪啪啪打脸!

为什么padding-top被无视了?
提出这个疑问后我又被打脸了!

    <style>
        * {
            padding: 0;
            margin: 0;
        }
        
        span {
            padding: 100px;
            border: 1px solid red;
        }
      div{
          border: 1px solid red;
      }
    </style>
<body>
    <span>1</span>
    <span>2</span>
    <div>3</div>
</body>

image.png
其实span是不支持padding-top、padding-bottom,不过奇怪的是既然padding不支持那为什么边框显示是有padding-bottom呢?
查了好多文章 结果只得到了一句话 行内不可替换元素padding会对边框产生影响!

我擦 不可替换元素 老子干了不到十年前端没听过啊?

是的官方英文文档和高程上都有说过

span、a属于不可替换元素
input属于可替换元素

padding、margin针对不可替换元素 padding-top、padding-bottom和margin-top、margin-bottom无效。。。无效。。。

哈哈 总结一下多读书是有用的!

您的点赞是我继续下去的动力,谢谢!


我是一个前端
1.6k 声望55 粉丝

所有的成功都来自坚持!