六维教程

CSS 溢出处理

内容比容器大时怎么办?文字太长、图片太大、子元素太宽,都会让内容从盒子里漏出来。overflow 就是管这件事的属性,它决定超出部分怎么处理。

overflow 的四个值

overflow 有四个值,分别对应四种处理方式。

.box {
  overflow: visible;  /* 默认,超出部分直接露出来 */
}
.box2 {
  overflow: hidden;   /* 超出部分裁剪掉 */
}
.box3 {
  overflow: scroll;   /* 超出时显示滚动条 */
}
.box4 {
  overflow: auto;     /* 需要时显示滚动条 */
}

visible 是默认值,内容溢出时不会出现滚动条,直接显示在盒子外面。hidden 裁剪掉看不见的部分,scroll 不管有没有超出都显示滚动条,auto 最智能,只有内容溢出时才出现滚动条。

水平垂直分开控制

overflow-x 管水平方向,overflow-y 管垂直方向。

.box {
  overflow-x: hidden;   /* 隐藏横向溢出 */
  overflow-y: auto;     /* 纵向超出可滚动 */
}

卡片布局里图片太宽撑破容器,用 overflow: hidden 裁掉。列表区域内容多,用 overflow-y: auto 出现滚动条。两个方向分开写,控制更精细。

常见应用一,圆角图片裁剪

图片超出圆角容器时,配合 overflow: hidden 把图片裁进圆角里。

<style>
  .avatar {
    width: 80px;
    height: 80px;
    border-radius: 50%;
    overflow: hidden;
  }
  .avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
  }
</style>
<div class="avatar">
  <img src="head.jpg" alt="头像">
</div>

圆角对图片不生效,因为图片是方形矩形。容器加 overflow: hidden 后,超出圆角的部分被裁掉,头像就变圆了。这是头像处理的固定套路。

常见应用二,文字省略号

单行文字超出隐藏并显示省略号,需要三个属性配合。

.title {
  white-space: nowrap;       /* 不换行 */
  overflow: hidden;          /* 隐藏超出部分 */
  text-overflow: ellipsis;   /* 超出显示省略号 */
}

white-space: nowrap 让文字不换行,overflow: hidden 裁掉超出部分,text-overflow: ellipsis 在裁剪处显示省略号。三个缺一不可,这是文本效果里的经典组合。

常见应用三,图片等比缩放

响应式布局里让图片不撑破容器。

img {
  max-width: 100%;
  height: auto;
}

图片宽度超过容器时自动缩到容器宽度,高度等比变化不拉伸。这条规则在响应式设计里有详细讲解。

注意 vertical-align 的坑

行内元素垂直方向的对齐会漏出 3-5 像素的空白,比如图片底部总有一条缝隙。解决办法是给图片设 display: block 或者 vertical-align: middle

img {
  vertical-align: middle;
}

小结

overflow 解决内容超出容器的问题。visible 默认露出,hidden 裁剪,scroll 常显滚动条,auto 按需出现。水平垂直用 overflow-xoverflow-y 分开控制。圆角裁剪图片、文字省略号、响应式图片,三个场景都要靠它。

上一篇
CSS 定位
下一篇
CSS 对齐与居中