MediaWiki:Common.js: Difference between revisions
From Haven Homes
mNo edit summary |
mNo edit summary |
||
| Line 3: | Line 3: | ||
var panoContainer = document.getElementById('panorama'); | var panoContainer = document.getElementById('panorama'); | ||
var panoImage = document.getElementById('panoImage'); | var panoImage = document.getElementById('panoImage'); | ||
// Duplicate the panoImage to allow for continuous scrolling. | |||
// The actual implementation might need adjustment depending on your HTML and CSS. | |||
panoImage.innerHTML += panoImage.innerHTML; | |||
var isPanning = false; | var isPanning = false; | ||
| Line 29: | Line 33: | ||
e.preventDefault(); | e.preventDefault(); | ||
var x = e.pageX - panoContainer.offsetLeft; | var x = e.pageX - panoContainer.offsetLeft; | ||
var walk = x - startX; | var walk = (x - startX) * 2; // Increase the scroll speed | ||
panoContainer.scrollLeft = | var newScrollLeft = scrollLeft - walk; | ||
// Adjust the scroll position when reaching the end/start of the content | |||
if (newScrollLeft <= 0) { | |||
newScrollLeft += panoImage.offsetWidth / 2; | |||
} else if (newScrollLeft >= panoImage.offsetWidth / 2) { | |||
newScrollLeft -= panoImage.offsetWidth / 2; | |||
} | |||
panoContainer.scrollLeft = newScrollLeft; | |||
}); | }); | ||
Revision as of 10:12, 6 November 2023
/* Any JavaScript here will be loaded for all users on every page load. */
var panoContainer = document.getElementById('panorama');
var panoImage = document.getElementById('panoImage');
// Duplicate the panoImage to allow for continuous scrolling.
// The actual implementation might need adjustment depending on your HTML and CSS.
panoImage.innerHTML += panoImage.innerHTML;
var isPanning = false;
var startX = 0;
var scrollLeft = 0;
panoContainer.addEventListener('mousedown', function(e) {
isPanning = true;
startX = e.pageX - panoContainer.offsetLeft;
scrollLeft = panoContainer.scrollLeft;
panoContainer.style.cursor = 'grabbing';
});
panoContainer.addEventListener('mouseleave', function() {
isPanning = false;
panoContainer.style.cursor = 'grab';
});
panoContainer.addEventListener('mouseup', function() {
isPanning = false;
panoContainer.style.cursor = 'grab';
});
panoContainer.addEventListener('mousemove', function(e) {
if (!isPanning) return;
e.preventDefault();
var x = e.pageX - panoContainer.offsetLeft;
var walk = (x - startX) * 2; // Increase the scroll speed
var newScrollLeft = scrollLeft - walk;
// Adjust the scroll position when reaching the end/start of the content
if (newScrollLeft <= 0) {
newScrollLeft += panoImage.offsetWidth / 2;
} else if (newScrollLeft >= panoImage.offsetWidth / 2) {
newScrollLeft -= panoImage.offsetWidth / 2;
}
panoContainer.scrollLeft = newScrollLeft;
});