Vue.js中v-html渲染的dom添加scoped的样式
在vue.js中,要将一段字符串渲染成html,可以使用v-html指令。
但是 官方文档 中的v-html部分也提醒了
scoped 的样式不会应用在 v-html 内部,因为那部分 HTML 没有被 Vue 的模板编译器处理。如果你希望针对 v-html 的内容设置带作用域的 CSS,你可以替换为 CSS Modules 或用一个额外的全局 <style> 元素手动设置类似 BEM 的作用域策略。除了官方文档给的方案以外,有一个更简便的方式:深度作用选择器
如果你希望 scoped 样式中的一个选择器能够作用得“更深”,例如影响子组件,你可以使用 >>> 操作符:
<style scoped>
.a >>> .b { /* ... */ }
</style>上述代码将会编译成:.a[data-v-f3f3eg9] .b { /* ... */ }
有些像 Sass 之类的预处理器无法正确解析 >>>。这种情况下你可以使用 /deep/ 操作符取而代之——这是一个 >>> 的别名,同样可以正常工作。
示例
<div class="product-content" v-html="contentView"></div>
<script>
export default {
data(){
return {
contentView:'<h4>This is a title rendered by v-html</h4>'
}
}
}
</script>
<style scoped lang="less">
.product-content {
...
/deep/ h4 {
color: #333;
...
}
}
</style>reference
https://cn.vuejs.org/v2/api/#...
https://vue-loader-v14.vuejs....
https://segmentfault.com/q/10...
https://blog.csdn.net/zgh0711...
相关推荐
爱读书的旅行者 2020-07-07
liaoxuewu 2020-05-19
lupeng 2020-11-14
sjcheck 2020-11-10
meylovezn 2020-08-28
owhile 2020-08-18
Francismingren 2020-08-17
pythonclass 2020-07-29
sunzhihaofuture 2020-07-19
行吟阁 2020-07-05
tianqi 2020-07-05
行吟阁 2020-07-04
冰蝶 2020-07-04
lyg0 2020-07-04
owhile 2020-07-04
opspider 2020-06-28
lengyu0 2020-06-28
tianqi 2020-06-21