Градиентные серверы как внешние файлы в SVG
Возможный дубликат:
Включить SVG файл в SVG
свойство fill в SVG принимает URL-адрес, указывающий на элемент gradient/pattern, экземпляр так называемого "сервера рисования".
Вопрос: Возможно ли в любом браузере (то есть не в IE) использовать градиент, определенный во внешнем файле SVG? Например, в rect.svg
,
<rect fill="url(grad.svg#my_grad)" />
и соответствующий элемент <linearGradient />
в grad.svg
?
Было бы очень приятно, потому что тогда можно было сохранить все его градиенты/шаблоны в одном файле и получить их в кеш-памяти...
Приветствия,
Обновление: Этот вопрос по своему смыслу дублирует Включить SVG файл в SVG (где на вопрос был дан ответ на минимум Firefox). Я держу открытым, потому что я думаю, что название и теги, скорее всего, будут найдены, ну, вы.
Ответы
Ответ 1
В спецификации SVG указано, что вы можете использовать URI - так что это должно быть возможно. Поддержка браузеров - это, конечно, другое дело.
Я только что написал и протестировал небольшой файл образца.
В Inkscape он не работает, но он работает с Apache Batik Toolkit.
Для поддержки браузера я загрузил файл в browsershots.org и подвел итог: некоторые браузеры поддерживают внешние градиенты - т.
например:.
- Firefox 3.0 NO
- Firefox 3.5 YES
- Opera 9.64, 10.0 YES
- Safari 4 NO
- Chrome 2.0 NO
Ответ 2
Если я правильно понял, измените URL-адрес на
<rect fill="url(grad.svg?param=my_grad" />
А затем сгенерируйте svg динамически?