作家
登录

用javascript实现在小方框中浏览大图的代码

作者: 来源:www.28hudong.com 2013-03-30 03:20:29 阅读 我要评论

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>无标题文档</title> <style type="text/css"> <!-- #pic { height: 300px; width: 420px; border: 3px solid #ccc; background-image: url(http://www.happyshow.org/sample/20060619/3.jpg); background-repeat: no-repeat; background-position: 0px 0px; background-color: #333; cursor: crosshair; } --> </style> <script type="text/javascript"> <!-- var p = new Array(); var speed = 1.0; // 1 表示1倍速度,即原速 var x,y // 鼠标点下去时背景的坐标 var x_new,y_new //位移 function getmouseposition(event) { if(document.all) { x = document.body.scrollLeft+event.clientX; y = document.body.scrollTop+event.clientY; }else { x = event.layerX; y = event.layerY; } } function setmouseposition(event) { if(document.getElementById('pic').style.backgroundPosition.length==0) {document.getElementById('pic').style.backgroundPosition="0px 0px";} p = document.getElementById('pic').style.backgroundPosition.split(" ") if(document.all) { x_new = document.body.scrollLeft+event.clientX; y_new = document.body.scrollTop+event.clientY; }else { x_new = event.layerX; y_new = event.layerY; } x2 = (speed*(x_new-x)+parseInt(p[0])).toString(10); // 计算位移量 y2 = (speed*(y_new-y)+parseInt(p[1])).toString(10); document.getElementById('pic').style.backgroundPosition=x2+"px "+y2+"px"; } --> </script> </head> <body> <div id="pic" onmousedown="getmouseposition(event)" onmouseup="setmouseposition(event)"></div> 今天在玩 google earth 4.0b,发现 Print Screen 下来的图片很大,如果直接放在网页上,因为尺寸太大又不合适,又不想压缩图片的尺寸,于是乎就想到了这种方法,没想到实现起来比预想的要容易。呵呵,该死的是,这段代码还兼容 firefox。 </body> </html> 今天在玩 google earth 4.0b,发现 Print Screen 下来的图片很大,如果放在网页不合适,又不想压缩图片的尺寸,于是乎就想到了这种方法,没想到实现起来比预想的要容易。呵呵,该死的是,这段代码还兼容 firefox。 -------------------------------------------------------------------------------------- 2006.6.20 修改: ·添加了滚动的范围,不会出现背景 ·用到onmousemove事件,图片实时随鼠标移动而移动 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>无标题文档</title> <style type="text/css"> <!-- #pic { width:420px; height:300px; border: 3px solid #ccc; background-image: url(http://www.happyshow.org/sample/20060619/3.jpg); background-repeat: no-repeat; background-position: 0px 0px; cursor: move; } --> </style> <script type="text/javascript"> <!-- var p = new Array(); var speed = 0.05; //速度 var picWidth = 1280; // 大图的宽高 var picHeight = 971; var x,y // 鼠标点下去时背景的坐标 var x_new,y_new //位移 var haveclick = false; function getmouseposition(event) { if(document.all) { x = document.body.scrollLeft+event.clientX; y = document.body.scrollTop+event.clientY; }else { x = event.layerX; y = event.layerY; } haveclick = true; } function movestop() { haveclick = false; } function movestart(event) { if(haveclick) { if(document.getElementById('pic').style.backgroundPosition.length==0) {document.getElementById('pic').style.backgroundPosition="0px 0px";} p = document.getElementById('pic').style.backgroundPosition.split(" ") if(document.all) { x_new = document.body.scrollLeft+event.clientX; y_new = document.body.scrollTop+event.clientY; }else { x_new = event.layerX; y_new = event.layerY; } x2 = (speed*(x_new-x)+parseInt(p[0])).toString(10); // 计算位移量 y2 = (speed*(y_new-y)+parseInt(p[1])).toString(10); if (x2<-picWidth+420) x2=-picWidth+420; if (y2>0) y2=0; if (x2>0) x2=0; if (y2<-picHeight+300) y2=-picHeight+300; document.getElementById('pic').style.backgroundPosition=x2+"px "+y2+"px"; } } --> </script> </head> <body> <div id="pic" onmousedown="getmouseposition(event)" onmousemove="movestart(event)" onmouseup="movestop()" onmouseout="movestop()"> </div> </body> </html>

  推荐阅读

  超强推荐的js编程中的简洁写法收集

举个例子,比如数据a,一般访问每个数据会用 for(var x=0;x<a.length;x++) { alert(a[x]) } 简洁的写法是 for(var x in a) { alert(a[x]) } 新建数组的简单写法 d=[1,2,3,3,4,3,2,2] 或 d={1,2,3,3,4,3,>>>详细阅读


本文标题:用javascript实现在小方框中浏览大图的代码

地址:http://www.17bianji.com/kaifa2/JS/30185.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)