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

在Next.js+Chakra UI中实现图片Alpha Mask透明度渐变

实现类似Figma Alpha Mask的线性透明度渐变效果

要实现和Figma Alpha Mask一致的线性透明度渐变,核心是使用CSS的mask-image属性(配合mask-mode: alpha),它直接作用于图片的Alpha通道,和Figma遮罩的原理完全匹配——这也是你之前尝试的方法没达到预期的原因:之前的方案都是颜色混合或叠加,而非真正的Alpha遮罩。

具体实现方案

1. Chakra UI 直接实现

通过Chakra UI的css属性为图片设置遮罩样式:

import { Box, Image } from '@chakra-ui/react';

export default function MaskedImage() {
  return (
    <Box maxW="md">
      <Image
        src="/your-image-path.jpg"
        alt="带Alpha遮罩的图片"
        objectFit="cover"
        css={{
          // 从左到右:完全透明 → 完全显示,可替换方向如to bottom/to top/to left
          maskImage: 'linear-gradient(to right, transparent 0%, black 100%)',
          maskMode: 'alpha',
          // 兼容webkit内核浏览器(Chrome、Safari等)
          WebkitMaskImage: 'linear-gradient(to right, transparent 0%, black 100%)',
          WebkitMaskMode: 'alpha',
        }}
      />
    </Box>
  );
}
  • 调整渐变比例:比如transparent 20%, black 80%可以缩小渐变过渡区域。

2. Tailwind CSS 实现(自定义工具类)

先在tailwind.config.js中添加自定义遮罩工具类:

/** @type {import('tailwindcss').Config} */
module.exports = {
  content: [
    './pages/**/*.{js,ts,jsx,tsx}',
    './components/**/*.{js,ts,jsx,tsx}',
  ],
  theme: {
    extend: {
      maskImage: {
        'linear-right': 'linear-gradient(to right, transparent 0%, black 100%)',
        'linear-bottom': 'linear-gradient(to bottom, transparent 0%, black 100%)',
      },
      maskMode: {
        alpha: 'alpha',
      },
    },
  },
  plugins: [],
};

然后在组件中使用:

import Image from 'next/image';

export default function MaskedImage() {
  return (
    <div className="max-w-md">
      <Image
        src="/your-image-path.jpg"
        alt="带Alpha遮罩的图片"
        width={600}
        height={400}
        className="object-cover mask-image-linear-right mask-mode-alpha 
                   -webkit-mask-image-linear-right -webkit-mask-mode-alpha"
      />
    </div>
  );
}

为什么之前的方法无效?

  • 线性渐变背景:仅在图片下方添加渐变,图片本身透明度无变化,无法实现遮罩效果。
  • multiply混合模式:属于颜色混合逻辑,会改变图片色彩,并非直接对Alpha通道处理,不符合需求。
  • 叠加渐变Box:是在图片上方覆盖一层渐变,属于视觉遮挡,而非图片自身的透明度渐变,会出现颜色叠加问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 07:41:06