我想使用java脚本在另一个图像的右上角显示图像。
我该如何实现?
我已使用appendChild()
方法将图片元素添加到另一个图片元素,但它没有附加。
function appendImage(element, src, alt)
{
var image = new Image();
image.src = src;
image.alt = alt;
element.appendChild(image);
return false;
}
<img border="0" src="www.gravatar.com/avatar/" alt="" width="70" height="70"
onclick="appendImage(this, 'cancel3.png', 'Picture of foo')";>
可能是什么问题?
答案 0 :(得分:2)
你不能“将图像附加到另一个图像上”。将另一个元素放入图像中是无效的HTML - 因为<img>
标记不能包含子标记,也不能有结束标记。
如果您想将一张图像放在另一张图像的“顶部”上,请用相同尺寸的div
替换原始图像,并将两张图像放在其中。然后,您可以将第二个图像绝对放在第一个图像的顶部。这是对您的功能的修改,将实现此目的:
function overlayImage(element, src, alt) {
var
div = document.createElement('div'),
img = new Image();
element.parentElement.insertBefore(div, element); // add the div to the parent
div.style.display = 'inline-block'; // make it behave like an image
div.style.position = 'relative'; // for absolute position of children
div.appendChild(element);
img.src = src;
img.alt = alt;
img.style.position = 'absolute';
img.style.right = 0;
img.style.top = 0;
div.appendChild(img);
}
你去吧!
这样做会将您的独奏<img src="(base)">
标记替换为以下结构。
<div style="display:inline-block; position:relative;">
<img src="(base)">
<img src="(overlay)" style="position:absolute; top:0; right:0;">
</div>
当然,如果您可以控制页面,那么创建CSS样式可能更好,您可以应用而不是手动设置每个元素的样式。如果您可以控制页面,并且希望对许多图像执行此操作,则还可以提前创建上述结构,而不必在使用javascript加载页面后进行调整。
答案 1 :(得分:1)
您是否有理由为此使用Javascript?
你可以很容易地用CSS做到这一点:
HTML:
<img id="image-back" src="image1.jpg"/>
<img id="image-front" src="image2.jpg"/>
CSS:
#image-front{
position: absolute;
top: 0;
right: 0;
z-index: 999;
}
如果想要做某种onclick事件(比如替换这两个图像),你可以这样做:
HTML:
<img id="image-front" src="201307251701.PNG" onclick="doStuff()"/>
JavaScript:
function doStuff(){
window.alert("Stuff done!");
}
答案 2 :(得分:0)
您可以使用div
作为两个图像的包装。一个覆盖整个div
,但第二个图像位于div
的右上角,这两个图像是兄弟姐妹,而不是父子。
function appendImage(element, src, alt) {
var image = new Image();
image.src = src;
image.alt = alt;
image.style.position = "absolute";
image.style.right = 0;
element.appendChild(image);
return false;
}
document.getElementById("wrap").onclick = function() {
appendImage(this, 'http://placekitten.com/40/40', 'Picture of foo');
};
#wrap {
display:inline;
position:relative;
}
Click on the kitty!
<div id="wrap">
<img border="1" src="http://placekitten.com/100/100" width="100" height="100">
</div>
答案 3 :(得分:0)
您无法将图像附加到其他图像。使用这样的html结构:
<div id="container"
style="position: relative; width: 70px; height:70px"
onclick="appendImage(this, 'cancel3.png', 'Picture of foo')">
<img border="0" src="www.gravatar.com/avatar/" alt="" />
</div>
答案 4 :(得分:-1)
的Javascript?我假设您的图片ID为myImage
。
var img = document.getElementById(myImage).style;
img.position = "absolute";
img.top = "0px";
img.right = "0px";