Vue全屏背景图片设置

在Vue项目中,全屏背景图片是一个常见的需求,可以通过下面几个方面阐述如何实现。这篇文章将从以下方面对Vue全屏背景图片设置进行详细阐述。

一、预处理

在开始显示全屏背景图片之前,需要先进行一些预处理工作。首先,需要新建一个单独的Vue组件,并在其中添加代码,该代码用于加载图片并调整其尺寸。

 <template>
  <img :src="bgSrc" class="full-img" />
</template>

<script>
export default {
  data() {
    return {
      bgSrc: require('@/assets/bg.jpg')
    }
  },
  mounted() {
    this.$nextTick(() => {
      this.resizeImage()
      window.addEventListener('resize', this.resizeImage)
    })
  },
  methods: {
    resizeImage() {
      const img = new Image()
      img.src = this.bgSrc
      img.onload = () => {
        const rate = img.width / img.height
        const screenRate = window.innerWidth / window.innerHeight
        const fullImg = document.querySelector('.full-img')
        if (rate < screenRate) {
          fullImg.style.width = 'auto'
          fullImg.style.height = '100%'
        } else {
          fullImg.style.width = '100%'
          fullImg.style.height = 'auto'
        }
      }
    }
  },
  beforeDestroy() {
    window.removeEventListener('resize', this.resizeImage)
  }
}
</script>

<style>
  .full-img {
    position: absolute;
    top: 0;
    left: 0;
    z-index: -1;
  }
</style>

二、设置全屏背景图片

在预处理工作完成后,可以开始设置全屏背景图片。首先,在App.vue文件中添加全屏背景图片的容器,并且将前面创建的组件添加到该容器中。

<template>
  <div id="app">
    <div class="full-page">
      <BgImage />
      <!-- 其他组件 -->
    </div>
  </div>
</template>

<script>
import BgImage from '@/components/BgImage.vue'

export default {
  name: 'App',
  components: {
    BgImage
  }
}
</script>

<style>
.full-page {
  height: 100%;
}
</style>

接着,在全局样式中添加一些必要的样式,以确保背景图片正确显示。

body {
  margin: 0;
  padding: 0;
  height: 100%;
  overflow: hidden;
}

#app {
  height: 100%;
}

.full-page {
  position: relative;
  overflow: hidden;
}

三、自适应

为了保证背景图片在不同的设备上都能够自适应屏幕大小,需要在组件中添加一些代码,以确保背景图片的尺寸正确调整。

resizeImage() {
  const img = new Image()
  img.src = this.bgSrc
  img.onload = () => {
    const rate = img.width / img.height
    const screenRate = window.innerWidth / window.innerHeight
    const fullImg = document.querySelector('.full-img')
    if (rate < screenRate) {
      fullImg.style.width = 'auto'
      fullImg.style.height = '100%'
    } else {
      fullImg.style.width = '100%'
      fullImg.style.height = 'auto'
    }
  }
}

该代码使用JavaScript计算屏幕的宽高比,并将背景图片的宽高比与之进行比较。如果背景图片的宽高比小于屏幕的宽高比,则将图片的高度设置为100%,宽度自适应。反之亦然。

四、照片墙实现

如果需要在全屏背景图片上显示照片墙,则可以在组件中添加一些代码,以便实现该功能。

 <template>
  <div class="photo-wall">
    <img src="..." class="photo" />
    <img src="..." class="photo" />
    ...
  </div>
</template>

<script>
export default {
  mounted() {
    this.$nextTick(() => {
      const photos = document.querySelectorAll('.photo')
      for (let i = 0; i < photos.length; i++) {
        photos[i].style.left = `${i % 4 * 25}%`
        photos[i].style.top = `${Math.floor(i / 4) * 25}%`
      }
    })
  }
}
</script>

<style>
.photo-wall {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

.photo {
  position: absolute;
  width: 25%;
  height: 25%;
}
</style>

以上代码通过计算每一张照片的位置,并将其设置为绝对位置,从而实现了照片墙的效果。

五、结语

通过以上几个方面的讲解,相信大家已经能够轻松地实现Vue全屏背景图片的效果了。希望本篇文章对大家有所帮助。

原创文章,作者:XCUMY,如若转载,请注明出处:https://www.506064.com/n/368273.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
XCUMYXCUMY
上一篇 2025-04-12 01:13
下一篇 2025-04-12 01:13

相关推荐

  • 使用Vue实现前端AES加密并输出为十六进制的方法

    在前端开发中,数据传输的安全性问题十分重要,其中一种保护数据安全的方式是加密。本文将会介绍如何使用Vue框架实现前端AES加密并将加密结果输出为十六进制。 一、AES加密介绍 AE…

    编程 2025-04-29
  • Vue TS工程结构用法介绍

    在本篇文章中,我们将从多个方面对Vue TS工程结构进行详细的阐述,涵盖文件结构、路由配置、组件间通讯、状态管理等内容,并给出对应的代码示例。 一、文件结构 一个好的文件结构可以极…

    编程 2025-04-29
  • 使用Golang创建黑色背景图片的方法

    本文将从多个方面介绍使用Golang创建黑色背景图片的方法。 一、安装必要的代码库和工具 在开始创建黑色背景图片之前,我们需要先安装必要的代码库和工具: go get -u git…

    编程 2025-04-29
  • Vue3的vue-resource使用教程

    本文将从以下几个方面详细阐述Vue3如何使用vue-resource。 一、安装Vue3和vue-resource 在使用vue-resource前,我们需要先安装Vue3和vue…

    编程 2025-04-27
  • ThinkPHP6 + Vue.js: 不使用Fetch的数据请求方法

    本文将介绍如何在ThinkPHP6和Vue.js中进行数据请求,同时避免使用Fetch函数。 一、AJAX:XMLHttpRequest的基础使用 在进行数据请求时,最基础的方式就…

    编程 2025-04-27
  • Vue模拟按键按下

    本文将从以下几个方面对Vue模拟按键按下进行详细阐述: 一、Vue 模拟按键按下的场景 在前端开发中,我们常常需要模拟按键按下的场景,比如在表单中填写内容后,按下“回车键”提交表单…

    编程 2025-04-27
  • 开发前端程序,Vue是否足够?

    Vue是一个轻量级,高效,渐进式的JavaScript框架,用于构建Web界面。开发人员可以使用Vue轻松完成前端编程,开发响应式应用程序。然而,当涉及到需要更大的生态系统,或利用…

    编程 2025-04-27
  • HTML让背景图片不受自适应影响的方法

    要让背景图片不受自适应影响,可以使用CSS的background-size属性来控制背景图的大小,同时也可以使用background-position属性来控制背景图在元素中的位置…

    编程 2025-04-27
  • 如何在Vue中点击清除SetInterval

    在Vue中点击清除SetInterval是常见的需求之一。本文将介绍如何在Vue中进行这个操作。 一、使用setInterval和clearInterval 在Vue中,使用set…

    编程 2025-04-27
  • VueClearable:实现易于清除的Vue输入框

    一、VueClearable基本介绍 VueClearable是一个基于Vue.js开发的易于清除的输入框组件,可以在输入框中添加“清除”按钮,使得用户可以一键清空已输入内容,提升…

    编程 2025-04-25

发表回复

登录后才能评论