Перейти к содержимому
GitHub

Пользовательские свойства

Вы можете передавать пользовательские CSS-свойства — как статические, так и динамические — в компоненты:

<Slider
  bind:value
  min={0}
  max={100}
  --track-color="black"
  --thumb-color="rgb({r} {g} {b})"
/>

Приведённый выше код по сути преобразуется в следующий:

<svelte-css-wrapper style="display: contents; --track-color: black; --thumb-color: rgb({r} {g} {b})">
  <Slider
    bind:value
    min={0}
    max={100}
  />
</svelte-css-wrapper>

Для элемента SVG вместо этого будет использоваться <g>:

<g style="--track-color: black; --thumb-color: rgb({r} {g} {b})">
  <Slider
    bind:value
    min={0}
    max={100}
  />
</g>

Внутри компонента мы можем читать эти пользовательские свойства (и предоставлять значения по умолчанию) с помощью var(...):

<style>
  .track {
    background: var(--track-color, #aaa);
  }

  .thumb {
    background: var(--thumb-color, blue);
  }
</style>

Вам не обязательно указывать значения непосредственно на компоненте; пока пользовательские свойства определены на родительском элементе, компонент может их использовать. Обычно пользовательские свойства определяются на элементе :root в глобальном стилевом файле, чтобы они применялись ко всему вашему приложению.