JQuery zoom插件学习

简介: jquery zoom是一款图片放大插件,经常用在商城商品页面里。使用JQuery zoom插件,除了需要引入JQuery.js外,还要引入JQuery.zoom.js文件及jqzoom.css文件下面是要操作的图片节点最后加上初始化的js代码,不出意外就成了$(document).ready(function(){ $(".jqzoom").jqueryzoom();});但事情总不会这么顺利,这个问题害我忙活了半天,搞的我还以为jquery.zoom.js文件有错呢,结果把整个js文件研究了一遍,好在代码不多,用chrome调试运行一遍还是能看的懂得。

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偏了几百个像素。所以我就把代码研究了一遍,最后发现没有问题,而且我也大概知道了问题的原因,下面的图是我根据代码的意思画的图
img_f6a9c0bb4a66bce357d4f0192c3b71ae.png
这个是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'>&nbsp;</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去掉,或者覆盖掉,就没有问题了

目录
相关文章
|
19天前
|
JavaScript 前端开发
jQuery和CSS3滑动展开菜单按钮插件
这是一款jQuery和CSS3滑动展开菜单按钮插件。该滑动展开菜单按钮在用户点击主菜单按钮之后,子菜单以滑动的方式依次展开
59 21
|
20天前
|
JavaScript
jquery图片和pdf文件预览插件
EZView.js是一款jquery图片和pdf文件预览插件。EZView.js可以为图片和pdf格式文件生成在线预览效果。支持的文件格式有pdf、jpg、 png、jpeg、gif。
48 16
|
15天前
|
JavaScript
jquery文字动画特效插件animatext
jquery文字动画特效插件animatext
40 9
|
18天前
|
移动开发 JavaScript 前端开发
简单易用的jquery响应式轮播图插件ma5slider
ma5slider是一款简单易用的jquery响应式轮播图插件。该轮播图支持鼠标拖拽,可以通过CSS定制外观,支持无限循环模式,内置水平,垂直和淡入淡出三种轮播图过渡动画效果。
|
20天前
|
JavaScript
简洁实用的jQuery进度条插件
这是一款简洁实用的jQuery进度条插件。该插件使用简单,通过在页面中放置指定的HTML代码,即可生成带动画效果的进度条。
|
19天前
|
JavaScript 容器
jQuery文字跑马灯插件Marquee
jQuery.Marquee是一款jQuery文字跑马灯插件。jQuery.Marquee跑马灯插件可以结合使用CSS3动画,制作文字的上下左右移动效果。
|
16天前
|
JavaScript 容器
jquery和CSS3图片排序过滤搜索插件
Filterizr是一款jquery和CSS3图片排序过滤插件。它可以对一组图片进行排序,按条件过滤和按关键字搜索。并在显示结果时使用指定的CSS3动画过渡效果。
24 2
|
16天前
|
JavaScript
jquery和CSS3响应式轮播图插件jcSlider
jcSlider是一款jquery和CSS3响应式轮播图插件。jcSlider使用CSS3过渡动画,它可以和animate.css完美结合,生成60多种轮播图过渡动画效果。
|
20天前
|
JavaScript
jQuery Lightbox和弹出层插件flashy
Flashy.js是一款响应式jQuery Lightbox和弹出层插件
|
18天前
|
JavaScript 容器
jQuery消息通知显示插件
MessageNotifyPlugin是一款简单的jQuery消息通知显示插件。该jQuery消息通知显示插件能够自动生成最新消息和提醒消息两个消息通知按钮。并且可以设置消息的是否已读状态等
23 2