有没有办法为Vue组件中的插槽添加样式?
<slot style="position: absolute"></slot>
并且
<slot class="slot"></slot>
不能工作。
有没有办法为Vue组件中的插槽添加样式?
<slot style="position: absolute"></slot>
并且
<slot class="slot"></slot>
不能工作。
将插槽包裹在一个<div>
中,并对 <div>
进行样式设置:
<div style="...">
<slot></slot>
</div>
如果你确实需要对插槽元素进行样式设置,可以使用如下的CSS选择器:
<div class="wrapper">
<slot></slot>
</div>
.wrapper > * {
color: red;
}
:slotted(.classInsideSlot) {
color: red;
}
<slot name="quoteText"></slot>
当传递到插槽时:
<p slot="quoteText" class="mb-md-100">Text</p>
slot
属性在 Vue3 中已被弃用。 - Hasan Parasteh我找到了这样一种解决方案。
computed: {
isAppBoxSlotActive() {
return Boolean(this.$slots['app-box']);
}
},
<div v-if="isAppBoxActive"
:class="$style['app-box']">
<slot name="app-box">...</slot>
</div>
.wrapper > *
将会选中每个插槽元素。如果你只想选中特定的插槽元素,可以使用.wrapper > *:nth-child(2)
或者.wrapper > .child
。你具体想要做什么?你想能够绑定每个插槽元素的动态样式,还是使用外部CSS就足够了? - Decade Moondisplay: contents
支持不太好。 - Douglas Gaskell:deep(selector)
来覆盖作用域样式,但我不知道是否推荐。 - devordem