JavaScript | Создание настраиваемого слайдера изображений
Что такое слайдер изображений?
Image Slider или Image Carousel - удобный способ показать несколько изображений на веб-сайте. Очаровательные яркие изображения могут привлечь на сайт множество посетителей. На изображении ниже показан образец слайдера изображения:
В этом посте мы создадим указанный выше слайдер изображений с помощью HTML, CSS и JavaScript. Начнем с создания слайдера изображения.
Step – 1: Create the structure of image slider using HTML and insert images from the respective sources. Below is the complete HTML code for doing this:
<!--HTML Code--> <!-- Slideshow Container Div --> < div class = "container" > <!-- Full-width images with caption text --> < div class = "image-sliderfade fade" > < img src = "img1.jpg" style = "width:100%" > < div class = "text" >Image caption 1</ div > </ div > < div class = "image-sliderfade fade" > < img src = "img2.jpg" style = "width:100%" > < div class = "text" >Image caption 2</ div > </ div > < div class = "image-sliderfade fade" > < img src = "img3.jpg" style = "width:100%" > < div class = "text" >Image caption 3</ div > </ div > < div class = "image-sliderfade fade" > < img src = "img3.jpg" style = "width:100%" > < div class = "text" >Image caption 4</ div > </ div > </ div > < br > <!-- The dots/circles --> < div style = "text-align:center" > < span class = "dot" ></ span > < span class = "dot" ></ span > < span class = "dot" ></ span > </ div > |
Шаг - 2 : После того, как мы создали структуру HTML для нашего слайдера изображений, следующим шагом будет стилизация слайдера с помощью CSS. Мы добавим стили к изображениям, фонам и т. Д. Мы также будем стилизовать точки и сделать наши изображения адаптивными и удобными для браузера с помощью CSS. Ниже приведен полный код CSS для стилизации нашего слайдера изображений:
// CSS code * { box-sizing: border-box; } body { font-family : Verdana , sans-serif ; } .image-sliderfade { display : none ; } img { vertical-align : middle ; } /* Slideshow container */ .container { max-width : 1000px ; position : relative ; margin : auto ; } /* Caption text */ .text { color : #f2f2f2 ; font-size : 15px ; padding : 20px 15px ; position : absolute ; right : 10px ; bottom : 10px ; width : 40% ; background : rgba( 0 , 0 , 0 , . 7 ); text-align : left ; } /* The dots/bullets/indicators */ .dot { height : 15px ; width : 15px ; margin : 0 2px ; background-color : transparent ; border-color : #ddd ; border-width : 5 px; border-style : solid ; border-radius: 50% ; display : inline- block ; transition: border-color 0.6 s ease; } .active { border-color : #666 ; } /* Animation */ .fade { -webkit-animation-name: fade-image; -webkit-animation-duration: 1.5 s; animation-name: fade-image; animation-duration: 1.5 s; } @-webkit-keyframes fade-image { from {opacity: . 4 } to {opacity: 1 } } @keyframes fade-image { from {opacity: . 4 } to {opacity: 1 } } /* On smaller screens, decrease text size */ @media only screen and ( max-width : 300px ) { .text { font-size : 11px } } |
Шаг - 3 : После добавления стилей в слайдер последнее, что осталось, - это использовать javascript для добавления функции автоматического изменения изображений через определенный промежуток времени.
В приведенном ниже фрагменте кода в самом начале мы взяли все элементы div с именем класса 'image-sliderfade' в массив и сделали то же самое для элементов div с именем класса 'dots', используя прослушиватель getElementByClassName (). После этого мы устанавливаем отображение для всех div, содержащих изображения. В последнем цикле for мы удалили имя класса для каждого элемента массива dots []. После того, как мы закончили с этим, мы устанавливаем отображение как блок изображения для показа и добавляем имя класса к соответствующему элементу массива dots []. Функция setTimeout используется для вызова функции showslides () с интервалом в 2 секунды.
Below is the complete JavaScript code:
var slideIndex = 0; showSlides(); // call showslide method function showSlides() { var i; // get the array of divs" with classname image-sliderfade var slides = document.getElementsByClassName( "image-sliderfade" ); // get the array of divs" with classname dot var dots = document.getElementsByClassName( "dot" ); for (i = 0; i < slides.length; i++) { // initially set the display to // none for every image. slides[i].style.display = "none" ; } // increase by 1, Global variable slideIndex++; // check for boundary if (slideIndex > slides.length) { slideIndex = 1; } for (i = 0; i < dots.length; i++) { dots[i].className = dots[i].className. replace( " active" , "" ); } slides[slideIndex - 1].style.display = "block" ; dots[slideIndex - 1].className += " active" ; // Change image every 2 seconds setTimeout(showSlides, 2000); } |
Как только мы закончим все вышеперечисленные шаги, мы поднимем ползунок и будем работать, как показано ниже: