Я пытаюсь создать изменяемую форму SVG с эффектом «свечения», когда она выбрана с использованием фильтра Гаусса. Когда я пытаюсь применить фильтр, как показано ниже, в Firefox (проверено на v39+), кажется, что фильтр заставляет прямоугольник обрезаться внизу, как только высота элемента SVG составляет > около 490. Этого не происходит. хотя в хроме. Если фильтр удален, прямоугольник не обрезается.
Я часами возился, пробуя различные комбинации параметров области эффекта фильтра, но не могу найти ничего, что работало бы для произвольных размеров элемента SVG. Применение фильтра к элементу g, кажется, работает, но здесь будут другие дочерние элементы, к которым я не хочу применять фильтр.
Что мне не хватает и как я могу заставить это работать?
Спасибо,
Дэйв
<html>
<body>
<div style = "width: 100%; height: 100%">
<svg style = "width: 100%; height: 100%">
<defs>
<symbol id="rectangle">
<polygon vector-effect="non-scaling-stroke" points="3,3 103,3 103,53 3,53"></polygon>
</symbol>
</defs>
<filter id="nodeGlow" width="100" height="100">
<feGaussianBlur stdDeviation="3" result="coloredBlur"/>
<feMerge>
<feMergeNode in="coloredBlur"/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
<g>
<svg style="fill: rgb(0, 251, 255);
stroke: rgb(30, 30, 30);
stroke-width : 1.5px;
filter: url("#nodeGlow");"
y="0" x="0"
height="500" width="200"
class="node" preserveAspectRatio="none"
viewBox="0 0 106 56">
<use xlink:href="#rectangle"></use>
</svg>
</g>
</svg>
</div>
</html>
</body>
Обновление: предложение Роберта добавить еще один элемент <g>
сработало, хотя я поместил его вокруг элемента <svg>
, а не элемента <use>
, потому что эффект размытия выглядел плохо при увеличении, если он был вокруг <use>
. Я не добавлял его к существующему <g>
, потому что будут другие дочерние элементы этого, у которых не должно быть фильтра.