欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

如何從一個頁面改變Vue頁面背景?

林國瑞1年前9瀏覽0評論

編輯:現(xiàn)在我知道我必須改變正文的背景顏色,但是我不知道如何根據(jù)包裝器的類在這個頁面的樣式中這樣做。該類是基于數(shù)據(jù)值設(shè)置的。

我希望整個頁面的顏色根據(jù)數(shù)據(jù)的值而改變。例如,如果hasError為true,我希望整個頁面變成紅色。我嘗試設(shè)置的寬度和高度。紅色到100vw和100vh,但這在頂部和左側(cè)留下了空白,只是稍微移動了頁面上的所有內(nèi)容。這個視圖放在App.vue內(nèi)的一個RouterView里面,這段代碼的問題是只有表單后面的背景色發(fā)生了變化(見截圖),但是它需要改變整個頁面。enter image description here以下是我的代碼:

<script lang="ts">
export default {
  data() {
    return {
      name: '',
      message: '',
      infoMessage: '',
      hasError: false,
    }
  },
  methods: {
    async submitForm() {
      const submitResponse = await websiteDataStore.submitContactForm({
        name: this.name,
        message: this.message,
      })
      this.infoMessage = submitResponse.message
      if (submitResponse.status === DbEditStatus.error) {
        this.hasError = true
      } 
      setTimeout(() => {
        this.infoMessage = ''
        this.hasError = false
      }, 10000)
    }
  },
}
</script>

<template>
  <div :class="{ error: hasError, success: !hasError && infoMessage }">
    <h2 v-if="infoMessage">{{ infoMessage }}</h2>
    <h1>Contact</h1>
    <form @submit.prevent="submitForm">
      <BaseInput label="Your Name" type="text" v-model="name" :value="name"/>
      <BaseInput label="Enter your message here:" type="text" v-model="message" :value="message"/>
      <button type="submit">Submit</button>
    </form>
  </div>
</template>

<style>
  .error {
    background-color: red;
  }
  .success {
    background-color: green;
  }
</style>

我意識到可以通過在if語句中編程設(shè)置body元素的背景色來解決這個問題:

const currentBackgroundColor = document.getElementsByTagName('body')[0].style.background
      this.infoMessage = submitResponse.message
      if (submitResponse.status === DbEditStatus.error) {
        document.getElementsByTagName('body')[0].style.background = 'red'
        this.hasError = true
      } else {
        document.getElementsByTagName('body')[0].style.background = 'green'
      }
      setTimeout(() => {
        this.infoMessage = '';
        this.hasError = false;
        document.getElementsByTagName('body')[0].style.background = currentBackgroundColor;
      }, 10000)