-
Notifications
You must be signed in to change notification settings - Fork 232
Неуникальные id внутри svg-спрайта #208
Comments
Уникальные имена не помогут, т.к. #a резолвится будет в рамках текущей страницы. В то время как сам градиент объявлен внутри спрайта. Т.е. градиенты не работают сейчас вообще. Решение — это инлайнить спрайт целиком, тогда градиенты будут объявлены в рамках страницы и они работать будут. Но, если я правильно помню, градиенты объявленные в символах (т.е. svg>symbol>defs) всё равно не заработают. А значит defs нужно выносить в корень. И учитывая, что иконки с градиентами требуются редко, то необходимости в внедрении такого решения мало. А так как активная разработка этого шаблона не ведется (Наши силы брошены на разработку Rispa.), то это внедрятся не будет.. |
Дык мне и нужно для встраивания в страницу. -- я использую эти спрайты в режиме полифилла -- это когда плагин вытягивает свг-файл xhr-запросом и вставляет в страницу. Кажется проблема возникает когда на странице появляется два элемента с градиентами имеющими одинаковые айдишки. Сверху есть логотип билайна у которого градиент когда-то конфликтовал с градиентом карты мир ). Теперь не конфликтует т.к я починил сборку. Давай всё-же починим и тут)? |
Это конкретно у тебя так. А вообще не предполагалось такое использование повсеместно (svg4everybody только для старых IE подразумевался). В общем, ишью открою. Если есть желание — будем рады ПРу. А свои силы брошены на Rispa. |
Проблема
Часто внутри svg-спрайта попадаются неуникальные id. например кто-то называет свой градиент как
id="a"
а затем его использует какstyle="fill:url(#a);"
.Если таких имён будет не одно, то возникает коллизия, и один из градиентов просто не отображается.
Решение
Предлагаю "зауникалить" айдишники внутри svg-спрайта добавив к ним префикс в виде имени исходного svg-файла. Это можно сделать например при помощи svgo. Ссылка на решение с svgo
The text was updated successfully, but these errors were encountered: