【发布时间】:2016-12-20 07:22:16
【问题描述】:
我想在我的 SVG 元素上添加 Google Material 阴影。 我正在使用 Snap SVG,并且我找到了一种在我的元素上使用阴影滤镜的方法:
element.attr({
filter : s.filter(Snap.filter.shadow(0, 19, 38, 'black', 1))
});
我找不到必须为每个材质阴影输入的设置。
我尝试了什么:
我发现了几个 codepen,例如 this,它们使用 CSS 提供了材质阴影,我尝试从它们中获取 box-shadow 设置并使用相同的设置,但我的只是变得更大了。
根据我的研究,box-shadow 采用像素设置,根据 Snap SVG 文档,Snap SVG 也是如此。
我似乎无法理解为什么两者都采用像素设置,但 Snap SVG 只是更多。
-- 我也尝试了一些试验和错误,但我无法想象需要多长时间才能找出所有不同材质阴影的所有不同设置。
所以为了澄清一点,我真正想知道的是 Snap SVG 阴影过滤器设置,适用于每个 Google Material Shadow。
原因是我想要一个在阴影之间循环的按钮。
感谢您的帮助。
编辑
实际上,看起来我做错了不透明度。
我的过滤器现在更类似于材质阴影。
但是,我注意到使用 CSS 作为材质阴影的代码笔使用了多个盒子阴影。如何使用 Snap SVG 做到这一点? (有多个阴影)
解决方案
所以我所做的就是在 SVG 中定义几个 def。
我找到了一个带有 Material Shadows 的 SVG,它帮助我为每个级别的阴影定义了我的 def。
然后我按照@Ian 的建议做了,并将defs 与Snap SVG 一起使用。
【问题讨论】:
-
您能发布一个指向您的 codepen 的链接吗?
-
不知道我该怎么做。这段代码在一个 React 项目中,我认为它需要太多的代码来完成一个功能块。我需要 SVG 元素和按钮以及所有代码和库。但是,我可以提供一个 codepen 与我的 SVG 的结果。这就是你要找的东西吗?