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 相关文章推荐
js确定对象类型方法
Mar 30 Javascript
很好用的js日历算法详细代码
Mar 07 Javascript
javascript中全局对象的parseInt()方法使用介绍
Dec 19 Javascript
jquery实现个人中心导航菜单效果和美观都非常不错
Sep 02 Javascript
jQuery手机拨号界面特效代码分享
Aug 27 Javascript
js实现的二分查找算法实例
Jan 21 Javascript
js 判断附件后缀的简单实现方法
Oct 11 Javascript
JQuery和HTML5 Canvas实现弹幕效果
Jan 04 Javascript
详解node.js 下载图片的 2 种方式
Mar 02 Javascript
全面了解JavaScript的作用域链
Apr 03 Javascript
layui自己添加图片按钮并点击跳转页面的例子
Sep 14 Javascript
JS实现简易留言板(节点操作)
Mar 16 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
PHP 上传文件的方法(类)
2009/07/30 PHP
生成ubuntu自动切换壁纸xml文件的php代码
2010/07/17 PHP
PHP实现通用alert函数的方法
2015/03/11 PHP
实现laravel 插入操作日志到数据库的方法
2019/10/11 PHP
php中array_fill函数的实例用法
2021/03/02 PHP
jQuery中$.click()无效问题分析
2015/01/29 Javascript
利用原生js和jQuery实现单选框的勾选和取消操作的方法
2016/09/04 Javascript
基于jQuery实现左侧菜单栏可折叠功能
2016/12/27 Javascript
Express进阶之log4js实用入门指南
2018/02/10 Javascript
vue基于mint-ui实现城市选择三级联动
2020/06/30 Javascript
bootstrap动态调用select下拉框的实例代码
2018/08/09 Javascript
Vue 第三方字体图标引入 Font Awesome的方法
2018/09/28 Javascript
js消除图片小游戏代码
2019/12/11 Javascript
JS面向对象之多选框实现
2020/01/17 Javascript
vue组件库的在线主题编辑器的实现思路
2020/04/03 Javascript
vscode+gulp轻松开发小程序的完整步骤
2020/10/18 Javascript
JavaScript实现表单验证功能
2020/12/09 Javascript
[05:13]TI4 中国战队 机场出征!!
2014/07/07 DOTA
Python实现保证只能运行一个脚本实例
2015/06/24 Python
在Django的form中使用CSS进行设计的方法
2015/07/18 Python
Python数据结构与算法之图的基本实现及迭代器实例详解
2017/12/12 Python
python3中使用__slots__限定实例属性操作分析
2020/02/14 Python
python实现密码验证合格程序的思路详解
2020/06/01 Python
vscode配置anaconda3的方法步骤
2020/08/08 Python
Hotels.com日本:国外和海外住宿,酒店预订
2019/12/13 全球购物
财务会计专业应届毕业生求职信
2013/10/18 职场文书
管理部部长岗位职责
2013/12/05 职场文书
给老婆的检讨书1000字
2015/01/01 职场文书
整改通知书格式
2015/04/22 职场文书
《秋天的雨》教学反思
2016/02/19 职场文书
商业计划书之服装
2019/09/09 职场文书
mysql部分操作
2021/04/05 MySQL
Python自然语言处理之切分算法详解
2021/04/25 Python
Nginx配置之实现多台服务器负载均衡
2021/08/02 Servers
利用JavaScript写一个简单计算器
2021/11/27 Javascript
教你使用RustDesk 搭建一个自己的远程桌面中继服务器
2022/08/14 Servers