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的开源工具PACKER2.0.2
Nov 04 Javascript
JavaScript中的isXX系列是否继续使用的分析
Apr 16 Javascript
jquery中$.post()方法的简单实例
Feb 04 Javascript
基于jquery实现的可编辑下拉框实现代码
Aug 02 Javascript
js实现动画特效的文字链接鼠标悬停提示的方法
Mar 02 Javascript
jQuery插件datalist实现很好看的input下拉列表
Jul 14 Javascript
javascript如何实现暂停功能
Nov 06 Javascript
原生js实现jquery函数animate()动画效果的简单实例
Aug 21 Javascript
js中数组的常用方法小结
Dec 30 Javascript
jQuery ajax动态生成table功能示例
Jun 14 jQuery
Vue中建立全局引用或者全局命令的方法
Aug 21 Javascript
微信小程序实现锚点跳转
Nov 23 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 HTML代码串截取代码
2008/12/29 PHP
PHP中实现中文字符进制转换原理分析
2011/12/06 PHP
Ajax+PHP快速上手及简单应用说明
2013/07/24 PHP
php生成百度sitemap站点地图类函数实例
2014/10/17 PHP
php中实现记住密码下次自动登录的例子
2014/11/06 PHP
php获取linux命令结果的实例
2017/03/13 PHP
jquery获取自定义属性(attr和prop)实例介绍
2013/04/21 Javascript
jQuery使用ajax跨域获取数据的简单实例
2016/05/18 Javascript
js阻止冒泡和默认事件(默认行为)详解
2016/10/20 Javascript
angular中的http拦截器Interceptors的实现
2017/02/21 Javascript
基于angular实现模拟微信小程序swiper组件
2017/06/11 Javascript
webpack中的热刷新与热加载的区别
2018/04/09 Javascript
使用javascript函数编写简单银行取钱存钱流程
2018/05/26 Javascript
Vue切换Tab动态渲染组件的操作
2020/09/21 Javascript
python的numpy模块安装不成功简单解决方法总结
2017/12/23 Python
Python科学计算包numpy用法实例详解
2018/02/08 Python
python pandas中对Series数据进行轴向连接的实例
2018/06/08 Python
Python使用matplotlib和pandas实现的画图操作【经典示例】
2018/06/13 Python
Python+Pandas 获取数据库并加入DataFrame的实例
2018/07/25 Python
Python设计模式之迭代器模式原理与用法实例分析
2019/01/10 Python
pytorch随机采样操作SubsetRandomSampler()
2020/07/07 Python
解决python运行效率不高的问题
2020/07/20 Python
matplotlib交互式数据光标实现(mplcursors)
2021/01/13 Python
浅谈html5增强的页面元素
2016/06/14 HTML / CSS
html5使用Drag事件编辑器拖拽上传图片的示例代码
2017/08/22 HTML / CSS
FC-Moto丹麦:欧洲最大的摩托车服装和头盔商店之一
2019/08/20 全球购物
大学生就业推荐信范文
2013/11/29 职场文书
高中打架检讨书
2014/02/13 职场文书
先进事迹报告会主持词
2014/04/02 职场文书
公安机关查摆剖析材料
2014/10/10 职场文书
高中教师个人工作总结
2015/02/10 职场文书
英语教师求职信范文
2015/03/20 职场文书
爱国电影观后感
2015/06/19 职场文书
springboot 启动如何排除某些bean的注入
2021/08/02 Java/Android
pandas时间序列之pd.to_datetime()的实现
2022/06/16 Python
app场景下uniapp的扫码记录
2022/07/23 Java/Android