UniApp は、HTML、CSS、JavaScript を使用して、WeChat ミニプログラム、Alipay ミニプログラムなどの複数のプラットフォームに基づいたアプリケーションを構築できるクロスプラットフォーム開発フレームワークです。このプロセスでは、背景画像を動的に変更することが一般的な要件です。この記事では、CSSを使用してUniAppの背景画像を動的に変更する方法を紹介します。
CSS の background-image
プロパティは、要素の背景画像を設定するために使用されます。 JavaScript を使用して要素の CSS プロパティを動的に変更し、背景画像を動的に変更する効果を実現できます。この関数を UniApp に実装する方法を示してみましょう。
まず、動的に変更する背景画像を保存するための画像 URL を含む配列を作成する必要があります。
// 在 data 中定义 bgUrls 数组 data() { return { bgUrls: [ 'https://example.com/bg1.jpg', 'https://example.com/bg2.jpg', 'https://example.com/bg3.jpg' ], currentBgIndex: 0 // 记录当前背景图索引 } }
背景画像を動的に変更するために必要な要素として、コンテナ要素をテンプレートに追加します。ここでは、div
要素をコンテナとして使用します。
<template> <div class="bg-container"> <!-- 此处添加页面内容 --> </div> </template>
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] + ')'; } }
ライフサイクル関数に背景画像を読み込みます
created() { this.bgUrls.forEach((url) => { const img = new Image(); img.src = url; img.onload = () => { window.localStorage.setItem(url, img.src); }; }); }
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 の背景画像を動的に変更する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。