时间:2021-02-11 11:18:28 | 栏目:vue | 点击:次
如何产生
在开发项目中遇到在组件中添加样式不生效的情况。具体场景如下
//// vue 组件 <template> <div class="box" data-v-33f8ed40></div> <template> //我用js在上面div标签中插入一个<p class='text'>text goes here</p> <script> export default { ... mounted(){ $('.box').html('<p class="text">text goes here</p>') }, ... } </script> //style , vue组件scoped样式都会在选择器的最后加上data-v-***属性 <style scoped> //样式添加了scoped .box{ color:red; } .text{ color:blue; } </style>
浏览器渲染的html 和 style 如下:
//html <div class="box" data-v-33f8ed40> <p class='text'>text goes here</p> </div> //style .box[data-v-33f8ed40]{ color:red; } .text[data-v-33f8ed40]{ //样式不生效,因为p标签里没有属性data-v-33f8ed40 color:blue; }
如何解决
很简单将去掉 style 的 scoped 属性。