源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2021-07-12 12:49 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:用javascript实现在小方框中浏览大图的代码
<!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>
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部