用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等比例缩小图片尺寸的实例
Feb 27 Javascript
jquery 图片缩放拖动的简单实例
Jan 08 Javascript
js点击出现悬浮窗效果不使用JQuery插件
Jan 20 Javascript
js实现浏览器窗口大小被改变时触发事件的方法
Feb 02 Javascript
Node.js中Request模块处理HTTP协议请求的基本使用教程
Mar 31 Javascript
jQuery和hwSlider实现内容响应式可触控滑动切换效果附源码下载(二)
Jun 22 Javascript
实例详解jQuery的无new构建
Aug 02 Javascript
JavaScript reduce和reduceRight详解
Oct 24 Javascript
JS验证不重复验证码
Feb 10 Javascript
使用travis-ci如何持续部署node.js应用详解
Jul 30 Javascript
Node.js 进程平滑离场剖析小结
Jan 24 Javascript
jQuery cookie的公共方法封装和使用示例
Jun 01 jQuery
用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+mysql实现用户注册登陆的方法
2015/01/03 PHP
PHP学习笔记(二):变量详解
2015/04/17 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/01/13 Javascript
判断控件是否已加载完成的代码
2010/02/24 Javascript
javascript移出节点removeChild()使用介绍
2014/04/03 Javascript
JavaScript中的函数嵌套使用
2015/06/04 Javascript
jQuery EasyUI 布局之动态添加tabs标签页
2015/11/18 Javascript
实例讲解javascript注册事件处理函数
2016/01/09 Javascript
jQuery弹出遮罩层效果完整示例
2016/09/13 Javascript
Highcharts+NodeJS搭建数据可视化平台示例
2017/01/01 NodeJs
AngularJS使用ng-class动态增减class样式的方法示例
2017/05/18 Javascript
一次围绕setTimeout的前端面试经验分享
2017/06/15 Javascript
Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)
2017/10/25 Javascript
JavaScript内存泄漏的处理方式
2017/11/20 Javascript
es6新特性之 class 基本用法解析
2018/05/05 Javascript
JavaScript数组特性与实践应用深入详解
2018/12/30 Javascript
基于vue实现web端超大数据量表格的卡顿解决
2019/04/02 Javascript
详解如何在Javascript和Sass之间共享变量
2019/11/13 Javascript
Python批量转换文件编码格式
2015/05/17 Python
flask框架jinja2模板与模板继承实例分析
2019/08/01 Python
python pymysql库的常用操作
2020/10/16 Python
佳能法国商店:Canon法国
2019/02/14 全球购物
LINUX下线程,GDI类的解释
2016/12/14 面试题
毕业生简历自我评价范文
2014/04/09 职场文书
小学生爱国演讲稿
2014/04/25 职场文书
梅花魂教学反思
2014/04/25 职场文书
五四演讲稿范文
2014/09/03 职场文书
公司给客户的感谢信
2015/01/23 职场文书
《抽屉原理》教学反思
2016/02/20 职场文书
《活见鬼》教学反思
2016/02/24 职场文书
人身损害赔偿协议书
2016/03/22 职场文书
会计专业2019暑假实习报告
2019/06/21 职场文书
2019暑假学生安全口号
2019/06/27 职场文书
Unity连接MySQL并读取表格数据的实现代码
2021/06/20 MySQL
如何搭建 MySQL 高可用高性能集群
2021/06/21 MySQL
java泛型通配符详解
2021/07/25 Java/Android