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 相关文章推荐
脚本安需导入(装载)的三种模式的对比
Jun 24 Javascript
基于jQuery+HttpHandler实现图片裁剪效果代码(适用于论坛, SNS)
Sep 02 Javascript
jquery连缀语法如何实现
Nov 29 Javascript
jquery原创弹出层折叠效果点击折叠弹出一个层
Mar 12 Javascript
js验证IP及子网掩码的合法性有效性示例
Apr 30 Javascript
JavaScript中number转换成string介绍
Dec 31 Javascript
jQuery 常用代码集锦(必看篇)
May 16 Javascript
jquery分隔Url的param方法(推荐)
May 25 Javascript
Ionic3 UI组件之autocomplete详解
Jun 08 Javascript
防止页面url缓存中ajax中post请求的处理方法
Oct 10 Javascript
jQuery获取随机颜色的实例代码
May 21 jQuery
如何使用proxy实现一个简单完整的MVVM库的示例代码
Sep 17 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 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程
2014/06/12 PHP
Symfony2函数用法实例分析
2016/03/18 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
基于php双引号中访问数组元素报错的解决方法
2018/02/01 PHP
浅析PHP数据导出知识点
2018/02/17 PHP
tp5(thinkPHP5框架)时间查询操作实例分析
2019/05/29 PHP
动态刷新 dorado树的js代码
2009/06/12 Javascript
Jquery 实现Tab效果 思路是js思路
2010/03/02 Javascript
该如何加载google-analytics(或其他第三方)的JS
2010/05/13 Javascript
jquery实现带复选框的表格行选中删除时高亮显示
2013/08/01 Javascript
JS实现将人民币金额转换为大写的示例代码
2014/02/13 Javascript
jQuery+PHP实现微信转盘抽奖功能的方法
2016/05/25 Javascript
深入理解JavaScript中Ajax
2016/08/02 Javascript
JS禁止查看网页源代码的实现方法
2016/10/12 Javascript
Angular如何引入第三方库的方法详解
2017/07/13 Javascript
vue.js项目 el-input 组件 监听回车键实现搜索功能示例
2018/08/25 Javascript
vue中,在本地缓存中读写数据的方法
2018/09/21 Javascript
vue插件--仿微信小程序showModel实现模态提示窗功能
2020/08/19 Javascript
简单掌握Python的Collections模块中counter结构的用法
2016/07/07 Python
使用python实现语音文件的特征提取方法
2019/01/09 Python
python读写csv文件方法详细总结
2019/07/05 Python
python elasticsearch从创建索引到写入数据的全过程
2019/08/04 Python
关于PyTorch 自动求导机制详解
2019/08/18 Python
tensorflow之获取tensor的shape作为max_pool的ksize实例
2020/01/04 Python
TUMI马来西亚官方网站:国际领先的高品质商旅箱包品牌
2018/04/26 全球购物
亚洲颇具影响力的男性在线购物零售商:His
2019/11/24 全球购物
建筑实习自我鉴定
2013/10/18 职场文书
精彩的演讲稿开头
2014/05/08 职场文书
工伤事故赔偿协议书(标准)
2014/09/29 职场文书
公安交警中队队长个人对照检查材料思想汇报
2014/10/05 职场文书
遗嘱继承权公证书
2015/01/26 职场文书
2015迎新晚会开场白
2015/07/17 职场文书
中学图书馆工作总结
2015/08/11 职场文书
高三语文教学反思
2016/02/16 职场文书
关于antd tree 和父子组件之间的传值问题(react 总结)
2021/06/02 Javascript
详解python的异常捕获
2022/03/03 Python