在vue.js中,要将一段字符串渲染成html,能够使用v-html
指令。css
可是 官方文档 中的v-html
部分也提醒了html
在单文件组件里,scoped
的样式不会应用在v-html
内部,由于那部分 HTML 没有被 Vue 的模板编译器处理。若是你但愿针对 v-html 的内容设置带做用域的 CSS,你能够替换为 CSS Modules 或用一个额外的全局 <style> 元素手动设置相似 BEM 的做用域策略。
除了官方文档给的方案之外,有一个更简便的方式:深度做用选择器vue
若是你但愿 scoped 样式中的一个选择器可以做用得“更深”,例如影响子组件,你能够使用
>>>
操做符:segmentfault<style scoped> .a >>> .b { /* ... */ } </style>上述代码将会编译成:
.a[data-v-f3f3eg9] .b { /* ... */ }
有些像 Sass 之类的预处理器没法正确解析 >>>。这种状况下你能够使用 /deep/ 操做符取而代之——这是一个 >>> 的别名,一样能够正常工做。api
<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>
https://cn.vuejs.org/v2/api/#...
https://vue-loader-v14.vuejs....
https://segmentfault.com/q/10...
https://blog.csdn.net/zgh0711...less