【发布时间】:2013-04-04 19:03:07
【问题描述】:
我在尝试基于 raphael blur 插件的 dropshadow.raphael.js 插件时遇到了一个奇怪的问题(我尝试使用 css 过滤器插件,同样的问题)。
我正在绘制贝塞尔路径并添加阴影:
var borderBottomRounded = paper.path("M150,100C20,200,600,200,400,100");
borderBottomRounded.attr({'stroke':'#000000', 'stroke-width':'1'});
borderBottomRounded.dropShadow(1,0,1,0.5); // dropShadow(size, offsetX, offsetY, opacity = 1)
在那里,阴影在每个浏览器上都可以正常工作(还没有尝试过 IE)。
比我画一条直线,同样的阴影是这样的:
var borderBottom = paper.path("M 0,100 L800, 100");
borderBottom.attr({'stroke':'#000000', 'stroke-width':'1'});
borderBottom.dropShadow(1,0,1,0.5);
$content 是我的拉斐尔paper,因为我希望它占据整个宽度。我不能使用viewport 来做我正在做的事情。
但这条路径在 Firefox 或 Opera 上会消失(与 webkit 浏览器配合使用非常好)。
我该如何解决这个问题?目前,我只是为 Firefox 和 Opera 禁用了这条线上的阴影,但我正在尝试找到一种更好的方法......
再试一次css filter plugin。
包括 jQuery 1.9.1、Raphael 2.1.0 和 raphael dropshadow 插件。
编辑
通过使用矩形而不是线来修复,因为在应用过滤器时元素需要具有高度(感谢 Robert Longson):
var borderBottom = paper.path("M 0,100 H800 v1 H0 Z");
borderBottom.attr({'fill':'#000000', 'stroke-width':'0'});
【问题讨论】:
-
您应该向插件作者报告插件中的错误。似乎至少有 2 个。a)它正在创建具有相同阴影 ID 的多个过滤器 b)假设具有阴影的对象具有宽度或高度。最重要的是,您可以报告以下事实:您确实将 webkit 上的阴影视为 webkit 错误,它不遵循 SVG 规范。
标签: jquery svg raphael svg-filters