2

私はjqzoomをすべてセットアップしており、いくつかのことを除いてすべてがうまく機能します.1つは、jqzoomにフライアウト画像を元の画像の右側に配置するように指示しても、iPadでは画像を左側に配置します。

なぜこれを行うのかを知るのに十分なほどjqzoomの仕組みを知っている人はいますか? jqzoom が [left:] を設定しているように見えますが、フライアウトが右側にある場合は [left:] の値をそれに応じて調整しているようです (たとえば、マイナス方向に)。だったらif/elseだけでいいんじゃないの?

これは私が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>

通常および予想される:

.--. .-----.
|  | |     |
`--' |     |
     `-----'

モバイル サファリ:

.-----. .--.
|     | |  |
|     | `--'
`-----'
4

1 に答える 1

1

私は自分で答えを見つけました。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));
}
于 2011-10-17T18:24:14.253 に答える