Один простой способ - установить изображение как «1001 *» в «окнах», которые абсолютно расположены в пределах #maskContainer
. top
и left
установлены, а background-position
соответствует.
См .: http://jsfiddle.net/thirtydot/XjCCK/
(посмотрите в браузере WebKit, чтобы анимация background-position
работала; это чисто для демонстрации)
HTML:
<div id="maskContainer">
<div class="window static"></div>
<div class="window moving"></div>
</div>
1020 * CSS:
#maskContainer {
background: #000;
width: 603px;
height: 482px;
position: relative;
overflow: hidden;
}
.window {
background: url(http://i.imgur.com/j9a2T.jpg) no-repeat;
position: absolute;
}
.static {
width: 80px;
height: 80px;
left: 20px;
top: 30px;
background-position: -20px -30px;
}
JavaScript:
var maskContainerWidth = $('#maskContainer').width(),
maskContainerHeight = $('#maskContainer').height();
setInterval(function() {
$('.moving').each(function() {
var width = Math.floor(Math.random()*maskContainerWidth),
height = Math.floor(Math.random()*maskContainerHeight),
left = Math.floor(Math.random()*(maskContainerWidth-width)),
top = Math.floor(Math.random()*(maskContainerHeight-height));
$(this).animate({
width: width,
height: height,
left: left,
top: top,
backgroundPositionX: -left,
backgroundPositionY: -top
}, 1000);
});
}, 1000);