в компоненте vue как<style>Вкладка открытаscopedатрибут, чтобы стиль влиял только на этот компонент и не загрязнял другие компоненты.
В проекте нам часто приходится внедрять внешние UI-компоненты (такие как elementUI, mint-ui), но добавлять в родительский компонентscopedПосле установки свойства стиль родительского компонента не будет проникать в дочерний компонент, поэтому запись стиля дочернего компонента в родительском компоненте не имеет никакого эффекта.
Существует несколько способов изменить стили дочерних компонентов:
1. Удалить область действия
в родительском компоненте<style>удалено изscopedПосле этого стили дочерних компонентов можно прописать в родительском компоненте. Но это загрязнит стили в других компонентах
2. Смешение локальных и глобальных стилей
Вы можете использовать как стили с областью, так и стили без области в одном компоненте:
<style lang="sass" scoped>
/* 本地样式 */
</style>
<style lang="sass">
/* 全局样式
* 修改子组件样式,最好在子组件外嵌套一个类
*/
</style>
3. Глубокий селектор
Если вы хотите, чтобы селектор в стиле с ограниченной областью действия шел «глубже», например, воздействуя на дочерние компоненты, вы можете использовать оператор >>>:
<template>
<div id="app">
<my-header></my-header>
</div>
</template>
<style scoped>
.myHeader >>> .title {
color: red;
}
</style>
<div class="myHeader">
<div class="title"></div>
</div>
Некоторые препроцессоры, такие как SASS, неправильно анализируют>>>. В этом случае вы можете использовать/deep/оператор вместо этого - это>>>псевдонимы, то же самое работает нормально.
<style scoped>
.myHeader /deep/ .title {
color: red;
}
</style>
Такой способ написания и изменения стиля подкомпонента не загрязнит глобальный стиль!
Примечание: через
v-htmlНа созданный контент DOM не влияют стили в области видимости, но вы все равно можете стилизовать его с помощью глубоко действующих селекторов.