Vue.js中v-html渲染的dom添加scoped样式的示例分析

小编给大家分享一下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 v-html="contentView"></div>

<style scoped>
.product-content {
    ...
    /deep/ h5 {
      color: #333;
      ...
    }
  }
</style>

以上是“Vue.js中v-html渲染的dom添加scoped样式的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!