Я смотрел на SVG-трюки Криса Койера на CSS-tricks.com, а также недавно видел его на конференции, где он говорил о полномочиях SVG и о том, как вы можете сохранить все активы в одном внешнем svg-файле.SVG - Доступ к отдельным узлам по xlink: внешний источник href
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
<symbol id="beaker" viewBox="214.7 0 182.6 792">
<!-- <path>s and whatever other shapes in here -->
</symbol>
<symbol id="shape-icon-2" viewBox="0 26 100 48">
<!-- <path>s and whatever other shapes in here -->
</symbol>
</svg>
Тогда вы могли бы просто использовать его как это:
<svg class="icon">
<use xlink:href="#shape-icon-1" />
</svg>
<svg class="icon">
<use xlink:href="#shape-icon-2" />
</svg>
Звучит здорово! НО, я хочу иметь доступ к отдельным узлам в каждом символе и изменять их с помощью CSS, как обычно, если SVG был встроен в HTMl.
Взгляните на этот CodePen: http://codepen.io/chriscoyier/pen/Hwcxp
Я думал, что я мог бы сделать это, но я не могу заставить его работать:
.icon path{
fill: green;
}
Это делает, но это изменяет фактический источник svg
#beaker path {
fill: green;
}
Что я хочу сделать, это повторно использовать графический элемент в сетке. И при зависании, измените узел в svg. Но только на узле этого конкретного родителя. Не все из них.
Вы не можете получить доступ часть повторно используется графический с CSS селекторов; селекторы могут применяться только к исходному изображению (затрагивая все копии значка) или самому элементу использования (затрагивая стили * унаследованные * экземпляром значка). Чтобы иметь эффект зависания, который работает кросс-браузер, вам необходимо переопределить часть значка, который вы хотите изменить, чтобы он использовал унаследованные стили. Затем вы можете определить эффект наведения на элемент use или его родительский SVG. [Подробнее об этом вопросе] (http://stackoverflow.com/q/13673441/3128209); обозначая это как дубликат. – AmeliaBR
Обратите внимание, что, хотя связанный вопрос конкретно связан с эффектами зависания, он также работает для любых других изменений стиля, которые вы хотите создать в одном экземпляре значка. – AmeliaBR
Я вижу, поэтому он все еще возвращается к добавлению SVG к документу inline. По крайней мере, для таких вещей. Спасибо за разработанный ответ! :) – user216357