CSS 创建不规则图形并设置阴影

css 绘制不规则图形

使用 MDN clip-path介绍

tsx 复制代码
style={{
  clipPath: 'polygon(0 0, 100% 0, 100% 100%, 8% 100%)',
}}
tsx 复制代码
 const funnelData: FunnelItem[] = [
    {
      label: '会话总数',
      value: 64,
    },
    {
      label: '咨询用户数',
      value: 35,
    },
    {
      label: '留资数',
      value: 16,
    },
  ];

  return (
    <div className="w-[330px] bg-white p-6 pr-16">
      <h2 className="mb-6 text-base font-medium">会话漏斗</h2>
      <div className="relative">
        {funnelData.map((item, index) => (
          <div
            key={item.label}
            className={cn(
              'relative mb-1 flex h-16 items-center justify-between',
              'my-2 px-6 text-white',
              index === 0 && 'w-full bg-new-media-blue-900',
              index === 1 && 'w-[90%] bg-new-media-blue-600',
              index === 2 && 'w-[80%] bg-new-media-blue-300',
              'ml-auto',
            )}
            style={{
              clipPath: 'polygon(0 0, 100% 0, 100% 100%, 8% 100%)',
            }}
          >
            <span className="ml-2 font-bold">{item.label}</span>
            <span className="text-2xl font-medium">{item.value}</span>
          </div>
        ))}

        {/* 右侧标签和箭头 - 开口率 */}
        <img
          src={ApertureRatio}
          alt="开口率"
          className="absolute right-[-30px] top-[20px] h-[70px]"
        />

        {/* 右侧标签和箭头 - 转化率 */}
        <img
          src={ConversionRate}
          alt="转化率"
          className="absolute bottom-[20px] right-[-30px] h-[70px]"
        />
      </div>
    </div>
  );

可以拖拽生成 css 代码的 clip-path 的网站

www.jiangweishan.com/tool/clippy...

不规则图形添加阴影小技巧

添加阴影一般使用 box-shadow,但为不规则图形添加阴影可能没效果。

创建不规则图形

tsx 复制代码
  <div className={styles.demo}></div>
css 复制代码
.demo {
  background: green;
  padding: 30px;
  clip-path: polygon(30px 0%, 100% 0%, 100% 100%, 30px 100%, 0 50%)
}
css 复制代码
.demo {
  background: green;
  padding: 30px;
  clip-path: polygon(30px 0%, 100% 0%, 100% 100%, 30px 100%, 0 50%);
  box-shadow: 0 0 10px 2px #323200;
}

没效果

正确做法 添加一个父元素 div 包裹,然后使用 filter: drop-shadow 添加阴影

tsx 复制代码
<div className={styles.shadow}>
  <div className={styles.demo}></div>
</div>
css 复制代码
.shadow {
  filter: drop-shadow(-1px 6px 3px rgba(50, 50, 0, 0.5));
}

.demo {
  background: green;
  padding: 30px;
  clip-path: polygon(30px 0%, 100% 0%, 100% 100%, 30px 100%, 0 50%);
  // box-shadow: 0 0 10px 2px #323200;
}

成功设置上阴影生效~

相关推荐
QQ1__8115175154 小时前
Spring boot名城小区物业管理系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】
前端·vue.js·spring boot
钛态4 小时前
前端微前端架构:大项目的救命稻草还是自找麻烦?
前端·vue·react·web
一粒黑子4 小时前
【实战解析】阿里开源 PageAgent:纯前端 GUI Agent,一行JS让网页支持自然语言操控
前端·javascript·开源
独角鲸网络安全实验室4 小时前
2026微信小程序抓包全解析:从实操落地到合规风控,解锁前端调试新范式
前端·微信小程序·小程序·抓包·系统代理绕过·https证书严格校验·进程隔离
紫微AI4 小时前
前端文本测量成了卡死一切创新的最后瓶颈,pretext实现突破了
前端·人工智能·typescript
GISer_Jing4 小时前
AI前端(From豆包)
前端·aigc·ai编程
IT枫斗者4 小时前
前端部署后如何判断“页面是不是最新”?一套可落地的版本检测方案(适配 Vite/Vue/React/任意 SPA)
前端·javascript·vue.js·react.js·架构·bug
测试修炼手册4 小时前
[测试技术] 深入理解 JSON Web Token (JWT)
前端·json
AI老李4 小时前
2026 年 Web 前端开发的 8 个趋势!
前端
里欧跑得慢4 小时前
15. Web可访问性最佳实践:让每个用户都能平等访问
前端·css·flutter·web