当前位置: 首页 > news >正文

svg实现常见伪3D效果

使用 SVG 可以通过多种技巧实现视觉上的“伪 3D”效果,虽然它本身是二维矢量图形格式,但结合 渐变、滤镜、变形(transform)、阴影、路径叠加等技术,可以模拟出立体感、透视感和深度感。对于需要3D效果又不想使用three.js等技术时,可以使用svg进行伪3D,节省资源,也更容易上手。


文章目录

    • 常见的 SVG “伪 3D”实现方式
      • 1. **渐变 + 阴影 模拟立体按钮**
      • 2. **变形(Transform)模拟倾斜/透视**
      • 3. **滤镜模拟光照与凹凸感**
      • 4. **路径叠加 + 渐变 实现立体图标**
      • 5. **多层叠加 + 投影 实现卡片式立体感**

常见的 SVG “伪 3D”实现方式

1. 渐变 + 阴影 模拟立体按钮

<svg width="200" height="80"><defs><!-- 渐变背景 --><linearGradient id="btnGrad" x1="0%" y1="0%" x2="0%" y2="100%"><stop offset="0%" stop-color="#4CAF50" /><stop offset="100%" stop-color="#45a049" /></linearGradient><!-- 阴影滤镜 --><filter id="shadow" x="-50%" y="-50%" width="200%" height="200%"><feDropShadow dx="0" dy="4" stdDeviation="4" flood-color="#000" flood-opacity="0.3"/></filter></defs><!-- 使用渐变填充矩形 --><rect x="20" y="10" rx="12" ry="12" width="160" height="60"fill="url(#btnGrad)" filter="url(#shadow)" /><!-- 添加文字 --><text x="100" y="50" text-anchor="middle" font-size="20" fill="#fff" font-family="Arial">Click Me</text>
</svg>

2. 变形(Transform)模拟倾斜/透视

使用 skewX, skewY, rotate 等属性制造倾斜角度,模拟 3D 视觉。

<svg width="200" height="150"><rect x="50" y="30" width="100" height="60"fill="#e74c3c"transform="skewX(-20) rotate(10 100 60)" />
</svg>

3. 滤镜模拟光照与凹凸感

使用 <filter> 创建高光或阴影来增强立体感:

<svg width="200" height="100"><defs><filter id="bevel"><feDiffuseLighting in="SourceAlpha" lighting-color="#fff" surfaceScale="5"><feDistantLight azimuth="45" elevation="60"/></feDiffuseLighting><feComponentTransfer><feFuncA type="linear" slope="1.5" intercept="0"/></feComponentTransfer></filter></defs><rect x="20" y="20" width="160" height="60" fill="#3498db" filter="url(#bevel)" />
</svg>

4. 路径叠加 + 渐变 实现立体图标

通过多个路径组合并应用渐变色,可模拟按钮或图标的浮起感。

<svg width="100" height="100"><defs><radialGradient id="iconGrad" cx="50%" cy="50%" r="50%"><stop offset="0%" stop-color="#ffffff" stop-opacity="0.8"/><stop offset="100%" stop-color="#3498db" stop-opacity="1"/></radialGradient></defs><!-- 主体圆形 --><circle cx="50" cy="50" r="40" fill="url(#iconGrad)" stroke="#2980b9" stroke-width="2"/><!-- 内部高光路径 --><path d="M30,50 Q50,20 70,50 Q50,80 30,50 Z" fill="#fff" opacity="0.3"/>
</svg>

5. 多层叠加 + 投影 实现卡片式立体感

<svg width="250" height="150"><defs><filter id="cardShadow"><feDropShadow dx="0" dy="4" stdDeviation="6" flood-color="#000" flood-opacity="0.2"/></filter></defs><!-- 卡片主体 --><rect x="20" y="20" rx="15" ry="15" width="200" height="100"fill="#ecf0f1" stroke="#bdc3c7" stroke-width="1" filter="url(#cardShadow)" /><!-- 上方高光条 --><rect x="20" y="20" rx="15" ry="15" width="200" height="20"fill="linear-gradient(to bottom, #ffffff, transparent)" opacity="0.5" />
</svg>

相关文章:

  • MySQL优化全链路实践:从慢查询治理到架构升级
  • 使用ReactNative加载HarmonyOS Svga动画
  • 算法打开13天
  • 多任务——进程
  • 1857. 有向图中最大颜色值
  • 前端面经 响应式布局
  • GitHub 趋势日报 (2025年05月31日)
  • Git 入门学习教程
  • day 1 任务以及具体安排:第一章 数组part01
  • 学习日记-day20-6.1
  • CppCon 2014 学习: C++ Test-driven Development
  • AI 医疗影像诊断:技术实现、临床应用与未来趋势 —— 以肺部 CT 早期肺癌检测为例
  • 通过内核寄存器排除HardFault
  • 头歌数据库课程实验(角色管理)
  • 正则表达式笔记
  • #14 【Kaggle】 Drawing with LLMs 金牌方案赏析
  • InternVL2.5-多模态大模型评估专业图片
  • IDEA PyCharm 等工具如何同时打开多个窗口
  • VeriFree:无需Verifier的通用RL框架
  • TensorFlow深度学习实战(19)——受限玻尔兹曼机
  • 网站做的文字乱码/长沙seo
  • 网站建设公司联系电话/百度营销推广
  • 简单的网站建设步骤/全网营销是什么
  • 做旅行网站多少钱/新媒体运营主要做什么
  • 网站seo快速/营销推广有哪些公司
  • 河南濮阳建设局网站/泉州seo培训