Изменить SVG прямоугольный ход, который был размещен при использовании

Я работаю со svg-спрайтами и пытаюсь изменить свойство stroke в некоторых svg, которые были размещены с помощью функции use. Он помещает расширенный svg от ShadowRoot в DOM и выглядит как заблокированный от внешних правил CSS.

Но я видел возможное решение с использованием стилей, но оно не работает. Кто-нибудь может мне помочь, пожалуйста? Можно ли вообще это сделать?

<svg style="display:none;">
  <symbol id="test">
      <rect x="10" y="10" width="100" height="100" stroke="green"/> 
  </symbol>
</svg>

<svg id="some" class="icon"><use xlink:href="#test" /></svg>

#some use rect {
 stroke: red !important;
}

1 ответ

У вас есть два идентичных идентификатора, и вам нужно удалить штрих из символа и применить к use учебный класс.

#test {
  fill: none;
}

.red {
  stroke: red;
}

.green {
  stroke: green;
}
<svg style="display:none;">
  <symbol id="test">
      <rect x="10" y="10" width="100" height="100"/> 
  </symbol>
</svg>

<svg class="icon"><use xlink:href="#test" class="red"/></svg>

<svg class="icon"><use xlink:href="#test" class="green"/></svg>

Другие вопросы по тегам