FenXiNspBigScreen/public/viewerjs-1.11.3/docs/examples/moving-range-limit.html

131 lines
4.8 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Viewer.js</title>
<link rel="stylesheet" href="https://unpkg.com/bootstrap@4/dist/css/bootstrap.min.css" crossorigin="anonymous">
<link rel="stylesheet" href="../css/viewer.css">
<style>
.pictures {
list-style: none;
margin: 0;
max-width: 30rem;
padding: 0;
}
.pictures > li {
border: 1px solid transparent;
float: left;
height: calc(100% / 3);
margin: 0 -1px -1px 0;
overflow: hidden;
width: calc(100% / 3);
}
.pictures > li > img {
cursor: zoom-in;
width: 100%;
}
</style>
</head>
<body>
<div class="container">
<h1>Moving range limit</h1>
<div id="galley">
<ul class="pictures">
<li><img data-original="../images/tibet-1.jpg" src="../images/thumbnails/tibet-1.jpg" alt="Cuo Na Lake"></li>
<li><img data-original="../images/tibet-2.jpg" src="../images/thumbnails/tibet-2.jpg" alt="Tibetan Plateau"></li>
<li><img data-original="../images/tibet-3.jpg" src="../images/thumbnails/tibet-3.jpg" alt="Jokhang Temple"></li>
<li><img data-original="../images/tibet-4.jpg" src="../images/thumbnails/tibet-4.jpg" alt="Potala Palace 1"></li>
<li><img data-original="../images/tibet-5.jpg" src="../images/thumbnails/tibet-5.jpg" alt="Potala Palace 2"></li>
<li><img data-original="../images/tibet-6.jpg" src="../images/thumbnails/tibet-6.jpg" alt="Potala Palace 3"></li>
<li><img data-original="../images/tibet-7.jpg" src="../images/thumbnails/tibet-7.jpg" alt="Lhasa River"></li>
<li><img data-original="../images/tibet-8.jpg" src="../images/thumbnails/tibet-8.jpg" alt="Namtso 1"></li>
<li><img data-original="../images/tibet-9.jpg" src="../images/thumbnails/tibet-9.jpg" alt="Namtso 2"></li>
</ul>
</div>
</div>
<script src="https://unpkg.com/jquery@3/dist/jquery.slim.min.js" crossorigin="anonymous"></script>
<script src="https://unpkg.com/bootstrap@4/dist/js/bootstrap.bundle.min.js" crossorigin="anonymous"></script>
<script src="../js/viewer.js"></script>
<script>
window.addEventListener('DOMContentLoaded', function () {
var galley = document.getElementById('galley');
var maxOffsetPercentage = 0.9;
var viewer = new Viewer(galley, {
url: 'data-original',
backdrop: 'static',
move: function (event) {
var viewerData = viewer.viewerData;
var imageData = viewer.imageData;
var maxOffsetHorizontal = viewerData.width * maxOffsetPercentage;
var maxOffsetVertical = viewerData.height * maxOffsetPercentage;
var detail = event.detail;
var left = detail.x;
var top = detail.y;
var right = viewerData.width - (left + imageData.width);
var bottom = viewerData.height - (top + imageData.height);
if (
// Move left
(detail.x < detail.oldX && right > 0 && right > maxOffsetHorizontal)
// Move right
|| (detail.x > detail.oldX && left > 0 && left > maxOffsetHorizontal)
// Move up
|| (detail.y < detail.oldY && bottom > 0 && bottom > maxOffsetVertical)
// Move down
|| (detail.y > detail.oldY && top > 0 && top > maxOffsetVertical)
) {
event.preventDefault();
}
},
zoomed: function (event) {
var detail = event.detail;
// Zoom out
if (detail.ratio < detail.oldRatio) {
var viewerData = viewer.viewerData;
var imageData = viewer.imageData;
var maxOffsetHorizontal = viewerData.width * maxOffsetPercentage;
var maxOffsetVertical = viewerData.height * maxOffsetPercentage;
var left = imageData.x;
var top = imageData.y;
var right = viewerData.width - (left + imageData.width);
var bottom = viewerData.height - (top + imageData.height);
var x = 0;
var y = 0;
if (right > 0 && right > maxOffsetHorizontal) {
x = maxOffsetHorizontal - right;
}
if (left > 0 && left > maxOffsetHorizontal) {
x = maxOffsetHorizontal - left;
}
if (bottom > 0 && bottom > maxOffsetVertical) {
y = bottom - maxOffsetVertical;
}
if (top > 0 && top > maxOffsetVertical) {
y = top - maxOffsetVertical;
}
// Move the image into view if it is invisible
if (x !== 0 || y !== 0) {
viewer.move(x, y);
}
}
},
});
});
</script>
</body>
</html>