拉斐尔阴影效果一个SVG路径上的插件Firefox和Opera的问题(Raphael dropsha

2019-08-22 06:41发布

我有一个奇怪的问题,而实验的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滤镜插件 。

包括jQuery的1.9.1,2.1.0拉斐尔和拉斐尔阴影效果插件。

编辑

通过使用矩形的,而不是一条线,因为该元件需要具有高度应用滤波器(感谢罗伯特Longson)时修正:

var borderBottom = paper.path("M 0,100 H800 v1 H0 Z");
borderBottom.attr({'fill':'#000000', 'stroke-width':'0'});

工作提琴。

Answer 1:

每http://www.w3.org/TR/SVG/coords.html#ObjectBoundingBox

当适用的元件的几何形状不具有宽度或没有高度,如水平或垂直线的情况下,即使当线具有由于具有自非零笔划宽度观察时实际厚度关键字objectBoundingBox不应使用笔划宽度为边界框计算忽略。 当适用的元件的几何形状不具有宽度或高度和objectBoundingBox被指定,则该给定的效果(例如,梯度或过滤器)将被忽略。

而对于filterUnits默认为objectBoundingBox。 因此,Opera和Firefox都有权不显示这样做是不正确继SVG规范的过滤器和任何UA。



文章来源: Raphael dropshadow plugin firefox and opera issue on a svg path