Как накладывать изображения в javascript?

Мне нужно решить следующую проблему.

У меня есть два (или более). PNG изображения тех же размеров. Каждое изображение PNG создается с прозрачным цветом фона.

Мне нужно отобразить img1 и на нем img2, поэтому в местах, где img2 имеет прозрачный цвет, будет отображаться img1.

Например: img1 верхняя часть заполнена прозрачным цветом и коровой на нижней части. Верхняя часть img2 содержит облака и нижнюю часть, заполненную прозрачным цветом.

Я хочу объединить эти два изображения и увидеть облака над коровой.

Я понимаю, что мне нужно использовать некоторый фильтр при отображении обоих изображений, но не уверен, какой из них и какие параметры его использовать.

Ответы

Ответ 1

Что-то вроде этого должно работать (используя только HTML/CSS):

HTML:

<div class="imageWrapper">
  <img class="overlayImage" src="cow.png">
  <img class="overlayImage" src="clouds.png">
  <img class="overlayImage" src="downpart.png">
</div>

CSS

.imageWrapper {
  position: relative;
}
.overlayImage {
  position: absolute;
  top: 0;
  left: 0;
}

Имейте в виду, что IE6 отлично справляется с прозрачностью в PNG. Если вам нужно, чтобы он работал в IE6, вам нужно будет применить фильтры, которые вы упомянули. Эта процедура подробно описана здесь.

Ответ 2

Вам не нужно использовать какой-либо фильтр (за исключением IE6).

Вы можете просто разместить элементы <img> поверх каждого другого, используя CSS position: absolute, чтобы оба элемента занимали одну и ту же область.

В IE6 вам понадобится фильтр AlphaImageLoader просто для отображения PNG с прозрачностью

Ответ 3

Если вы используете jquery, попробуйте это в любом браузере

<script>
$(function () {
    var position = $("#i1").offset();
    $('#i2').css({ position:'absolute', top:position.top, left: position.left});
});
</script>
<img id='i1' src='images/zap_ring.png' />
<img id='i2' src='images/zap_ring_hover.png' />

и отрегулируйте значения top и left

$('#i2').css({ position:'absolute', top:position.top-10, left: position.left+5});

Ответ 4

Вы можете попробовать установить их .style.position в "absolute", дать им те же координаты с левым и верхним (или справа или снизу), а затем изменить их z-индекс. Хотя он довольно грязный, и, может быть, он плохо работает с вашей страницей, но я не могу придумать другого решения.