我已经设置了jqzoom,一切都很好,除了一些事情,一个是即使我告诉jqzoom将弹出图像对齐到原始图像的右侧,在我们的ipad上,它将图像放在左侧。
有谁知道jqzoom的工作原理,知道为什么它会这样做吗?看起来jqzoom无论如何都在设置[left:],并且只是相应地调整[left:]值(例如在-负方向上),如果弹出是在右边?如果是这种情况,它不能只执行If/else,如果它需要在右边,设置[right:]而不是[left:]吗?
我是这样设置jqzoom的:
<div id="jqDiv" style="width:400px; height:400px;">
<a id="imageNameAId" href="http://path.to.image/bigImage.jpg" class="MYCLASS" rel="gal1">
<img src='http://path.to.image/smallImage.jpg' alt='imageName' id='imageNameImgId' height="400" width="400" />
</a>
</div>
<script type="text/javascript">
var options = {
zoomType: "standard",
lens: true,
preloadImages: true,
alwaysOn: false,
zoomWidth: 600,
zoomHeight: 600,
xOffset: 10,
yOffset: 0,
position: "right",
title: false
};
// Delay jqzoom binding to allow (rel) thumbnail images time to load
setTimeout( function() {
jQuery('#imageNameA').jqzoom(options);
}, 500);
</script>
正常和预期:
.--. .-----.
| | | |
`--' | |
`-----'
移动Safari:
.-----. .--.
| | | |
| | `--'
`-----'
我自己找到了答案。jqzoom确定右侧是否有足够的空间放置弹出图像,而在iPad上没有足够的空间(在我们的示例中),因此它将其显示在左侧。尽管右边的空间比左边大,它还是会这样做。
所以我正在检测iPad并按预期将其强制到右侧。
jquery.jqzoom-core.js第535行:
:
this.node.leftpos = (smallimage.rightlimit + Math.abs(settings.xOffset) + settings.zoomWidth < screen.width) ? (smallimage.ow + Math.abs(settings.xOffset)) : (0 - settings.zoomWidth - Math.abs(settings.xOffset));
:后if (navigator.userAgent.match(/iPad/i) != null) {
this.node.leftpos = (smallimage.ow + Math.abs(settings.xOffset));
} else {
this.node.leftpos = (smallimage.rightlimit + Math.abs(settings.xOffset) + settings.zoomWidth < screen.width) ? (smallimage.ow + Math.abs(settings.xOffset)) : (0 - settings.zoomWidth - Math.abs(settings.xOffset));
}