Стили Scoped работают, добавляя специальный ключ к вашим селекторам.Таким образом, ваш компонент не повлияет на другие компоненты.Родительские компоненты по-прежнему могут влиять на стили вашего компонента.И глобальные стили также могут вмешиваться.
Ну, у вас есть 2 варианта, если вы не хотите использовать !important
Во-первых, и предпочтительнее - использовать конкретные названия БЭМ.Это действительно легко реализовать с помощью sass (scss).Например,
.mycompoment{
background:#fff;
&--body{
color:#eb0b0;
&--title{
font-size:5rem;
}
}
&--footer{
position:relative;
}
//etc
}
, который будет компилироваться в следующий код:
.mycompoment {
background: #fff;
}
.mycompoment--body {
color: #eb0b0;
}
.mycompoment--body--title {
font-size: 5rem;
}
.mycompoment--footer {
position: relative;
}
Другой вариант - повысить специфичность вашего селектора.Попробуйте использовать более прямые потомки селекторов.>
Но, тем не менее, внешний css может по-прежнему влиять на значения, о которых вы даже не думаете.Например, position:absolute; top:-20px;
или box-sizing / display / opacity и многие другие реквизиты, о которых вы не знаете.