Почему Nuxt берет стили с других страниц?

#css #vue.js #styles #nuxt.js

Вопрос:

У меня есть две страницы в моем проекте Nuxt:

 |-pages/
|---index.vue
|---login/
|-----index.vue

 

index.vue Внутри pages есть эти стили:

 <style lang="scss">

   html,
   body,
   #__nuxt,
   #__layout,
   main {
      height: 100%;
   }

</style>
 

Как вы можете видеть, мне нужно, чтобы мой контейнер занимал всю высоту экрана, поэтому мне нужно поместить этот стиль во все контейнеры Nuxt, по этой причине мои стили не могут быть ограничены. Здесь все в порядке, но когда я захожу /login , мне не нужны эти стили, но по какой-то причине Nuxt применяет эти стили , даже если я удаляю <styles> метку внутри pages/login/index.vue , я не знаю, почему…

Теоретически pages/index.vue стили не должны загружаться, если я в /login 😣

Единственное решение, которое я нашел, — это поместить scoped атрибут в page/index.vue метку стиля, но это не позволяет мне изменять высоту контейнеров Nuxt.

Ты знаешь лучший способ сделать это?

Ответ №1:

Если вы определяете глобальные стили CSS (не определяя их область действия), они действительно будут применены ко всему вашему приложению.
Следовательно, поведение login/index.vue ваших стилей, обладающих свойствами, совершенно нормально.

Это называется каскадом CSS.

Если вы не хотите, чтобы поведение применялось к другим страницам, вам нужно либо переопределить свойства в других .vue файлах (что в определенной степени нормально), либо ограничить стили вашего корневого index.vue каталога .

Конечно, вы также можете использовать макеты Nuxt, если хотите применить стили к определенной группе страниц.

Кроме того, height: 100%; это довольно общее свойство. Вам это действительно не понадобится, если вы используете поток своей страницы (добавляя обычные блоки HTML один к другому), он разместит их соответствующим образом.
Для дальнейших проблем с CSS настоятельно рекомендуется использовать инспектор программ разработки вашего браузера, что избавит вас от некоторых проблем!