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

发布时间:2021-02-25 发布网站:前端之家 F2er.com
前端之家收集整理的这篇文章主要介绍了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>

<style scoped lang="less">

.product-content {

...

/deep/ h4 {

color: #333;

...

}

}

</style>

总结


以上是前端之家为你收集整理的Vue.js中v-html渲染的dom添加scoped的样式全部内容,希望文章能够帮你解决Vue.js中v-html渲染的dom添加scoped的样式所遇到的程序开发问题。

如果觉得前端之家网站内容还不错,欢迎将前端之家网站推荐给前端开发程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。