Я пытаюсь реализовать несколько теней в одном фильтре SVG, но я считаю, что мой вопрос более общий, чем этот, а именно, - как добавить несколько эффектов в один фильтр SVG? В моем случае это именно то, что я пытаюсь сделать.
У меня есть документ SVG, который в настоящее время содержит единственный элемент пути, и я применил единственный эффект тени к этому элементу пути.
<svg xmlns:xlink="http://www.w3.org/1999/xlink" width="1440" height="1750">
<defs>
<filter id="dropshadow">
<feGaussianBlur in="SourceAlpha" stdDeviation="2.2"></feGaussianBlur>
<feOffset dx="12" dy="12" result="offsetblur"></feOffset>
<feFlood flood-color="rgba(0,0,0,0.5)"></feFlood>
<feComposite in2="offsetblur" operator="in"></feComposite>
<feMerge>
<feMergeNode></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
</defs>
<path xmlns:xlink="http://www.w3.org/1999/xlink" d="M 100 100 L 300 100 L 200 300 z z" fill="#2DA9D6" filter="url(#dropshadow)"></path>
</svg>
Это дает мне SVG, который выглядит так:
Теперь я хочу добавить вторую (совершенно другую) тень к этому же элементу пути. Например, скажем, тень, которая идет вверх и слева от элемента. В CSS вся моя тень может выглядеть так:
box-shadow: 5px 5px 5px rgba(0,0,0,0.5), -5px -5px 5px rgba(0,0,0,0.5);
Как я могу сделать эти множественные тени с помощью фильтров SVG? Я рассмотрел этот вопрос, в котором предлагается поместить несколько эффектов в один фильтр, но я не уверен, как объединить несколько эффектов в один фильтр.
Свободный перевод вопроса SVG: Multiple Effects in One Filter от участника @Nick Budden.
Вы можете использовать атрибуты result
, чтобы дать имя выходным данным примитивного элемента фильтра, считая его своего рода атрибутом локального идентификатора фильтра. Затем вы можете использовать это имя в качестве входных данных фильтра с атрибутами in
или in2
.
<svg xmlns:xlink="http://www.w3.org/1999/xlink" width="1440" height="1750">
<defs>
<filter id="dropshadow">
<feGaussianBlur in="SourceAlpha" stdDeviation="3" result="blur"/>
<feOffset dx="12" dy="12" result="offsetblur"/>
<feOffset dx="-20" dy="-12" result="offsetblur2" in="blur"/>
<feComponentTransfer result="shadow1" in="offsetblur">
<feFuncA type="linear" slope="0.5"/>
</feComponentTransfer>
<feComponentTransfer result="shadow2" in="offsetblur2">
<feFuncA type="linear" slope="0.2"/>
</feComponentTransfer>
<feMerge>
<feMergeNode in="shadow1"/>
<feMergeNode in="shadow2"/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
</defs>
<path xmlns:xlink="http://www.w3.org/1999/xlink" d="M 100 100 L 300 100 L 200 300 z z" fill="#2DA9D6" filter="url(#dropshadow)"></path>
</svg>
Смотрите fiddle
Свободный перевод ответа от участника @Erik Dahlström.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
У меня есть 3 блока со значением transform: skew(0deg, 10deg)При попытке прописать border (см 1 фото) или border-radius (см 2 фото) верхняя (косая) граница становится...
Установил свойство css, чтобы блок растягивался на всю оставшуюся высоту экрана
Каким образом можно вставить один css-файл внутри другого css-файла?