用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 相关文章推荐
javascript编程起步(第七课)
Jan 10 Javascript
使用jquery选择器如何获取父级元素、同级元素、子元素
May 14 Javascript
JS判断字符串字节数并截取长度的方法
Mar 05 Javascript
JQuery之proxy实现绑定代理方法
Aug 01 Javascript
jquery uploadify隐藏上传进度的实现方法
Feb 06 Javascript
原生JS实现圣旨卷轴展开效果
Mar 06 Javascript
JS通过调用微信API实现微信支付功能的方法示例
Jun 29 Javascript
javaScript字符串工具类StringUtils详解
Dec 08 Javascript
Vue 换肤的示例实践
Jan 23 Javascript
React组件中的this的具体使用
Feb 28 Javascript
微信小程序实现的3d轮播图效果示例【基于swiper组件】
Dec 11 Javascript
react 组件传值的三种方法
Jun 03 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 5.3和PHP 5.4出现FastCGI Error解决方法
2015/02/12 PHP
Zend Framework常用校验器详解
2016/12/09 PHP
删除PHP数组中的重复元素的实现代码
2017/04/10 PHP
laravel 实现上传图片到本地和前台访问示例
2019/10/21 PHP
PHP队列场景以及实现代码实例详解
2021/02/26 PHP
js获取IFRAME当前的URL的方法
2013/11/13 Javascript
nodejs的10个性能优化技巧
2014/07/15 NodeJs
js监听鼠标事件控制textarea输入字符串的个数
2014/09/29 Javascript
js中匿名函数的创建与调用方法分析
2014/12/19 Javascript
SyntaxHighlighter 3.0.83使用笔记
2015/01/26 Javascript
JavaScript实现的MD5算法完整实例
2016/02/02 Javascript
js操作数据库实现注册和登陆的简单实例
2016/05/26 Javascript
终于实现了!精彩的jquery弹幕效果
2016/07/18 Javascript
微信JSAPI Ticket接口签名详解
2020/06/28 Javascript
vue使用codemirror的两种用法
2019/08/27 Javascript
使用JS监听键盘按下事件(keydown event)
2019/11/07 Javascript
使用kbone解决Vue项目同时支持小程序问题
2019/11/08 Javascript
vue 微信扫码登录(自定义样式)
2020/01/06 Javascript
Echarts在Taro微信小程序开发中的踩坑记录
2020/11/09 Javascript
pygame学习笔记(5):游戏精灵
2015/04/15 Python
Python实现的径向基(RBF)神经网络示例
2018/02/06 Python
python 读文件,然后转化为矩阵的实例
2018/04/23 Python
python 把文件中的每一行以数组的元素放入数组中的方法
2018/04/29 Python
Python异常处理操作实例详解
2018/05/10 Python
Python弹出输入框并获取输入值的实例
2019/06/18 Python
Python json转字典字符方法实例解析
2020/04/13 Python
深入浅析css3 border-image边框图像详解
2015/11/24 HTML / CSS
机电专业体育教师求职信
2013/09/21 职场文书
干部培训自我鉴定
2014/01/22 职场文书
旷课检讨书1000字
2014/02/14 职场文书
2015小学教师德育工作总结
2015/05/12 职场文书
2015年学校办公室主任工作总结
2015/07/20 职场文书
导游词之河北白洋淀
2020/01/15 职场文书
js基础语法与maven项目配置教程案例
2021/07/15 Javascript
用Python实现屏幕截图详解
2022/01/22 Python
Java实战之课程信息管理系统的实现
2022/04/01 Java/Android