Как можно полностью изменить стили в Nuxt с использованием Vuetify?

Как можно полностью переопределить стили Vuetify? Существует ли возможность полностью сбросить их стили, чтобы писать свои собственные, при этом сохраняя функциональность? Или есть способы просто "перезаписывать" существующие стили, не удаляя их?
  • 29 августа 2024 г. 23:44
Ответы на вопрос 2
Nuxt.js в сочетании с Vuetify предоставляет вам много возможностей для настройки стилей вашего приложения. Вот несколько подходов для полного изменения и переопределения стилей Vuetify:

### 1. Полное переопределение стилей

Следуйте этим шагам, чтобы полностью поменять стили.

#### a. Сброс стилей

Чтобы полностью удалить стандартные стили Vuetify, вы можете использовать пустой или минимальный CSS файл. Это может быть в `assets/styles/main.css` или другом удобном для вас месте:

```css
/* assets/styles/main.css */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

/* Сбрасываем стили Vuetify */
body {
  background: none; /* или любой другой стиль по умолчанию */
  color: inherit;
}
```

#### b. Инициализация в Nuxt

Импортируйте ваш CSS файл в `nuxt.config.js`:

```javascript
export default {
  css: [
    '@/assets/styles/main.css'
  ]
}
```

### 2. Переопределение стилей

Если вы хотите изменить существующие стили Vuetify, не удаляя их:

#### a. Используйте `deep` селекторы в стилях

Вы можете переопределять стили Vuetify, используя специальные селекторы в ваших стилях. Например:

```css
<style scoped>
.v-btn {
  background-color: red !important; /* Переопределение стилей кнопки */
}
</style>
```

Обратите внимание, что `!important` использовать стоит осторожно. Он может затруднить будущее обслуживание CSS.

#### b. Настройка темы Vuetify

Vuetify предоставляет API для настройки темы. Вы можете переопределить цвета и другие параметры через `vuetify.options.js` или `nuxt.config.js`, как показано ниже:

```javascript
// nuxt.config.js
export default {
  vuetify: {
    theme: {
      themes: {
        light: {
          primary: '#FF0000', // ваш главный цвет
          secondary: '#00FF00',
          accent: '#0000FF',
        },
        dark: {
          primary: '#000000',
          secondary: '#FFFFFF',
        }
      }
    }
  }
}
```

### 3. Использование SCSS или SASS

Если вы предпочитаете использовать SCSS (или SASS) для более сложного стилей, настройте Vuetify на использование стилей SASS. Импортируйте ваши стили и используйте переменные Vuetify:

```scss
// assets/styles/main.scss
@import '~vuetify/src/styles/styles.sass'; // импортируйте стили Vuetify

$primary: #ff0000; // переопределите основные переменные

// Теперь вы можете использовать ваш файл SCSS
```

### Заключение

Вы можете полностью изменить стили Vuetify, используя подходы к полному сбросу стилей, переопределению через CSS или настройке темы. Подобрать оптимальный подход можно, опираясь на требования вашего проекта и желаемый уровень кастомизации.
https://nuxt.vuetifyjs.com/guide/#module-options 

export interface MOptions {
  /** ... */
  /**
   * Vuetify styles.
   *
   * If you want to use configFile on SSR, you have to disable `experimental.inlineSSRStyles` in nuxt.config.
   *
   * @see https://github.com/vuetifyjs/vuetify-loader/tree/master/packages/vite-plugin
   * @see https://github.com/vuetifyjs/nuxt-module/issues/78 and https://github.com/vuetifyjs/nuxt-module/issues/74
   *
   * @default true
   */
  styles?: true | 'none' | 'sass' | {
    configFile: string
  }
  /**
   * The module will add `vuetify/styles` in Nuxt `css` option.
   *
   * If you want to add custom styles, you should enable this flag to avoid registering `vuetify/styles`.
   *
   * @see https://github.com/vuetifyjs/nuxt-module/pull/213
   * @default false
   */
  disableVuetifyStyles?: boolean
  /** ... */
}


Remove all style imports
// vite.config.js
plugins: [
  vue(),
  vuetify({ styles: 'none' }),
]
Похожие вопросы