Rumah  >  Artikel  >  hujung hadapan web  >  Cara menggunakan CSS untuk mengubah suai imej latar belakang secara dinamik dalam UniApp

Cara menggunakan CSS untuk mengubah suai imej latar belakang secara dinamik dalam UniApp

PHPz
PHPzasal
2023-04-18 09:47:232906semak imbas

UniApp ialah rangka kerja pembangunan merentas platform yang membolehkan kami menggunakan HTML, CSS dan JavaScript untuk membina aplikasi berdasarkan berbilang platform, seperti program mini WeChat, program mini Alipay, dsb. Dalam proses ini, mengubah suai imej latar belakang secara dinamik adalah keperluan biasa. Artikel ini akan memperkenalkan cara menggunakan CSS untuk mengubah suai imej latar belakang secara dinamik dalam UniApp.

Gunakan CSS untuk melaksanakan pengubahsuaian imej latar belakang asas

Atribut background-image dalam CSS digunakan untuk menetapkan imej latar belakang elemen. Kami boleh menggunakan JavaScript untuk mengubah suai sifat CSS unsur secara dinamik untuk mencapai kesan mengubah suai imej latar belakang secara dinamik. Mari kita tunjukkan cara melaksanakan fungsi ini dalam UniApp.

  1. Buat tatasusunan yang mengandungi URL imej

Pertama, kita perlu mencipta tatasusunan yang mengandungi URL imej untuk menyimpan imej latar belakang yang ingin kita ubah suai secara dinamik.

// 在 data 中定义 bgUrls 数组
data() {
  return {
    bgUrls: [
      'https://example.com/bg1.jpg',
      'https://example.com/bg2.jpg',
      'https://example.com/bg3.jpg'
    ],
    currentBgIndex: 0 // 记录当前背景图索引
  }
}
  1. Tambahkan elemen bekas pada templat

Tambahkan elemen bekas pada templat sebagai elemen yang kita perlukan untuk mengubah suai imej latar belakang secara dinamik. Di sini kami menggunakan elemen div sebagai bekas.

<template>
  <div class="bg-container">
    <!-- 此处添加页面内容 -->
  </div>
</template>
  1. Tetapkan nilai awal imej latar belakang dalam style

Tetapkan nilai awal imej latar belakang dalam style. Di sini kita menggunakan URL pertama dalam tatasusunan sebagai nilai awal. Adalah disyorkan untuk menetapkan imej latar belakang lalai untuk mengelakkan halaman daripada tidak mempunyai imej latar belakang apabila URL pertama gagal dimuatkan.

<style>
  .bg-container {
    background-image: url('{{ bgUrls[currentBgIndex] }}');
  }
</style>
  1. Ubah suai imej latar belakang dalam kaedah

Akhir sekali, dalam kaedah yang perlu mengubah suai imej latar belakang, kita boleh mengubah suai nilai dan gunakan currentBgIndex untuk mengubah suai imej latar belakang. Pada masa yang sama, untuk mengelakkan tatasusunan daripada keluar dari had, kita perlu mensimulasikan document.querySelector('.bg-container').style.backgroundImage ke dalam tatasusunan bulat dan menetapkannya kepada 0 apabila panjang tatasusunan melebihi. currentBgIndex

methods: {
  changeBg() {
    this.currentBgIndex = (this.currentBgIndex + 1) % this.bgUrls.length;
    document.querySelector('.bg-container').style.backgroundImage = 'url(' + this.bgUrls[this.currentBgIndex] + ')';
  }
}
Menggunakan langkah di atas, kita boleh melaksanakan fungsi pengubahsuaian imej latar belakang asas. Walau bagaimanapun, pendekatan ini tidak optimum dari segi prestasi. Setiap kali anda mengubah suai imej latar belakang, anda perlu memuat semula sumber imej, yang meletakkan beban tertentu pada pelayan. Oleh itu, kita perlu mengoptimumkan lagi atas dasar ini.

Gunakan localStorage untuk melaksanakan caching imej latar belakang

Kita boleh menggunakan localStorage untuk cache imej latar belakang yang dimuatkan Lain kali kita perlu memuatkan imej yang sama, kita boleh membacanya terus dari cache setempat ke meningkatkan kelajuan memuatkan.

Berikut ialah kaedah pelaksanaan:

    Muatkan imej latar belakang dalam
  1. fungsi kitaran hayat created
Buat semua imej latar belakang yang perlu digunakan dalam komponen Semua dimuatkan dan disimpan dalam cache tempatan. Di sini kami menggunakan window.localStorage untuk menyimpan cache setempat, dan kunci boleh dinamakan mengikut keperluan anda sendiri.

created() {
  this.bgUrls.forEach((url) => {
    const img = new Image();
    img.src = url;
    img.onload = () => {
      window.localStorage.setItem(url, img.src);
    };
  });
}
    Enkapsulasi membaca cache setempat ke dalam kaedah
Dalam kaedah, jika terdapat imej yang sepadan dengan URL dalam cache setempat, gunakan setempat URL imej secara langsung. Jika tidak, muatkan imej dari pelayan dan simpannya dalam cache setempat sebelum menggunakan URL imej. Dengan cara ini, walaupun halaman dimuatkan semula, imej yang dimuatkan masih wujud dalam cache setempat dan boleh dibaca terus dari tempatan, sekali gus mengurangkan bilangan permintaan pelayan.

methods: {
  getBgUrl() {
    const url = this.bgUrls[this.currentBgIndex];
    const cachedUrl = window.localStorage.getItem(url);
    if (cachedUrl) {
      return cachedUrl;
    }
    const img = new Image();
    img.src = url;
    img.onload = () => {
      window.localStorage.setItem(url, this.img.src);
    };
    return url;
  },
  changeBg() {
    this.currentBgIndex = (this.currentBgIndex + 1) % this.bgUrls.length;
    document.querySelector('.bg-container').style.backgroundImage = 'url(' + this.getBgUrl() + ')';
  }
}
Menggunakan langkah di atas, kami boleh mengubah suai imej latar belakang secara dinamik, dan pada masa yang sama mengurangkan bilangan permintaan pelayan dan meningkatkan prestasi halaman dengan menyimpan imej yang dimuatkan.

Ringkasnya, artikel ini memperkenalkan cara menggunakan CSS untuk mengubah suai imej latar belakang secara dinamik dalam UniApp, dan menggunakan localStorage untuk melaksanakan caching imej latar belakang, yang meningkatkan prestasi halaman, mengurangkan permintaan pelayan dan menyediakan amalan pembangunan. rujukan bernilai pelaksanaan.

Atas ialah kandungan terperinci Cara menggunakan CSS untuk mengubah suai imej latar belakang secara dinamik dalam UniApp. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn