Да, в Vue.js можно смешивать локальные и глобальные стили, но важно понимать последствия такого подхода и лучшие практики.
<style scoped>
.button {
/* Стиль применяется только к этому компоненту */
}
</style>
<style>
/* Без атрибута scoped - стили глобальные */
.global-button {
/* Применяется ко всему приложению */
}
</style>
Правила специфичности CSS:
<style>
/* Глобальные стили */
</style>
<style scoped>
/* Локальные стили */
</style>
<style scoped>
/* Локальный стиль */
.button { color: blue; }
/* Глобальное переопределение */
:global(.important) {
font-weight: bold;
}
</style>
<style scoped>
/* Стиль будет применен и к дочерним компонентам */
::v-deep .child-element {
padding: 10px;
}
</style>
<template>
<el-button class="my-btn">Кнопка</el-button>
</template>
<style scoped>
/* Локальное изменение */
.my-btn {
margin: 5px;
}
</style>
<style>
/* Глобальное изменение компонентов библиотеки */
.el-button {
font-family: 'CustomFont';
}
</style>
<style>
/* Глобальные переменные */
:root {
--primary-color: #42b983;
}
</style>
<style scoped>
/* Использование в локальных стилях */
.button {
background-color: var(--primary-color);
}
</style>
// main.js
import './styles/global.css'
<style module>
.success { color: green; }
</style>
<style lang="scss" scoped>
/* Локальные SCSS-стили */
</style>
<style lang="scss">
/* Глобальные SCSS-стили */
</style>