Jquery实现图片放大镜效果的思路及代码(自写)


Posted in Javascript onOctober 18, 2013

网上一大堆限制多,文档也难看懂,而且麻烦~自己写了个。大笑

算法:

第一步:

放大图片的位置=鼠标所在的容器的宽或者高除以容器自身的高度和宽度,求出鼠标在容器中移动的百分比

第二部:

得到百分比之后

x=-(x百分比*图片的宽度-显示容器的宽度/2);

y=-(y百分比*图片的高度-显示容器的高度/2);

两个参数,x和y,就是大图的位置了,后面加了个显示容器的大小/2 是为了保证图片显示在中间。

效果图:
Jquery实现图片放大镜效果的思路及代码(自写) 
代码:

<!DOCTYPE HTML> 
<html> 
<head> 
<title>商品信息</title> 
</head> 
<style> html,body,img,a,div{ 
margin: 0px; 
padding: 0px; 
border: 0px; 
font: 12px/150% Arial,Verdana,"宋体"; 
color: rgb(102, 102, 102); 
} 
div:after { 
clear: both; 
content: '.'; 
height:0; 
visibility: hidden; 
diplay: block; 
} 
div { 
zoom: 1; 
} 
.main-body{ 
text-align: center; 
padding: 15px; 
} 
.head-box{ 
height: 400px; 
border: #CCC 1px solid; 
} 
.head-box-left{ 
width: 300px; 
height: 390px; 
/*border: #CCC 1px solid;*/ 
float: left; 
padding: 3px; 
position: relative; 
} 
.head-box-right{ 
width: 500px; 
height: 390px; 
border: #CCC 1px solid; 
float: left; 
margin-left: 10px; 
} 
.goods-max-img{ 
width: 300px; 
height: 300px; 
display:block; 
border: #CCC 1px solid; 
position: relative; 
cursor: move; 
} 
.goods-img-list{ 
width: 300px; 
height: 80px; 
margin-top: 10px; 
} 
.goods-change{ 
display: block; 
float: left; 
width: 17px; 
height: 54px; 
background: url("../web/imgs/goods-change-btn.png"); 
} 
.change-prev{ 
margin-right: 5px; 
margin-left: 2px; 
} 
.change-prev:HOVER{ 
background-position: -34px 0px; 
} 
.change-next{ 
margin-left: 5px; 
background-position: -17px 0px; 
} 
.change-next:HOVER{ 
margin-left: 5px; 
background-position: -51px 0px; 
} 
.goods-img-list-box{ 
width: 250px; 
height: 54px; 
/*border:1px #CCC solid;*/ 
border: 0px 1px; 
float: left; 
position: relative; 
overflow: hidden; 
} 
.goods-img-list-box ul{ 
margin: 0px; 
padding: 0px; 
position: absolute; 
top: 1px; 
left: 0px; 
width: 500px; 
} 
.goods-img-list-box ul li{ 
display: block; 
float: left; 
width: 50px; 
height: 50px; 
border: #CCC 1px solid; 
margin-left: 3px; 
} 
.goods-img-list-box ul li a{ 
display: block; 
width: 100%; 
height: 100%; 
text-decoration: none; 
} 
.preview-box{ 
position: absolute; 
top: 0px; 
width: 500px; 
height: 500px; 
background-color: white; 
border: #CCC 1px solid; 
left: 310px; 
display: none; 
overflow: hidden; 
} 
</style> 
<script type="text/javascript"> 
$(function(){ 
$(".goods-max-img").mousemove(function(event){ 
$(".preview-box").show(); 
//计算百分比 
var x=event.screenX; 
var y=event.screenY; 
x-=$(this).offset().left; 
y=y-$(this).offset().top-65; 
//得出比例 
x=(x/300).toFixed(2); 
y=(y/300).toFixed(2); 
//250 容器的大小/2 
x=-($("#preview-img").width()*x-250); 
y=-($("#preview-img").height()*y-250); 
$("#preview-img").css('top',y+'px'); 
$("#preview-img").css('left',x+'px'); 
document.title=x+","+y; 
}); 
$(".goods-max-img").mouseout(function(){ 
$(".preview-box").hide(); 
}); 
}); 
</script> 
<body> 
<div class="main-body"> 
<!-- 头部信息 --> 
<div class="head-box"> 
<!-- 头部左侧信息 --> 
<div class="head-box-left"> 
<!-- 商品大图 --> 
<a class="goods-max-img"> 
<img width="100%" height="100%" alt="加载中..." src="http://pic.desk.chinaz.com/file/201211/5/shierybizi7.jpg"> 
</a> 
<div class="preview-box"> 
<div style="width: 500px;height: 500px;overflow: hidden;"> 
<img id="preview-img" style="position: absolute;" alt="加载中..." src="http://pic.desk.chinaz.com/file/201211/5/shierybizi7.jpg"> 
</div> 
</div> 
<!-- 大图结束 --> 
<!-- 图片列表 --> 
<div class="goods-img-list"> 
<a href="javascript:void();" class="goods-change change-prev" title="上一张"></a> 
<div class="goods-img-list-box"> 
<ul> 
<li><a href="javascript:void()">8</a></li> 
<li><a href="javascript:void()">7</a></li> 
<li><a href="javascript:void()">6</a></li> 
<li><a href="javascript:void()">5</a></li> 
<li><a href="javascript:void()">3</a></li> 
<li><a href="javascript:void()">3</a></li> 
<li><a href="javascript:void()">2</a></li> 
</ul> 
</div> 
<a href="javascript:void();" class="goods-change change-next" title="下一张"></a> 
</div> 
<!-- 图片列表结束 --> 
</div> 
<!-- 头部左侧信息结束 --> 
<div class="head-box-right"></div> 
</div> 
<!-- 头部信息结束 --> 
<!-- 主体内容 --> 
<div class="body-content"> 
</div> 
<!-- 主体内容结束 --> 
</div> 
</body> 
</html>
Javascript 相关文章推荐
插件:检测javascript的内存泄漏
Mar 04 Javascript
HTML中的setCapture和releaseCapture使用介绍
Mar 21 Javascript
JavaScript prototype属性深入介绍
Nov 27 Javascript
Js 冒泡事件阻止实现代码
Jan 27 Javascript
jquery自动切换tabs选项卡的具体实现
Dec 24 Javascript
JS实现黑客帝国文字下落效果
Sep 01 Javascript
浅谈angular懒加载的一些坑
Aug 20 Javascript
在vue中实现简单页面逆传值的方法
Nov 27 Javascript
layui获取多选框中的值方法
Aug 15 Javascript
默认浏览器设置及vue自动打开页面的方法
Sep 21 Javascript
基于JS实现前端压缩上传图片的实例代码
May 14 Javascript
vue props对象validator自定义函数实例
Nov 13 Javascript
通过length属性判断jquery对象是否存在
Oct 18 #Javascript
js 使FORM表单的所有元素不可编辑的示例代码
Oct 17 #Javascript
javascript中负数算术右移、逻辑右移的奥秘探索
Oct 17 #Javascript
jquery快捷动态绑定键盘事件的操作函数代码
Oct 17 #Javascript
js实现的常用的左侧导航效果
Oct 17 #Javascript
给超链接添加特效鼠标移动展示提示信息且随鼠标移动
Oct 17 #Javascript
JS对HTML标签select的获取、添加、删除操作
Oct 17 #Javascript
You might like
SMARTY学习手记
2007/01/04 PHP
php中修改浏览器的User-Agent来伪装你的浏览器和操作系统
2011/07/29 PHP
php 地区分类排序算法
2013/07/01 PHP
PHP http请求超时问题解决方案
2020/11/13 PHP
TNC vs RR BO3 第一场 2.14
2021/03/10 DOTA
javascript学习笔记(四) Number 数字类型
2012/06/19 Javascript
JQuery以JSON方式提交数据到服务端示例代码
2014/05/05 Javascript
jquery实现图片随机排列的方法
2015/05/04 Javascript
详谈javascript中的cookie
2015/06/03 Javascript
基于JS实现的笛卡尔乘积之商品发布
2016/05/13 Javascript
Nodejs+Socket.io实现通讯实例代码
2017/02/13 NodeJs
JS对象的深度克隆方法示例
2017/03/16 Javascript
nodejs创建简易web服务器与文件读写的实例
2017/09/07 NodeJs
JS计算两个时间相差分钟数的方法示例
2018/01/10 Javascript
layui文件上传控件带更改后数据传值的方法
2019/09/23 Javascript
[00:31]DOTA2荣耀之路7:Miracle-空血无敌斩
2018/05/31 DOTA
python基础教程之Hello World!
2014/08/29 Python
python利用datetime模块计算时间差
2015/08/04 Python
Python实现基本数据结构中队列的操作方法示例
2017/12/04 Python
为什么选择python编程语言入门黑客攻防 给你几个理由!
2018/02/02 Python
Python使用Selenium爬取淘宝异步加载的数据方法
2018/12/17 Python
python切片(获取一个子列表(数组))详解
2019/08/09 Python
解决pytorch DataLoader num_workers出现的问题
2020/01/14 Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
2020/02/12 Python
Python filter过滤器原理及实例应用
2020/08/18 Python
名词解释型面试题(主要是网络)
2013/12/27 面试题
《胖乎乎的小手》教学反思
2014/02/26 职场文书
2014院党委领导班子及其成员群众路线对照检查材料思想汇报
2014/10/04 职场文书
2014年减负工作总结
2014/12/10 职场文书
2016新年慰问信范文
2015/03/25 职场文书
《社戏》教学反思
2016/02/22 职场文书
安全责任协议书范本
2016/03/23 职场文书
导游词之海南-南湾猴岛
2019/10/12 职场文书
浅析python中特殊文件和特殊函数
2022/02/24 Python
《辉夜大小姐想让我告白》第三季正式预告
2022/03/20 日漫
Python+OpenCV实现图片中的圆形检测
2022/04/07 Python