feat(deployed): add mod_image_split_view (no-source, vetted live)
mod_image_split_view module; no manifest version, unmapped -> deployed files. Signed-off-by: LÁZÁR Imre <imre@illusion.hu> Assisted-by: claude-code@claude-opus-4-8
This commit is contained in:
parent
2332bf163c
commit
06e4335df7
@ -0,0 +1,122 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<script>
|
||||||
|
function initComparisons() {
|
||||||
|
|
||||||
|
function compareImages(img) {
|
||||||
|
var slider, img, clicked = 0, w = img.offsetWidth, h = img.offsetHeight;
|
||||||
|
|
||||||
|
img.style.width = (w / 2) + "px";
|
||||||
|
|
||||||
|
slider = document.createElement("DIV");
|
||||||
|
slider.setAttribute("class", "img-comp-slider");
|
||||||
|
|
||||||
|
img.parentElement.insertBefore(slider, img);
|
||||||
|
|
||||||
|
slider.style.top = (h / 2) - (slider.offsetHeight / 2) + "px";
|
||||||
|
slider.style.left = (w / 2) - (slider.offsetWidth / 2) + "px";
|
||||||
|
|
||||||
|
slider.addEventListener("mousedown", slideReady);
|
||||||
|
window.addEventListener("mouseup", slideFinish);
|
||||||
|
slider.addEventListener("touchstart", slideReady);
|
||||||
|
window.addEventListener("touchstop", slideFinish);
|
||||||
|
|
||||||
|
function slideReady(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
clicked = 1;
|
||||||
|
window.addEventListener("mousemove", slideMove);
|
||||||
|
window.addEventListener("touchmove", slideMove);
|
||||||
|
}
|
||||||
|
|
||||||
|
function slideFinish() { clicked = 0; }
|
||||||
|
|
||||||
|
function slideMove(e) {
|
||||||
|
var pos;
|
||||||
|
if (clicked == 0) return false;
|
||||||
|
pos = getCursorPos(e)
|
||||||
|
if (pos < 0) pos = 0;
|
||||||
|
if (pos > w) pos = w;
|
||||||
|
slide(pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
function getCursorPos(e) {
|
||||||
|
var a, x = 0;
|
||||||
|
e = e || window.event;
|
||||||
|
a = img.getBoundingClientRect();
|
||||||
|
x = e.pageX - a.left;
|
||||||
|
x = x - window.pageXOffset;
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
function slide(x) {
|
||||||
|
img.style.width = x + "px";
|
||||||
|
slider.style.left = img.offsetWidth - (slider.offsetWidth / 2) + "px";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var url = new URL(window.location.href).searchParams;
|
||||||
|
var images = url.get("images").split("|");
|
||||||
|
var imageWidth = url.get("image-width");
|
||||||
|
var imageHeight = url.get("image-height");
|
||||||
|
var sliderColor = url.get("slider-color");
|
||||||
|
var sliderOpacity = Number(url.get("slider-opacity")) / 100;
|
||||||
|
|
||||||
|
console.log(sliderColor);
|
||||||
|
for (var i = 0; i < images.length; i++) {
|
||||||
|
var temp = document.getElementsByClassName("img-comp-img")[i].getElementsByTagName("img")[0];
|
||||||
|
temp.src = images[i];
|
||||||
|
temp.width = imageWidth;
|
||||||
|
temp.height = imageHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
compareImages(document.getElementsByClassName("img-comp-overlay")[0]);
|
||||||
|
document.getElementsByClassName("img-comp-slider")[0].style.backgroundColor = "#" + sliderColor;
|
||||||
|
document.getElementsByClassName("img-comp-slider")[0].style.opacity = sliderOpacity;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style>
|
||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.img-comp-container {
|
||||||
|
position: relative;
|
||||||
|
height: 200px; /*should be the same height as the images*/
|
||||||
|
}
|
||||||
|
|
||||||
|
.img-comp-img {
|
||||||
|
position: absolute;
|
||||||
|
width: auto;
|
||||||
|
height: auto;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.img-comp-img img {
|
||||||
|
display: block;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.img-comp-slider {
|
||||||
|
position: absolute;
|
||||||
|
z-index: 9;
|
||||||
|
cursor: ew-resize;
|
||||||
|
/*set the appearance of the slider:*/
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
background-color: transparent;
|
||||||
|
opacity: 0.7;
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="img-comp-container">
|
||||||
|
<div class="img-comp-img"><img src="#" alt="" /></div>
|
||||||
|
<div class="img-comp-img img-comp-overlay"><img src="#" alt="" /></div>
|
||||||
|
</div>
|
||||||
|
<script>initComparisons();</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Loading…
Reference in New Issue
Block a user