父级元素设置了overflow:hidden,子元素图片仍然覆盖了padding?

父级元素设置了overflow:hidden,子元素图片仍然覆盖了padding

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        .content {
            width: 200px;
            height: 100px;
            padding: 20px;
            overflow: hidden;
        }

    </style>
</head>
<body>

<section class="content">
    <img src="http://pic.qiantucdn.com//images/zhuanti/1504163999.jpg">
</section>

</body>
</html>

clipboard.png

这好奇怪啊,你说背景确实是可以覆盖到padding的,怎么子元素也覆盖到padding了,而且上面左面的padding并没有覆盖到。 规范是这样的吗?感觉不符合常理啊。
如果我想达到溢出隐藏的效果要怎么做(不给图片设置宽度)?

阅读 9.9k
2 个回答

首先有两个定义可以明确下

  • 标准盒模型中 , 从里到外是 内容 、内边距(padding)、边框(border)、外边距(margin)。
  • overflow 中的超出 是指 超出元素框 及border

针对上边现象

  • img 属于父元素的内容 。
  • padding属于内边距。超出隐藏的部分是border以外。所以看到了上边图中的这种现象

如何解决

  • 通过 把父元素的padding更改为margin 这样 隐藏就会变成 img只有margin里的部分会显现。如图。
    图片描述
.content {
    width: 200px;
    height: 100px;
    margin: 20px;
    overflow: hidden;
}
<!doctype html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        .content {
            width: 200px;
            height: 100px;
            padding: 20px;
            /*overflow: hidden;*/
            border: 1px solid #333;
        }
        
        .child {
            width: 100%;
            height: 100%;
            border: 1px solid red;
            overflow: hidden;
        }
    </style>
</head>

<body>

    <section class="content">
        <div class="child">
            <img src="http://pic.qiantucdn.com//images/zhuanti/1504163999.jpg">
        </div>
    </section>

</body>

</html>

没搞懂为什么出现这种情况,用了一个div解决,img没有设置宽高,还是溢出隐藏

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