より正確には、私が持っている 20 個の div、10 個の背景画像に適用できるので、同じ背景を持つ 2 つの要素がありますか?
ゲームを再現したいのですが、可能かどうかわからないので始めませんでした。裏向きのカードが20枚あります。いずれかをクリックすると、反転して画像が表示されます。しかし、彼らはペアになっています。そのため、2 番目をクリックして画像が一致しないと、元に戻ります。そのため、すべてを一致させるまで、その位置を念頭に置いておく必要があります。最初にめくったものと 2 番目にめくったものの背景画像が同じ場合、それらは表向きのままです。しかし、今のところ、CSS を適用する方法が可能かどうかを知りたいだけです。アイデアは、リロードごとに異なる位置に背景画像を配置することです。
質問する
57 次
2 に答える
1
はい。
背景画像ごとに 1 つずつ、10 項目を含む配列を作成します。
var bg_array = [
'img01.jpg', //replace property here with URL of your image
// ... repeat
'img10.jpg'
];
次に、必要なすべての実際の背景画像 (この場合は 20、または 10 ペア) を含むループを持つ配列を作成します。
var i = bg_array.length,
tempArray = [];
while (i) {
i -= 1;
tempArray.push(bg_array[i]); // first instance
tempArray.push(bg_array[i]); // second instance... makes a pair
}
次に、div をループし、この配列からランダムに選択して、URL をbackgroundImage
各 div のプロパティに割り当て、URL のインスタンスを削除tempArray
します。
var divs = document.getElementsByTagName('div'), // this will capture all divs on the page; you might want to be more specific
d,
r;
for (d in divs) { // assume the variable divs is a collection of all your divs
r = Math.floor(Math.random() * tempArray.length); // randomly select number based on size of array
if (divs[d].style) { // check the div has a style to change!
d.style.backgroundImage = 'url("' + tempArray[r] + '")'; // apply randomly selected background image
tempArray.splice(r, 1); // remove image URL from tempArray so this won't be used again (remembering tempArray has 2 of each)
}
}
うまくいけば、このようなものがあなたが必要とすることをするでしょう。
于 2013-01-09T14:14:47.487 に答える
0
html コードは次のようになります。
<div id="1" class="b1"></div>
<div id="2" class="b1"></div>
<div id="3" class="b2"></div>
<div id="4" class="b2"></div>
<div id="5" class="b3"></div>
<div id="6" class="b3"></div>
<div id="7" class="b4"></div>
<div id="8" class="b4"></div>
<div id="9" class="b5"></div>
<div id="10" class="b5"></div>
そしてCSS:
.b1{background:url(image1.png);}
.b2{background:url(image2.png);}
.b3{background:url(image3.png);}
.b4{background:url(image4.png);}
.b5{background:url(image5.png);}
于 2013-01-09T14:18:13.217 に答える