在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