首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >SVG -如何在具有rgba填充的路径上放置嵌入阴影?

SVG -如何在具有rgba填充的路径上放置嵌入阴影?
EN

Stack Overflow用户
提问于 2020-06-23 16:22:23
回答 2查看 274关注 0票数 0

假设我在SVG中有一个带有半透明黑色填充(或任何半透明颜色)的圆形(或任何形状):

代码语言:javascript
运行
AI代码解释
复制
<circle r="50" fill="rgba(0, 0, 0, 0.2)" />

如何删除透明度独立于形状填充的可配置(颜色、模糊、位置)嵌入阴影?

注意:我事先不知道任何关于背景的东西,SVG必须是真正透明的,而不是伪造的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-28 19:10:07

要做到这一点,最简单的方法是先插入阴影,将源图形的颜色重置为黑色/完全不透明。

代码语言:javascript
运行
AI代码解释
复制
<svg width="800px" height="600px" viewBox="0 0 400 300">
  <defs>
    <filter id="inset-shadow">
      <feColorMatrix in="SourceGraphic" type="matrix" values="0 0 0 0 0 
        0 0 0 0 0 
        0 0 0 0 0 
        0 0 0 100 0" result="opaque-source"/>
      <feGaussianBlur stdDeviation="5"/>
      <feOffset dy="10"/>
      <feComposite operator="xor" in2="opaque-source"/>
      <feComposite operator="in" in2="opaque-source"/>
      <feComposite operator="over" in2="SourceGraphic"/>
    </filter>
  </defs>
  
  <circle filter="url(#inset-shadow)" cx="100" cy="100" r="50" fill="rgba(0, 0, 0, 0.2)" />
  
  <svg>

或者你可以使用光照效果来做这件事--更复杂,而且性能可能相当复杂。

代码语言:javascript
运行
AI代码解释
复制
<svg width="800px" height="600px" viewBox="0 0 400 300">
  <defs>
    <filter id="top-light">
      <feColorMatrix type="matrix" values="1 0 0 0 0 
        0 1 0 0 0 
        0 0 1 0 0 
        0 0 0 100 0"/>
      <feGaussianBlur stdDeviation="2"/>
      <feComposite operator="in" in2="SourceGraphic"/>
      <feDiffuseLighting surfaceScale="200" diffuseConstant="1" kernelUnitLength="1" lighting-color="white" result="lightmap">
        <fePointLight x="100" y="0" z="10" />
      </feDiffuseLighting>
      <feGaussianBlur stdDeviation="2"/>
      
    <feColorMatrix type="luminanceToAlpha" />
    
    // Insert another color matrix in here to recolor the shadow
     <feComposite operator="in" in2="SourceGraphic"/>
      <feComposite operator="over" in2="SourceGraphic"/>

     
    </filter>
  </defs>
  
  <circle filter="url(#top-light)" cx="100" cy="100" r="50" fill="rgba(0, 0, 0, 0.2)" />
  
  <svg>

票数 2
EN

Stack Overflow用户

发布于 2020-06-23 17:09:21

不是绘制圆,而是绘制一条表示带孔的矩形的路径,并将过滤器应用于此路径。

您所看到的金色圆圈实际上是在阴影路径后面绘制的一个矩形。

代码语言:javascript
运行
AI代码解释
复制
<svg viewBox="-100 -100 200 200" width="300"> 
  <defs>
    <filter id="f">
       <feGaussianBlur in="SourceAlpha" stdDeviation="5" result="desenfoque"></feGaussianBlur>
       <feOffset in="desenfoque" dx="3" dy="3" result="sombra"></feOffset>
       <feMerge>
         <feMergeNode in="sombra"></feMergeNode>
         <feMergeNode in="SourceGraphic"></feMergeNode>
       </feMerge>
    </filter>
  </defs>
  <rect x="-100" y="-100" width="200" height="200" fill="gold" />
  <path fill="yellow" d="M-100,-100v200h200v-200h-200M50,0A50,50 0 0 1 -50,0A50,50 0 0 1 50,0z" filter="url(#f)" />
</svg>

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62539360

