Skip to main content

自定义属性

你可以将 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 元素上定义自定义属性,这样它们就可以应用于整个应用程序。

虽然额外的元素不会影响布局,但它影响任何使用 > 组合器来直接定位组件容器内元素的 CSS 选择器。

在 GitHub 编辑此页面