なぜ、これを行うのかわかりません。背景色を透明にするだけで、親のdiv背景が表示されるためです。
しかし、何らかの理由でこの種の技術が必要な場合は、Canvasオブジェクトを使用する必要があります。 理論はこのようにすべきです。 マウスがトリガーされたとき:
- 親divのdivの相対位置を計算します。
- divの幅と高さを取得します。
- 作成&キャンバスを初期化し、キャンバスにイメージの一部を描画します。
- キャンバスからdataURLを取得してから、マウス出力トリガーdivの背景として設定します。
コードスナップ以下の通りです:そのイメージは、サブのdivに描かれていることを確認するために
var canvas = null;
var ctx = null;
var img_loader = null;
function initCanvas() {
canvas = document.getElementById('canvas');
canvas.width = 221;
canvas.heigth = 221;
ctx = canvas.getContext("2d");
img_loader = document.getElementById('imgloader');
var bg = 'https://upload.wikimedia.org/wikipedia/commons/thumb/a/a5/Flower_poster_2.jpg/677px-Flower_poster_2.jpg';
img_loader.src = bg;
}
$(document).ready(function(){
initCanvas();
$('.box').hover(function() {
$(this).css('background-color', 'red');
$(this).css('background-image', 'none');
}, function() {
// set div background based on wrapper bg
var pos = $(this).position();
ctx.drawImage(img_loader,pos.left,pos.top,canvas.width, canvas.height,0,0,canvas.width, canvas.height);
$(this).css('background-color','transparent');
$(this).css('background-image','url(' + canvas.toDataURL() + ')');
});
})
Check the code on JSFIddle: Using Canvas to set the background
が、私は親のdiv無背景を作った、とだけ静的使用していますコード内の画像URL。 だから最初にあなたはダークブルーのボードを見るでしょう、そして、あなたがそれを赤くすると、マウスが出ると、サブ画像が描かれます。
ベストはクラス(追加と削除)を使用することです、あなたはたくさんのCSSルールを扱う必要はありません:) –
':hover'疑似クラスを使うのはなぜですか?ここではJavaScriptは必要ありません。 – Dekel
それはおそらく単純化することができます。しかし、それは問題ではありません。私が直面している難しさは、そのdivの背景を親の(その部分)背景にする方法です。 – DigitalEvolution