Jak stworzyć: Suwak porównawczy obrazów
- Poprzednia strona Lupka obrazu
- Następna strona Ikona strony
Naucz się, jak stworzyć suwak porównawczy dwóch obrazów.
Suwak porównawczy obrazów
Przesuwanie niebieskiego suwaka do porównania obrazów:

Utwórz suwak porównawczy obrazów
Krok 1 - Dodaj HTML:
<div class="img-comp-container"> <div class="img-comp-img"> <img src="img_snow.jpg" width="300" height="200"> </div> <div class="img-comp-img img-comp-overlay"> <img src="img_forest.jpg" width="300" height="200"> </div> </div>
Krok 2 - Dodaj CSS:
Kontener musi mieć pozycję "relatywną".
* {box-sizing: border-box;} .img-comp-container { position: relative; height: 200px; /* Powinno być takie samo jak wysokość obrazu */ } .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; /* Ustawienie wyglądu suwaka: */ width: 40px; height: 40px; background-color: #2196F3; opacity: 0.7; border-radius: 50%; }
Krok 3 - Dodaj JavaScript:
function initComparisons() { var x, i; /* Znajdź wszystkie elementy o klasie "overlay": */ x = document.getElementsByClassName("img-comp-overlay"); for (i = 0; i < x.length; i++) { /* Wykonaj raz dla każdego elementu "przekrycie": Przekazuj element "przekrycie" jako parametr funkcji compareImages: */ compareImages(x[i]); } function compareImages(img) { var slider, img, clicked = 0, w, h; /* Pobierz szerokość i wysokość elementu img: */ w = img.offsetWidth; h = img.offsetHeight; /* Ustaw szerokość elementu img na 50%: */ img.style.width = (w / 2) + "px"; /* Utwórz suwak: */ slider = document.createElement("DIV"); slider.setAttribute("class", "img-comp-slider"); /* Wstaw suwak: */ img.parentElement.insertBefore(slider, img); /* Umieść suwak w środku: */ slider.style.top = (h / 2) - (slider.offsetHeight / 2) + "px"; slider.style.left = (w / 2) - (slider.offsetWidth / 2) + "px"; /* Funkcja wykonywana przy naciśnięciu przycisku myszy: */ slider.addEventListener("mousedown", slideReady); /* Inna funkcja wykonywana przy uwolnieniu przycisku myszy: */ window.addEventListener("mouseup", slideFinish); /* lub dotknij (dla ekranów dotykowych: */ slider.addEventListener("touchstart", slideReady); /* Ico i uwolnij (dla ekranów dotykowych: */ window.addEventListener("touchend", slideFinish); function slideReady(e) { /* Zapobieganie innym operacjom, które mogą się pojawić podczas przeciągania obrazu: */ e.preventDefault(); /* Suwak został kliknięty i jest gotowy do przesunięcia: */ clicked = 1; /* Funkcja wykonywana podczas przesuwania suwaka: */ window.addEventListener("mousemove", slideMove); window.addEventListener("touchmove", slideMove); } function slideFinish() { /* Przestałeś kliknąć suwak: */ clicked = 0; } function slideMove(e) { var pos; /* Wyjście z tej funkcji, jeśli nie klikasz już suwaka: */ if (clicked == 0) return false; /* Pobranie pozycji x kursora: */ pos = getCursorPos(e) /* Zapobieganie temu, aby suwak znajdował się poza obrazem: */ if (pos < 0) pos = 0; if (pos > w) pos = w; /* Wykonanie funkcji, która dostosowuje rozmiar przykrytego obrazu według kursora: */ slide(pos); } function getCursorPos(e) { var a, x = 0; e = (e.changedTouches) ? e.changedTouches[0] : e; /* Pobranie pozycji x obrazu: */ a = img.getBoundingClientRect(); /* Obliczenie pozycji kursora względem obrazu na osi x: */ x = e.pageX - a.left; /* Rozważenie jakiegokolwiek przewijania strony: */ x = x - window.pageXOffset; return x; } function slide(x) { /* Dostosowanie rozmiaru obrazu: */ img.style.width = x + "px"; /* Ustawienie położenia suwaka: */ slider.style.left = img.offsetWidth - (slider.offsetWidth / 2) + "px"; } } }
Krok 4 - Wykonaj skrypt:
<script> initComparisons(); </script>
- Poprzednia strona Lupka obrazu
- Następna strona Ikona strony