JQuery zoom插件学习
jquery zoom是一款图片放大插件,经常用在商城商品页面里。
使用JQuery zoom插件,除了需要引入JQuery.js外,还要引入JQuery.zoom.js文件及jqzoom.css文件
<link rel="stylesheet" href="css/jqzoom.css" type="text/css" media="screen">
<script type="text/javascript" language="javascript" src="js/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="js/jquery.jqzoom.min.js"></script>
下面是要操作的图片节点
<div class="jqzoom"><img src="images/shoe4_small.jpg" alt="shoe" jqimg="images/shoe4_big.jpg"></div>
最后加上初始化的js代码,不出意外就成了
$(document).ready(function(){
$(".jqzoom").jqueryzoom();
});
但事情总不会这么顺利,这个问题害我忙活了半天,搞的我还以为jquery.zoom.js文件有错呢,结果把整个js文件研究了一遍,好在代码不多,用chrome调试运行一遍还是能看的懂得。
问题是这样的,当放大镜放大图片时,应该在原来的图像旁边创建一个div显示,可到我这里,这个div却偏离了原图几百个像素,图片在左上角,放大后却跑到了右下角,也就是这个div的left和top偏了几百个像素。所以我就把代码研究了一遍,最后发现没有问题,而且我也大概知道了问题的原因,下面的图是我根据代码的意思画的图

这个是jquery.zoom.js里面用来为这个div定位的代码
var imageLeft = $(this).offset().left;
var imageTop = $(this).offset().top;
console.log("imageLeft:"+imageLeft+",imageTop:"+imageTop);
var imageWidth = $(this).children('img').get(0).offsetWidth;
var imageHeight = $(this).children('img').get(0).offsetHeight;
noalt = $(this).children("img").attr("alt");
var bigimage = $(this).children("img").attr("jqimg");
$(this).children("img").attr("alt", '');
if ($("div.zoomdiv").get().length == 0) {
$(this).after("<div class='zoomdiv'><img class='bigimg' src='" + bigimage + "'/></div>");
$(this).append("<div class='jqZoomPup'> </div>");
}
if (settings.position == "right") {
if (imageLeft + imageWidth + settings.offset + settings.xzoom > screen.width) {
leftpos = imageLeft - settings.offset - settings.xzoom;
} else {
leftpos = imageLeft + imageWidth + settings.offset; //452 =
}
} else {
leftpos = imageLeft - settings.xzoom - settings.offset;
if (leftpos < 0) {
leftpos = imageLeft + imageWidth + settings.offset;
}
}
$("div.zoomdiv").css({
top: imageTop,
left: leftpos
});
我想对前端比较熟悉的应该知道问题出在哪里了,没错,*这个div定位应该相对浏览器才行,而我这里却是相对于父节点*。那接下来就简单多了,原来,在我这个div的祖先节点存在多个position:relative,要知道对于position:absolute;的节点,父元素如果出现relative,则是相对于父元素进行定位,否则才是相对于浏览器原点。所以为只要将这些relative去掉,或者覆盖掉,就没有问题了
JQuery zoom插件学习的更多相关文章
- 深入学习jQuery自定义插件
原文地址:jQuery自定义插件学习 1.定义插件的方法 对象级别的插件扩展,即为jQuery类的实例增加方法, 调用:$(选择器).函数名(参数); $(‘#id’).myPlugin(o ...
- jQuery验证插件
原文:jQuery验证插件 学习要点: 1.使用 validate.js 插件 2.默认验证规则 3.validate()方法和选项 4.validate.js 其他功能 验证插件(validate. ...
- 第一百七十六节,jQuery,插件
jQuery,插件 学习要点: 1.插件概述 2.验证插件 3.自动完成插件 4.自定义插件 插件(Plugin)也成为 jQuery 扩展(Extension),是一种遵循一定规范的应用程序接口编 ...
- 基于jquery的插件turn.js学习笔记
基于jquery的插件turn.js学习笔记 简介 turn.js是一个可以实现3d书籍展示效果的jq插件,使用html5和css3来执行效果.可以很好的适应于ios和安卓等触摸设备. How it ...
- Jquery插件学习
前端开发也工作了一段时间,Jquery代码页写了很多,但是都是些的很零散的,不是很好用,网上看了很多人写的Jquery 很好用,而且到每个项目中都可以使用, 本人就感觉很好奇他们是怎么做到的呢,于是自 ...
- jQuery学习笔记(jquery.form插件)
官网: http://malsup.com/jquery/form/ jQuery Form插件是一个优秀的Ajax表单插件,可以非常容易地.无侵入地升级HTML表单以支持Ajax.jQuery Fo ...
- 推荐15款响应式的 jQuery Lightbox 插件
利用现代 Web 技术,网络变得越来越轻巧与.模态框是突出展现内容的重要形式,能够让用户聚焦到重要的内容上去.在这个列表中,我们编制了15款响应式的 jQuery 灯箱库,这将有助于开发人员创建和设计 ...
- fullpage 插件学习心得
fullpage.js 是一个基于jquery 的插件,它能够轻松的制作出高大上的全屏网站,主要功能有; 1.支持鼠标滚动 2.支持前进后退和键盘控制 3.多个回调函数 4.支持 CSS3 动画 5. ...
- jquery自定义插件——以 选项卡插件为例
一直打算尝试自定义插件,终于付诸实践了,现在把内容发表出来,与大家共勉. 我是根据自己正在用的插件,模仿其源码,实现的自定义插件,完成之后,在网上看相关资料,对自定义插件部分,有了更明确的认识. jq ...
随机推荐
- .Net设计模式_单列模式
理解 博友的经典说法:很多人排队去厕所蹲坑一样,每一次只能让一个人去蹲坑,这是一种通俗的理解. 理论上的理解则为,我们需要写一个类,这个类的作用就是控制,从而保证在整个应用程序的生命周期中,在任何时刻 ...
- Python自带的日志模块logging的使用
import logging # 创建一个logger logger = logging.getLogger('cmccLogger') logger.setLevel(logging.DEB ...
- (四) PHPCMSV9如何更换模板风格
更换模板风格有两种方式: 1.复制default模板 2.到相关模板网站下载模板,推荐网站:http://www.moke8.com/phpcms/ 一.复制default模板 将phpcms默认的 ...
- MySQL基础 (DML)
DML语句 DML操作是指对数据库中表记录的操作,主要包括表记录的插入(insert).更新(update).删除(delete)和查询(select) 1.插入记录 插入一条 ...
- [置顶] Array ArrayList LinkList的区别剖析
这是一个面试中我们经常被问到的问题 Array.ArrayList.LinkList之间的区别:Array.ArrayList.LinkList均属于泛型的范畴,都用来存放元素,主要区别是Array是 ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(32)-swfupload多文件上传[附源码]
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(32)-swfupload多文件上传[附源码] 文件上传这东西说到底有时候很痛,原来的asp.net服务器 ...
- jquery+正則表達式验证邮箱格式的样例
js: $("#email").blur(function(){ //获取id相应的元素的值,去掉其左右的空格 var email = $.trim($('#email').val ...
- docker-compose 工具安装
centos 7 安装 之前测试过相关安装方法 pip python 安装不行 还是用下面这个办法搞定 curl -L https://github.com/docker/compose/releas ...
- 使用r.js进行前端repuirejs的合并压缩
安装 requirejs npm install -g requirejs 安装好后: 找到刚刚requirejs的安装目录,在该目录下找到r.js,并拷贝待压缩合并项目的根目录下 在项目根目录下创建 ...
- Sysstat LINUX工具包址
http://sebastien.godard.pagesperso-orange.fr/