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


Posted in Javascript onAugust 14, 2007

<!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>

Javascript 相关文章推荐
js 弹出菜单/窗口效果
Oct 30 Javascript
JavaScript的作用域和块级作用域概念理解
Sep 21 Javascript
jQuery 1.9.1源码分析系列(十四)之常用jQuery工具
Dec 02 Javascript
JavaScript弹窗基础篇
Apr 27 Javascript
jQuery封装的屏幕居中提示信息代码
Jun 08 Javascript
jQuery实现弹窗居中效果类似alert()
Feb 27 Javascript
jQuery常见面试题之DOM操作详析
Jul 05 jQuery
以BootStrap Tab为例写一个前端组件
Jul 25 Javascript
纯js实现页面返回顶部的动画(超简单)
Aug 10 Javascript
ES6/JavaScript使用技巧分享
Dec 14 Javascript
vue实现word,pdf文件的导出功能
Jul 31 Javascript
JavaScript模板引擎应用场景及实现原理详解
Dec 14 Javascript
用javascript实现计算两个日期的间隔天数
Aug 14 #Javascript
用js实现计算代码行数的简单方法附代码
Aug 13 #Javascript
js 事件小结 表格区别
Aug 13 #Javascript
JS 页面内容搜索,类似于 Ctrl+F功能的实现代码
Aug 13 #Javascript
javascript下给元素添加事件的方法与代码
Aug 13 #Javascript
javascript引用对象的方法代码
Aug 13 #Javascript
使一个函数作为另外一个函数的参数来运行的javascript代码
Aug 13 #Javascript
You might like
PHP 页面编码声明方法详解(header或meta)
2010/03/12 PHP
PHP中使用imagick实现把PDF转成图片
2015/01/26 PHP
PHP中SSO Cookie登录分析和实现
2015/11/06 PHP
javascript之典型高阶函数应用介绍二
2013/01/10 Javascript
jQuery scroll事件实现监控滚动条分页示例
2014/04/04 Javascript
jQuery对指定元素中指定字符串进行替换的方法
2015/03/17 Javascript
javascript作用域链(Scope Chain)用法实例解析
2015/11/30 Javascript
javascript瀑布流布局实现方法详解
2016/02/17 Javascript
第二次聊一聊JS require.js模块化工具的基础知识
2016/04/17 Javascript
js ajaxfileupload.js上传报错的解决方法
2016/05/05 Javascript
教你一步步用jQyery实现轮播器
2016/12/18 Javascript
微信小程序实现图片上传功能实例(前端+PHP后端)
2018/01/10 Javascript
vue中使用cropperjs的方法
2018/03/01 Javascript
node实现登录图片验证码的示例代码
2018/04/20 Javascript
深入理解JavaScript的值传递和引用传递
2018/10/24 Javascript
用Cordova打包Vue项目的方法步骤
2019/02/02 Javascript
微信小游戏之使用three.js 绘制一个旋转的三角形
2019/06/10 Javascript
基于vue实现圆形菜单栏组件
2019/07/05 Javascript
PyMongo安装使用笔记
2015/04/27 Python
python+selenium实现自动抢票功能实例代码
2018/11/23 Python
Python构建图像分类识别器的方法
2019/01/12 Python
python从入门到精通 windows安装python图文教程
2019/05/18 Python
python 统计文件中的字符串数目示例
2019/12/24 Python
Python Tornado实现WEB服务器Socket服务器共存并实现交互的方法
2020/05/26 Python
利用CSS的Sass预处理器(框架)来制作居中效果
2016/03/10 HTML / CSS
HTML5触摸事件(touchstart、touchmove和touchend)的实现
2020/05/08 HTML / CSS
Skyscanner波兰:廉价航班
2017/11/07 全球购物
英国文胸专家:AmpleBosom.com
2018/02/06 全球购物
英国女士和男士时尚服装网上购物:Top Labels Online
2018/03/25 全球购物
电大自我鉴定
2013/10/27 职场文书
会计专业毕业生推荐信
2013/11/05 职场文书
新闻传播专业求职信
2014/07/22 职场文书
2014年服务员个人工作总结
2014/12/23 职场文书
销售助理岗位职责
2015/02/11 职场文书
2014年个人年终总结
2015/03/09 职场文书
党员承诺书范文2015
2015/04/27 职场文书