首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不考虑背景的情况下保持SVG "filter: drop-shadow()“的颜色?

如何在不考虑背景的情况下保持SVG "filter: drop-shadow()“的颜色?
EN

Stack Overflow用户
提问于 2017-03-25 20:28:48
回答 1查看 1.1K关注 0票数 1

我尝试在基于https://codepen.io/dudleystorey/pen/EaMQBj的CodePen示例的SVG图像周围添加红色阴影。但是,当背景颜色为蓝色时,颜色会变为紫色。无论背景颜色或图像是什么,如何保持颜色为红色?任何帮助都是非常感谢的。

代码语言:javascript
复制
#robbie {
background-color: blue;
  display: inline-block;
  background-repeat: no-repeat;
  background-size: cover;
}
#robbie img {
filter: "progid:DXImageTransform.Microsoft.Dropshadow(OffX=12, OffY=12,
Color='#444')";
  filter: url(#drop-shadow);
  -webkit-filter: drop-shadow(0 0 15px rgba(255,0,0,0.9));
  filter: drop-shadow(0 0 15px rgba(255,0,0,0.9));
}
代码语言:javascript
复制
<div id="robbie">
  <img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/4273/robby-the-robot.png" alt>
</div>

<svg height="0" xmlns="http://www.w3.org/2000/svg">
  <filter id="drop-shadow">
  <feGaussianBlur in="SourceAlpha" stdDeviation="2.2"/>
  <feOffset dx="12" dy="12" result="offsetblur"/>
  <feFlood flood-color="rgba(0,0,0,0.5)"/>
  <feComposite in2="offsetblur" operator="in"/>
  <feMerge>
  <feMergeNode/>
  <feMergeNode in="SourceGraphic"/>
  </feMerge>
</filter>
</svg>

EN

回答 1

Stack Overflow用户

发布于 2017-03-26 05:36:03

紫色是由浏览器在获取逐渐变得更加透明的红色阴影并将其合成在纯蓝色之上时创建的。要解决此问题,您需要将阴影更改为实心红色。你不能使用CSS过滤器,你必须使用SVG版本。

代码语言:javascript
复制
<svg height="0" xmlns="http://www.w3.org/2000/svg">
  <filter id="drop-shadow">
  <feGaussianBlur in="SourceAlpha" stdDeviation="2.2"/>
  <feOffset dx="12" dy="12" result="offsetblur"/>
  <feFlood flood-color="rgba(255,0,0,1)"/>
  <feComposite in2="offsetblur" operator="in"/>
  <feMerge>
  <feMergeNode/>
  <feMergeNode in="SourceGraphic"/>
  </feMerge>
</filter>
</svg>

请注意,只有当您的源是完全不透明的时,这才有效。如果你想在部分透明的图像周围有一个实心阴影,那么你需要做一些额外的操作。

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

https://stackoverflow.com/questions/43016332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档