放大图片的js


<html>
<head>
<title>emu</title>
</head>
<body>
<BR>
原图:<BR>
<img src="no_picture.jpg"

onmousemove='zoom()' onmouseout='hideBigImg()' id="srcImg" style="margin-left:100px;">
<BR>
局部放大图:<BR>
<div id="debug"></div>
<!--1-->
<div style='overflow:hidden;display:none;z-index:1;left:400;top:30px; position:absolute;' id='bigImgDiv'><img id="zoomImg"></div>


<!--2-->
<script language="javascript" type="text/javascript">
<!--


var zoomImg;
var srcImg;
var zoomRate = 3;
window.attachEvent('onload',initZoom)
function initZoom()
{
zoomImg=document.getElementById('zoomImg');

srcImg=document.getElementById('srcImg');
zoomImg.src = srcImg.src;

zoomImg.width = srcImg.width*zoomRate;
zoomImg.height = srcImg.height*zoomRate;
zoomImg.parentNode.style.width = srcImg.width;
zoomImg.parentNode.style.height = srcImg.height;
}



function zoom(){
document.getElementById('bigImgDiv').style.display='block';
var elm = event.srcElement;
h = elm.offsetHeight/zoomRate/2;
w = elm.offsetWidth/zoomRate/2;
var x = event.x-elm.offsetLeft;
xx=x<(elm.offsetWidth-w)?x<w?w:x:elm.offsetWidth-w;
zoomImg.style.marginLeft=(w-xx)*zoomRate;
var y = event.y-elm.offsetTop;
yy=y<(elm.offsetHeight-h)?y<h?h:y:elm.offsetHeight-h;
zoomImg.style.marginTop=(h-yy)*zoomRate;
document.getElementById('debug').innerHTML=event.x+":"+event.y+"-"+elm.offsetLeft+"-"+elm.offsetTop;
}

function hideBigImg(){
document.getElementById('bigImgDiv').style.display='none';
}

//-->
</script>
</body>
</html>



这是在FF里是可以的但是 在IE中 会因为elm.offsetLeft elm.offsetTop 解释的不同而造成非直接放在body中的图像位置获取错误
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 JavaScript 中实现点击图片放大可以通过以下步骤进行: 1. HTML 结构:在 HTML 中,你需要有一个包含图片的容器元素(例如 div)和一个用于显示放大图片的元素(例如 img 或 div)。给图片添加一个点击事件监听器,以便在点击时触发放大效果。 ```html <div id="imageContainer"> <img src="小图片.jpg" alt="图片" id="smallImage"> </div> <div id="zoomedImageContainer"> <img src="大图片.jpg" alt="放大图片" id="zoomedImage"> </div> ``` 2. CSS 样式:使用 CSS 来设置图片容器和放大图片的样式,并将放大图片隐藏起来。 ```css #imageContainer { position: relative; } #zoomedImageContainer { position: absolute; top: 0; left: 0; display: none; } #zoomedImageContainer img { width: 100%; height: auto; } ``` 3. JavaScript 事件处理:使用 JavaScript 来处理点击事件,当点击小图片时,显示放大图片,并根据鼠标位置进行定位。 ```javascript // 获取元素 const smallImage = document.getElementById("smallImage"); const zoomedImageContainer = document.getElementById("zoomedImageContainer"); // 添加点击事件监听器 smallImage.addEventListener("click", function() { // 显示放大图片 zoomedImageContainer.style.display = "block"; // 设置放大图片的位置 const smallImageRect = smallImage.getBoundingClientRect(); zoomedImageContainer.style.top = smallImageRect.top + "px"; zoomedImageContainer.style.left = smallImageRect.right + "px"; }); // 点击放大图片外的区域,隐藏放大图片 document.addEventListener("click", function(event) { if (!zoomedImageContainer.contains(event.target) && event.target !== smallImage) { zoomedImageContainer.style.display = "none"; } }); ``` 这样,当用户点击小图片时,放大图片会显示在其旁边,再次点击放大图片外的区域,放大图片会隐藏起来。你可以根据实际需求对样式和代码进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值