跳转至

渐变只渐变固定的高度

在 CSS 中,要让渐变只在固定的高度内发生,最直接、最常用的方法是通过 background-size 限制渐变区域的大小,并结合 background-repeat: no-repeat 阻止其平铺。 以下是实现这一效果的几种主要方式:

1. 使用 background-size(最推荐,最灵活)

你可以通过 background-size 设置渐变的宽度和高度。让宽度占满(100%),高度设为你的固定值(例如 50px)。

.gradient-fixed-height {
  /* 基础背景色(渐变以外的区域) */
  background-color: #f0f0f0; 

  /* 定义渐变 */
  background-image: linear-gradient(to bottom, #ff7e5f, #feb47b);

  /* 关键:设置渐变大小(宽 100%,高 50px) */
  background-size: 100% 50px;

  /* 关键:防止渐变在垂直方向无限循环平铺 */
  background-repeat: no-repeat; 
}

2. 使用控制颜色位置(Color Stops)

如果你希望整个元素背景是一个整体,但渐变只发生在顶部或底部的固定高度内,其余部分为纯色,你可以直接在渐变属性中写死像素值。

.gradient-color-stops {
  /* 从 0 到 50px 发生渐变,50px 之后全部变成纯白色 */
  background-image: linear-gradient(to bottom, #ff7e5f 0px, #feb47b 50px, #ffffff 50px);
}

3. 使用伪元素 ::before / ::after

如果你不想动原元素的背景属性,或者需要给渐变区域加一些特殊效果(如阴影、定位),可以用伪元素撑起一个固定高度的层。

.parent-element {
  position: relative;
}

.parent-element::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 50px; /* 固定高度 */
  background: linear-gradient(to bottom, #ff7e5f, #feb47b);
  z-index: 1;
}

顶部最优雅方式

.top-gradient {
  width: 100%;
  height: 400px; /* 元素总高度 */
  background-color: #ffffff; /* 50px 渐变区域以下的底色 */

  /* 1. 定义顶部的渐变色 */
  background-image: linear-gradient(to bottom, #ff7e5f, #feb47b);

  /* 2. 限制渐变尺寸:宽 100%,高固定为 50px */
  background-size: 100% 50px;

  /* 3. 确保渐变靠顶部对齐,且不向下平铺重复 */
  background-position: top;
  background-repeat: no-repeat;
}

评论