Abd*_*che 2 javascript css vue.js vue-router vuejs2
如何将Vue.js作用域样式应用于通过加载的组件<view-router>.
这是我的代码:
<template>
<div id="admin">
<router-view></router-view>
</div>
</template>
<style lang="scss" scoped>
#admin {
.actions {
display: none;
span {
cursor: pointer;
}
}
}
</style>
Run Code Online (Sandbox Code Playgroud)
当我访问/posts一个名为的组件Posts将被加载时,在这个组件里面我有一个
<div class="actions">
some content
</div>
Run Code Online (Sandbox Code Playgroud)
问题是定义的样式#admin不适用于.action元素.没有作用域时,这很好用.#admin组件样式的问题出现了scoped.
在将.actions样式保留在admin组件范围样式标记内时,有没有办法做到这一点?
小智 6
这可能是你想要的https://vue-loader.vuejs.org/en/features/scoped-css.html#deep-selectors
由于您的代码段专门使用SCSS,因此您必须使用/ deep/combinator.
如果您希望范围样式中的选择器"深入",即影响子组件,则可以使用>>>组合器:
<style scoped>
.a >>> .b { /* ... */ }
</style>
Run Code Online (Sandbox Code Playgroud)
以上将编译成:
.a[data-v-f3f3eg9] .b { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
某些预处理器(如SASS)可能无法正确解析>>>.在这些情况下,您可以使用/ deep/combinator代替 - 它是>>>的别名,并且工作方式完全相同.
所以你最终得到:
<style lang="scss" scoped>
#admin {
some-property: some-style;
/deep/ .actions {
some-property: some-style;
}
}
</style>
Run Code Online (Sandbox Code Playgroud)