如何使用 vue-loader 使用作用域 css 设置 v-html 内容的样式?
简单示例:component.vue
<template>
<div class="icon" v-html="icon"></icon>
</template>
<script>
export default {
data () {
return {icon: '<svg>...</svg>'}
}
}
</script>
<style scoped>
.icon svg {
fill: red;
}
</style>
生成html
<div data-v-9b8ff292="" class="icon"><svg>...</svg></div>
生成CSS
.info svg[data-v-9b8ff292] { fill: red; }
如您所见,v-html 内容没有 data-v 属性,但生成的 css 具有 svg 的 data-v 属性。
我知道这是 vue-loader 的预期行为(https://github.com/vuejs/vue-loader/issues/359)。在这个问题中提到了后代选择器。但正如你所看到的,我在我的 css 中使用它并且它不起作用。
如何设置 v-html 内容的样式?