用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 29 Javascript
node.js中的fs.mkdir方法使用说明
Dec 17 Javascript
零基础搭建Node.js、Express、Ejs、Mongodb服务器及应用开发入门
Dec 20 Javascript
jQuery插件实现表格隔行变色及鼠标滑过高亮显示效果代码
Feb 25 Javascript
基于jquery实现无限级树形菜单
Mar 22 Javascript
微信小程序 免费SSL证书https、TLS版本问题的解决办法
Dec 14 Javascript
Vue开发过程中遇到的疑惑知识点总结
Jan 20 Javascript
Angular4实现图片上传预览路径不安全的问题解决
Dec 25 Javascript
从零开始搭建webpack+react开发环境的详细步骤
May 18 Javascript
Vue 菜单栏点击切换单个class(高亮)的方法
Aug 22 Javascript
深入理解Vue.js轻量高效的前端组件化方案
Dec 10 Javascript
JavaScript如何操作css
Oct 24 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
模拟OICQ的实现思路和核心程序(一)
2006/10/09 PHP
PHP中ob_start函数的使用说明
2013/11/11 PHP
php curl_init函数用法
2014/01/31 PHP
php里array_work用法实例分析
2015/07/13 PHP
微信支付PHP SDK ―― 公众号支付代码详解
2016/09/13 PHP
js左侧多级菜单动态的解决方案
2010/02/01 Javascript
LazyLoad 延迟加载(按需加载)
2010/05/31 Javascript
关于jquery动态增减控件的一些想法和小插件
2010/08/01 Javascript
JavaScript中使用数组方法汇总
2016/02/16 Javascript
Angular4.0动画操作实例详解
2019/05/10 Javascript
使用webpack将ES6转化ES5的实现方法
2019/10/13 Javascript
nuxt.js写项目时增加错误提示页面操作
2020/11/05 Javascript
菜鸟使用python实现正则检测密码合法性
2016/01/05 Python
python安装Scrapy图文教程
2017/08/14 Python
Python探索之URL Dispatcher实例详解
2017/10/28 Python
Python实现判断给定列表是否有重复元素的方法
2018/04/11 Python
Python实现将数据写入netCDF4中的方法示例
2018/08/30 Python
解决pycharm的Python console不能调试当前程序的问题
2019/01/20 Python
Python基础之条件控制操作示例【if语句】
2019/03/23 Python
python支持多线程的爬虫实例
2019/12/21 Python
python模拟实现分发扑克牌
2020/04/22 Python
python中常见错误及解决方法
2020/06/21 Python
详解Python yaml模块
2020/09/23 Python
python UIAutomator2使用超详细教程
2021/02/19 Python
阿迪达斯意大利在线商店:adidas意大利
2016/09/19 全球购物
新西兰廉价汽车租赁:Snap Rentals
2018/09/14 全球购物
注塑工厂厂长岗位职责
2013/12/02 职场文书
出国留学介绍信
2014/01/13 职场文书
销售人才自我评价范文
2014/09/27 职场文书
医德医风个人总结
2015/02/28 职场文书
2015年世界粮食日演讲稿
2015/03/20 职场文书
Python数据分析之pandas函数详解
2021/04/21 Python
Pillow图像处理库安装及使用
2022/04/12 Python
MySQL提取JSON字段数据实现查询
2022/04/22 MySQL
Oracle中DBLink的详细介绍
2022/04/29 Oracle
PostgreSQL逻辑复制解密原理解析
2022/09/23 PostgreSQL