Vuetify 主题背景不适用于第二个组件

Posted

技术标签:

【中文标题】Vuetify 主题背景不适用于第二个组件【英文标题】:Vuetify theme background doesn't apply on the second component 【发布时间】:2021-08-26 20:28:02 【问题描述】:

我正在使用 Vuetify 学习 Vue.js,但组件中的主题有问题。 我将我的应用程序作为每个部分构建为一个单独的组件,这些组件在 App.vue 中组合在一起

<template>
  <v-app>
    <NavBar />
    <v-main>
      <Title />
      <About />
    </v-main>
  </v-app>
</template>

<script>
import NavBar from "./components/navbar.vue";
import Title from "./sections/Title.vue";
import About from "./sections/About.vue";

export default 
  name: "App",

  components: 
    NavBar,
    Title,
    About,
  ,

  data: () => (
    //
  ),
;
</script>

NavBar 和 Title 按预期工作。但是关于是白色背景的。 我在 vuetify.js 中将主题设置为暗色,因此标题部分的背景为深色,而关于部分的背景为白色。

import Vue from 'vue';
import Vuetify from 'vuetify/lib/framework';

Vue.use(Vuetify);


export default new Vuetify(
    theme:  dark: true ,
);

标题及关于vues如下:

Title.vue

<template>
  <v-container id="title" fill-height class="pt-16 mt-16">
    <v-row align="center" class="white--text mx-auto" justify="center">
      <v-col class="white--text text-center" cols="12" tag="h1">
        <Logo />
      </v-col>
    </v-row>
    <v-row justify="center">
      <v-btn
        :ripple="false"
        color="transparent"
        id="no-background-hover"
        elevation="0"
        @click="$vuetify.goTo('#about-me')"
      >
        <v-icon> mdi-chevron-down</v-icon>
      </v-btn>
    </v-row>
  </v-container>
</template>

<script>
import Logo from "../components/logo.vue";

export default 
  name: "Title",
  components: 
    Logo,
  ,
;
</script>

<style lang="sass" scoped>
#no-background-hover::before
  background-color: transparent !important
</style>

关于.vue

<template>
  <v-container id="about-me" fill-height class="">
    <v-row>
      <v-col>Hello World</v-col>
    </v-row>
  </v-container>
</template>

<script>
export default 
  name: "About",
;
</script>

当我切换 Title 和 About 的位置时,About 的背景是深色的,而 Title 的背景是白色的。 我希望两者都具有相同的深色背景。 怎么了?谢谢!

【问题讨论】:

尝试使用单个&lt;v-container&gt; 并将您的组件放入其中。这可能会有所帮助。 @Chin.Udara 谢谢,它工作。我猜vuetify只能有一个主要的v-container 【参考方案1】:

@Chin.Udara 提供了帮助。 我刚刚在这些部分周围添加了一个 v-container,一切都正确地呈现了主题。 但与此同时,填充整个屏幕的部分的填充高度不再起作用,我需要使用带有 height:100vh 的样式 css。

App.vue

<template>
  <v-app>
    <FAButton />
    <NavBar />
    <v-main>
      <v-container>
        <Title />
        <About />
      </v-container>
    </v-main>
  </v-app>
</template>

<script>
import NavBar from "./components/navbar.vue";
import FAButton from "./components/floatingbutton.vue";
import Title from "./sections/Title.vue";
import About from "./sections/About.vue";

export default 
  name: "App",

  components: 
    NavBar,
    FAButton,
    Title,
    About,
  ,

  data: () => (
    //
  ),
;
</script>

Title.vue

<template>
  <v-container id="title" fill-height style="height: 100vh">
    <v-row align="center" justify="center">
      <v-col cols="12">
        <Logo />
      </v-col>
    </v-row>
  </v-container>
</template>

<script>
import Logo from "../components/logo.vue";

export default 
  name: "Title",
  components: 
    Logo,
  ,
;
</script>

【讨论】:

以上是关于Vuetify 主题背景不适用于第二个组件的主要内容,如果未能解决你的问题,请参考以下文章

脚本不适用于引用组件的第二个实例

字体很棒的 SVG 图标不适用于 Vuetify

Vuetify 样式不适用于 Tailwind

Vuetify css 碾压 Bootstrap css

Vuetify 在明暗主题之间切换(使用 vuex)

AdjustResize 不适用于第二个 EditText