如何让overflow限制padding之内显示

在一个设置了padding的div里设置oveflow:hidden之后,内容超出了div之后,超出的内容会在padding里面显示。。。我想要做的是超出之后超出的内容会被限制在padding之内

阅读 17.2k
5 个回答

overflow: hidden; 可以使子元素溢出父元素外后隐藏。
padding 是内边距,是元素的一部分,所以溢出到 padding 里不属于溢出父元素,overflow 就不会使之隐藏。

如果是文字内容的话,暂时只能在父容器内在嵌套一个容器并在容器上 overflow:hidden

Snipaste_2020-03-05_09-50-40.jpg

如果是背景图片的话,可以在父容器添加样式 background-clip:content-box

Snipaste_2020-03-05_09-48-31.jpg

用 margin 或者 内部再嵌套一个容器

新手上路,请多包涵

我想到的一个解决办法是加上一个中间层,因为padding是算盒子内容的,所以加上一个中间层,把中间层宽高撑满父容器,然后中间层设置溢出隐藏overflow:hidden就行了



演示代码:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      .center {
        display: flex;
        align-items: center;
        justify-content: center;
      }
      .outer {
        padding: 40px;
        width: 200px;
        height: 200px;
        background-color: yellow;
      }
      .wrapper {
        width: 100%;
        height: 100%;
        overflow: hidden;
      }
      .inner {
        width: 100px;
        height: 100px;
        background-color: red;
        animation: move linear 3s infinite;
      }
      @keyframes move {
        from {
          transform: translateX(150%);
        }
        to {
          transform: translateX(0);
        }
      }
    </style>
  </head>
  <body>
    <div class="outer center">
      <div class="wrapper center">
        <div class="inner"></div>
      </div>
    </div>
  </body>
</html>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题