You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为div元素的顶部和底部同时添加遮罩渐变?

实现div顶部和底部同时添加渐变遮罩

方法一:原生CSS实现(无需插件)

直接通过CSS的mask属性就能同时定义顶部和底部的渐变遮罩,不用依赖额外插件。给外层容器添加自定义样式:

.gradient-mask-top-bottom {
  /* 清晰的多渐变叠加写法 */
  mask: linear-gradient(to bottom, transparent, black 80%) 0 0 / 100% 50% no-repeat,
        linear-gradient(to bottom, black 20%, transparent) 0 100% / 100% 50% no-repeat;
  /* 兼容webkit内核浏览器 */
  -webkit-mask: linear-gradient(to bottom, transparent, black 80%) 0 0 / 100% 50% no-repeat,
               linear-gradient(to bottom, black 20%, transparent) 0 100% / 100% 50% no-repeat;
}

把这个类加到你的外层div上即可:

<div className="inline-flex flex-nowrap gradient-mask-top-bottom">
  <!-- 内部滚动内容 -->
</div>

方法二:扩展现有gradient-mask插件(适配Tailwind场景)

如果你想继续用已安装的gradient-mask插件,可通过扩展Tailwind配置添加组合遮罩的自定义类。在tailwind.config.js中添加:

module.exports = {
  plugins: [
    function({ addUtilities }) {
      addUtilities({
        '.gradient-mask-tb-80': {
          mask: 'linear-gradient(to bottom, transparent, black 80%) 0 0 / 100% 50% no-repeat, linear-gradient(to bottom, black 20%, transparent) 0 100% / 100% 50% no-repeat',
          '-webkit-mask': 'linear-gradient(to bottom, transparent, black 80%) 0 0 / 100% 50% no-repeat, linear-gradient(to bottom, black 20%, transparent) 0 100% / 100% 50% no-repeat',
        }
      })
    }
  ]
}

之后直接使用这个自定义类:

<div className="inline-flex flex-nowrap gradient-mask-tb-80">
  <!-- 内部滚动内容 -->
</div>

原理说明

CSS的mask属性支持用逗号分隔多个渐变层,每个层可单独设置位置、大小和重复规则,这样就能同时实现顶部透明过渡到底部实色、底部实色过渡到透明的双重遮罩效果。

内容的提问来源于stack exchange,提问作者Conant Quah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 20:10:00