有一个固定容器用作我的内容的视口。内容是<div>
固定大小的元素。视口大小与窗口绑定,如果用户调整窗口大小,视口大小可能会发生变化。我正在使用 jQuery.panzoom 库来处理平移和缩放,以让用户查看他们想要的部分内容。现在我需要以下功能,但找不到它们:
- 内容不得小于在视口中完全可见的要求。这似乎是通过
minScale
选项完成的。我只需要连接调整大小事件来更新minscale
值。 - 如果另一边有空白区域,则不得将内容拖到一边。这意味着,如果内容小到完全可见,则它必须是完全可见的。这必须居中,以便在缩小时内容始终位于同一位置。
它就像一个图片查看器,最初会缩放图像以使其适合并居中。用户可以放大,但不能比初始视图进一步缩小。只是我的内容不是图像,而是更复杂的 HTML 元素。
这是我到目前为止所做的:
<div id="room-wrapper" style="position: fixed; top: 0; left: 150px; right: 0; bottom: 0;">
<div id="room" style="width: 800px; height: 600px;">
Content here.
</div>
</div>
<script>
var roomWrapper = $("#room-wrapper");
// Set up options
var minScaleX = roomWrapper.innerWidth() / 800;
var minScaleY = roomWrapper.innerHeight() / 600;
var minScale = Math.min(minScaleX, minScaleY);
var panzoom = $("#room").panzoom({
startTransform: "scale(" + minScale + ")",
minScale: minScale,
//contain: "invert",
increment: 0.1
});
// Compensate strange offset, doesn't work
panzoom.panzoom("pan", 150, 0, {
animate: false,
silent: true
});
// Mouse wheel zooming
panzoom.parent().on("mousewheel.focal", function (e) {
e.preventDefault();
var delta = e.delta || e.originalEvent.wheelDelta;
var zoomOut = delta ? delta < 0 : e.originalEvent.deltaY > 0;
panzoom.panzoom("zoom", zoomOut, {
animate: true,
focal: e
});
});
</script>
内容最初被正确缩放,但在顶部和左侧的某个位置偏移。我不知道那个偏移量是从哪里来的。此外,还没有平移约束。注释掉的contain
可能是相关的,但我不理解它的任何文档。
我需要在我的代码中修复什么以使其满足上述要求?我想这些是非常基本的,很多人会需要它们,但没有例子。