复制
相关文章
Parallax.js–自适应智能设备方向的视差引擎
今天大师兄给大家分享一款功能非常强大的javascript视觉差特效引擎插件:Parallax.js。
程序员老鱼
2022/12/02
1.7K0
滚动视差让你不相信“眼见为实”
视差滚动(Parallax Scrolling)是指让多层背景以不同的速度移动,形成立体的运动效果。
前端森林
2020/04/23
2.2K0
滚动视差让你不相信“眼见为实”
摄影机-跟随玩家并添加背景视差
在本节中,我们将了解任何游戏中的基本元素:相机。在大多数标志性的平台游戏中,如Mario,Metroid,Super Meat boy,相机的良好实现使整个游戏体验更加完美。
iOSDevLog
2019/03/11
1.3K0
CVPR 2019 | 国防科大提出双目超分辨算法,效果优异代码已开源
近日,来自国防科技大学等单位的学者提出了新型双目超分辨算法,充分利用了左右图的信息提升图像超分辨效果;
OpenCV学堂
2019/05/31
2.8K0
[先行者课程]--0312视差效果--课堂笔记
今天是3月12号,来学习一下视差滚动。 严格来讲,它其实是一种网页效果,而不是一个前端组件,顶多是一个插件。 插件,一般是用来实现网页上的一个或多个功能。 而组件,是为实现网页的业务逻辑,而封装的一组功能代码。它一般是特定的,不特别的强调通用性。 //============ 视差滚动(Parallax Scrolling) parallax[ˈpærəˌlæks] n. 视差(量),视差角度; 它是一种比较优雅酷炫的页面展示的方式, 今天咱们研究下视差滚动的原理和实现方式。 视差的原理, 视差就是从有一定
web前端教室
2018/02/06
9600
图像拼接--Parallax-tolerant Image Stitching
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhangjunhit/article/details/83054318
用户1148525
2019/05/27
1.5K0
npm依赖(类库工具)
写到最后总结得差不多了,后续如果我想起还有哪些类库工具遗漏的,会继续在这篇文章上补全,同时也希望各位倔友对文章里的要点进行补充或者提出自己的见解。欢迎在下方进行评论或补充喔,喜欢的点个赞或收个藏,保证你在开发时用得上。
JowayYoung
2020/04/01
2.4K0
Swiper实现全屏视觉差轮播
Swiper作为当代流行的js框架,非常受到青睐,这里演示swiper在pc端全屏视觉轮播的效果,这也是pc端常用的一种特性
用户3159471
2018/09/13
3.5K0
CSS | 视差滚动 | 笔记
image-20230720145639107css3中的坐标系,rotateX就是绕着x轴旋转,rotateY就是绕着Y轴旋转,rotateZ就是绕着z轴旋转(也就是xy平面的旋转)。 perspective属性用来设置视点,在css3的模型中,视点是在Z轴所在方向上的。 translateX,translateY表现出在屏幕中的上下左右移动,transformZ 的直观表现形式就是大小变化, 实质是 XY平面相对于视点的远近变化(说远近就一定会说到离什么参照物远或近,在这里参照物就是perspective属性)。 比如设置了 perspective 为 200px; 那么 transformZ 的值越接近 200,就是离的越近,看上去也就越大,超过200就看不到了, 因为相当于跑到后脑勺去了,你不可能看到自己的后脑勺。 (200-transformZ的值)就是视点和xy平面的距离(初始是屏幕的位置,此时transformZ的值为0)。
yiyun
2023/07/24
8660
CSS | 视差滚动 | 笔记
利用OpenCV建立视差图像
我们都看过3D电影,他们看起来都很酷,这给了我们一个想法,使用一些工具通过改变看图像视角,模拟观众的头部移动。
小白学视觉
2021/01/20
1.1K0
Discuz解决帖子页面字体错位和大小变大
最近在新版2.0社区开发时,发现了一个很有意思的问题,字体文件会在一些情况下无法加载,所以就对着这个Bug开始着手解决,结果竟掏了360的底...
Yangsh888
2022/08/30
9560
8个有用的 CSS 技巧:视差图像,sticky footer 等等
CSS是一种独特的语言。乍一看,这似乎很简单,但是,某些在理论上看起来很简单的效果在实践中往往不那么明显。
前端小智@大迁世界
2019/04/18
1.2K0
30个你应该在2022年里使用的JavaScript 动画库
英文 | https://javascript.plainenglish.io/30-javascript-animation-libraries-for-2022-db33a472e02d
winty
2022/02/18
3.4K0
【React+Typescript+Antd】页面内局部路由跳转
因为首页有导航,有页头、页尾这些固定的布局,而内容板块可以随导航而变动。这时候全局路由已经不能满足页面局部刷新的需求。
毛大姑娘
2020/09/10
3.6K0
滚动视差?CSS 不在话下
视差滚动(Parallax Scrolling)是指让多层背景以不同的速度移动,形成立体的运动效果,带来非常出色的视觉体验。 作为网页设计的热点趋势,越来越多的网站应用了这项技术。
Sb_Coco
2018/08/10
2K0
React-Router 5.0 制作导航栏+页面参数传递
使用React构建SPA应用(单页面应用),要想实现页面间的跳转,首先想到的就是使用路由。在React中,常用的有两个包可以实现这个需求,那就是react-router和react-router-dom。本文主要针对react-router-dom进行说明。
憧憬博客
2020/07/21
3.5K0
前端组件库_前端组件库有什么好处
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/168343.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/20
6.4K0
那些前端常用的网站插件
这套工具集中的大部分你可能见过,也可能没见过,如果有哪个/些让你眼前一亮,那么我的分享就很值了。 这个列表包含许多种类的资源,所以这里我将它们分组整理。 Javascript 库 Particles.js — 一个用来在 web 中创建炫酷的浮动粒子的库 Three.js — 一个用来在 web 中创建 3d 物体和 3d 空间的库 Fullpage.js— 快速实现全屏滚动特性 Typed.js — 打字机效果 Waypoints.js — 滚动到某个元素位置时触发一个功能 Highlight.js 
企鹅号小编
2018/01/30
4.5K0
那些前端常用的网站插件
Flutter布局基础——页面导航和返回
说到导航,最常见就是类似于iOS中导航控制器的push和pop效果,同样Flutter中也有类似的效果,使用的就是Navigator组件。
莫空9081
2021/08/02
1.6K0
2019年最全的web前端知识体系汇总
· HTML: https://developer.mozilla.org/zh-CN/docs/Web/HTML
用户5827212
2019/07/27
2.8K0

相似问题

parallax.js视差-滑块视差内容和图像

137

在parallax.js中更改视差图像

12

Parallax页面中的CSS导航栏

10

当我点击导航菜单时滚动页面视差(视差滚动)

22

单击链接时导航到不同的页面

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文