用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 自动完成脚本整理(33个)
Oct 20 Javascript
基于jquery的地址栏射击游戏代码
Mar 10 Javascript
关于div自适应高度/左右高度自适应一致的js代码
Mar 22 Javascript
Jquery实现Div上下移动示例
Apr 23 Javascript
JavaScript中数组继承的简单示例
Jul 29 Javascript
JS实现仿新浪微博发布内容为空时提示功能代码
Aug 19 Javascript
自己动手写的jquery分页控件(非常简单实用)
Oct 28 Javascript
JavaScript中setTimeout和setInterval函数的传参及调用
Mar 11 Javascript
微信小程序 页面跳转传参详解
Oct 28 Javascript
JavaScript获取服务器端时间的方法
Nov 29 Javascript
Vue2.0学习之详解Vue 组件及父子组件通信
Dec 12 Javascript
Vue.directive 实现元素scroll逻辑复用
Nov 29 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 miniBB中文乱码问题解决方法
2008/11/25 PHP
php session 检测和注销
2009/03/16 PHP
一个PHP数组应该有多大的分析
2009/07/30 PHP
PHP设计模式之解释器模式的深入解析
2013/06/13 PHP
php ios推送(代码)
2013/07/01 PHP
php截取中文字符串不乱码的方法
2013/12/25 PHP
PHP多线程之内部多线程实例分析
2015/03/09 PHP
php压缩和解压缩字符串的方法
2015/03/14 PHP
Redis使用Eval多个键值自增的操作实例
2016/11/04 PHP
PHP静态成员变量
2017/02/14 PHP
读jQuery之十三 添加事件和删除事件的核心方法
2011/08/23 Javascript
Json字符串转换为JS对象的高效方法实例
2013/05/01 Javascript
js获取电脑分辨率的思路及操作
2013/11/22 Javascript
8个超实用的jQuery功能代码分享
2015/01/08 Javascript
AngularJS上拉加载问题解决方法
2016/05/23 Javascript
基于BootStrap实现局部刷新分页实例代码
2016/08/08 Javascript
AngularJS 作用域详解及示例代码
2016/08/17 Javascript
ionic环境配置及问题详解
2017/06/27 Javascript
vue select二级联动第二级默认选中第一个option值的实例
2018/01/10 Javascript
vue使用监听实现全选反选功能
2018/07/06 Javascript
JS 自执行函数原理及用法
2019/08/05 Javascript
node读写Excel操作实例分析
2019/11/06 Javascript
原生Vue 实现右键菜单组件功能
2019/12/16 Javascript
[48:02]Ti4循环赛第三日 VG vs Liquid和NEWBEE vs DK
2014/07/12 DOTA
python+mysql实现简单的web程序
2014/09/11 Python
全面了解Python的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
Python全局变量与局部变量区别及用法分析
2018/09/03 Python
使用tensorboard可视化loss和acc的实例
2020/01/21 Python
Windows下Anaconda和PyCharm的安装与使用详解
2020/04/23 Python
如何将PySpark导入Python的放实现(2种)
2020/04/26 Python
Html5应用程序缓存(Cache manifest)
2018/06/04 HTML / CSS
澳大利亚在线时尚精品店:Hello Molly
2018/02/26 全球购物
Myprotein西班牙官网:欧洲第一大运动营养品牌
2020/02/24 全球购物
邮政竞聘演讲稿
2014/09/03 职场文书
2014年前台文员工作总结
2014/12/08 职场文书
2015年中秋晚会主持稿
2015/07/30 职场文书