Как оформить svg в изящном пользовательском элементе

#svelte

#изящный

Вопрос:

В «обычном» svelte вы можете использовать глобальный модификатор, но как это сделать, если вы используете веб-компонент?

 <script lang="ts">
  import MyLogo from "./assets/icons/logo.svg"
</script>

<MyLogo class="my-logo" viewBox="0 0 114 49"/>

<style lang="scss">
:global(.my-logo) {
  ...
}
</style>
  

Ответ №1:

Вам придется использовать пользовательские свойства CSS:

 <script>
  import MyLogo from "./assets/icons/logo.svg"
</script>

<div style="display: contents; --logo-color: blue">
  <MyLogo class="my-logo" viewBox="0 0 114 49"/>
</div>
  
 <!-- logo.svg -->
<svg>
  <text style="fill: var(--logo-color)">my logo</text>
</svg>