CSS を使用して UniApp の背景画像を動的に変更する方法

PHPz
リリース: 2023-04-18 10:05:15
オリジナル
2982 人が閲覧しました

UniApp は、HTML、CSS、JavaScript を使用して、WeChat ミニプログラム、Alipay ミニプログラムなどの複数のプラットフォームに基づいたアプリケーションを構築できるクロスプラットフォーム開発フレームワークです。このプロセスでは、背景画像を動的に変更することが一般的な要件です。この記事では、CSSを使用してUniAppの背景画像を動的に変更する方法を紹介します。

CSS を使用して基本的な背景画像の変更を実装する

CSS の background-image プロパティは、要素の背景画像を設定するために使用されます。 JavaScript を使用して要素の CSS プロパティを動的に変更し、背景画像を動的に変更する効果を実現できます。この関数を UniApp に実装する方法を示してみましょう。

  1. 画像 URL を含む配列の作成

まず、動的に変更する背景画像を保存するための画像 URL を含む配列を作成する必要があります。

// 在 data 中定义 bgUrls 数组
data() {
  return {
    bgUrls: [
      'https://example.com/bg1.jpg',
      'https://example.com/bg2.jpg',
      'https://example.com/bg3.jpg'
    ],
    currentBgIndex: 0 // 记录当前背景图索引
  }
}
ログイン後にコピー
  1. コンテナ要素をテンプレートに追加します

背景画像を動的に変更するために必要な要素として、コンテナ要素をテンプレートに追加します。ここでは、div 要素をコンテナとして使用します。

<template>
  <div class="bg-container">
    <!-- 此处添加页面内容 -->
  </div>
</template>
ログイン後にコピー
  1. 背景画像の初期値を style

背景画像の初期値を style## に設定します#。ここでは、配列内の最初の URL を初期値として使用します。最初の URL の読み込みに失敗したときにページに背景画像が表示されないように、デフォルトの背景画像を設定することをお勧めします。

<style>
  .bg-container {
    background-image: url('{{ bgUrls[currentBgIndex] }}');
  }
</style>
ログイン後にコピー
    メソッドで背景画像を変更する
最後に、背景画像を変更する必要があるメソッドで、

currentBgIndex の値を動的に変更できます。 、そして document.querySelector('.bg-container').style.backgroundImage を使用して背景画像を変更します。同時に、配列が範囲外になるのを防ぐために、currentBgIndex を円形配列にシミュレートし、配列の長さを超えたときにそれを 0 に設定する必要があります。

methods: {
  changeBg() {
    this.currentBgIndex = (this.currentBgIndex + 1) % this.bgUrls.length;
    document.querySelector('.bg-container').style.backgroundImage = 'url(' + this.bgUrls[this.currentBgIndex] + ')';
  }
}
ログイン後にコピー
上記の手順により、基本的な背景画像変更機能を実現できます。ただし、このアプローチはパフォーマンスの点で最適ではありません。背景画像を変更するたびに画像リソースを再読み込みする必要があり、サーバーに一定の負担がかかります。したがって、これに基づいてさらに最適化する必要があります。

localStorage を使用して背景画像のキャッシュを実装する

localStorage を使用して、読み込まれた背景画像をキャッシュできます。次回同じ画像を読み込む必要があるときは、ローカル キャッシュから直接読み取って、読み込み速度が向上し、サーバーの負荷が軽減されます。

実装方法は以下の通りです。

  1. createdライフサイクル関数に背景画像を読み込みます
すべての背景を追加します使用する必要があるすべての画像は、コンポーネントの作成時にロードされ、ローカル キャッシュに保存されます。ここでは window.localStorage を使用してローカル キャッシュを保存します。キーには必要に応じて名前を付けることができます。

created() {
  this.bgUrls.forEach((url) => {
    const img = new Image();
    img.src = url;
    img.onload = () => {
      window.localStorage.setItem(url, img.src);
    };
  });
}
ログイン後にコピー
    ローカル キャッシュの読み取りをメソッドにカプセル化する
メソッドでは、ローカル キャッシュに URL に対応する画像がある場合、ローカル画像の URL は次のようになります。直接使用されます。それ以外の場合は、画像 URL を使用する前に、サーバーから画像をロードし、ローカル キャッシュに保存します。このようにして、ページが更新されても、読み込まれた画像はローカル キャッシュにまだ存在し、ローカルから直接読み取ることができるため、サーバー リクエストの数が削減されます。

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() + ')';
  }
}
ログイン後にコピー
上記の手順を使用すると、背景画像を動的に変更できると同時に、読み込まれた画像をキャッシュすることでサーバー リクエストの数を減らし、ページのパフォーマンスを向上させることができます。

要約すると、この記事では、CSS を使用して UniApp の背景画像を動的に変更し、localStorage を使用して背景画像のキャッシュを実装する方法を紹介します。これにより、ページのパフォーマンスが向上し、サーバー リクエストが削減され、開発の実践が可能になります。参考に値する実装。

以上がCSS を使用して UniApp の背景画像を動的に変更する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート