Задать вопрос
zangerlegendyt
@zangerlegendyt

Как сделать чтобы при наведении курсора на слайдер он останавливался?

Как сделать чтобы при наведении курсора на слайдер он останавливался.
<div class="slider">
<div class="item"><a href="index.php/fanera-fk/fanera-fk"><img src="https://i.yapx.ru/D0D4U.png" alt="Первый слайд" /></a></div>
<div class="item"><a href="index.php/fanera-fk/fanera-laminirovannaya"><img src="https://i.yapx.ru/D0D8P.png" alt="Второй слайд" /></a></div>
<div class="item"><a href="index.php/fanera-fk/fanera-fsf"><img src="https://i.yapx.ru/D0DDF.png" alt="Третий слайд" /></a></div>
<div class="item"><a href="index.php/osb-3-kalevala"><img src="https://i.yapx.ru/D0EgJ.png" alt="Четвертый слайд" /></a></div>
<a class="prev" onclick="minusSlide()">❮</a> <a class="next" onclick="plusSlide()">❯</a></div>
<div class="slider-dots"><span class="slider-dots_item" onclick="currentSlide(1)"></span> <span class="slider-dots_item" onclick="currentSlide(2)"></span> <span class="slider-dots_item" onclick="currentSlide(3)"> </span> <span class="slider-dots_item" onclick="currentSlide(4)"> </span></div>
<script>// <![CDATA[
var slideIndex = 1;
showSlides(slideIndex);
// ]]></script>


var slideIndex = 1;
showSlides(slideIndex);

/* Функция увеличивает индекс на 1, показывает следующй слайд*/
function plusSlide() {
    showSlides(slideIndex += 1);
}

/* Функция уменьшяет индекс на 1, показывает предыдущий слайд*/
function minusSlide() {
    showSlides(slideIndex -= 1);  
}

/* Устанавливает текущий слайд */
function currentSlide(n) {
    showSlides(slideIndex = n);
}

/* Основная функция слайдера */
function showSlides(n) {
    var i;
    var slides = document.getElementsByClassName("item");
    var dots = document.getElementsByClassName("slider-dots_item");
    if (n > slides.length) {
      slideIndex = 1
    }
    if (n < 1) {
        slideIndex = slides.length
    }
    for (i = 0; i < slides.length; i++) {
        slides[i].style.display = "none";
    }
    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";
}
setInterval(plusSlide, 4000);


/* Собственно сам слайдер */
.slider{
  	overflow: hidden;
    max-width: 100%;
    position: relative;
    margin: auto;
    height: 300px;
    margin-bottom: 15px;
}
/* Картинка мастабируется по отношению к родительскому элементу */
.slider .item img {
    object-fit: cover;
    width: 100%;
    height: 300px;
    border: none !important;
    box-shadow: none !important;
}
/* Кнопки вперед и назад */
.slider .prev, .slider .next {
    cursor: pointer;
  	position: absolute;
  	width: auto;
    top: 0;
    top: 50%;
    margin-top: -22px;
    padding: 18px;
    color: white;
    font-weight: bold;
    font-size: 18px;
    transition: 0.6s ease;
    border-radius: 0 3px 3px 0;
}
.slider .next {
    right: 0;
    border-radius: 3px 0 0 3px;
}

.slider .prev{
 	left: 10px;
}      
      
/* При наведении на кнопки добавляем фон кнопок */
.slider .prev:hover,
.slider .next:hover {
    background-color: rgba(0, 0, 0, 0.8);
}
/* Заголовок слайда */
.slideText {
    position: absolute;
    color: #fff;
    font-size: 35px;
    /* Выравнивание текста по горизонтали и по вертикали*/
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    /* Тень*/
    text-shadow: 1px 1px 1px #000, 0 0 1em #000;
}
/* Кружочки */
.slider-dots {
    text-align: center;
}
.slider-dots_item{
    cursor: pointer;
    height: 12px;
    width: 12px;
    margin: 0 2px;
    background-color: #ddd;
    border-radius: 50%;
    display: inline-block;
    transition: background-color 0.6s ease;
}
.active,
.slider-dots_item:hover {
    background-color: #aaa;
}
/* Анимация слайдов */
.slider .item {
    -webkit-animation-name: fade;
    -webkit-animation-duration: 1.5s;
    animation-name: fade;
    animation-duration: 1.5s;
}
@-webkit-keyframes fade {
    from {
        opacity: .4
    }
    to {
        opacity: 1
    }
}
@keyframes fade {
    from {
        opacity: .4
    }
    to {
        opacity: 1
    }
}
  • Вопрос задан
  • 2283 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 1
delphinpro
@delphinpro Куратор тега CSS
frontend developer
я хочу научиться, но уже на готовом к моему слайдер коду.

Похвально. Есть смысл задать вам направление =)

У вас есть старт для слайдов. вот здесь
setInterval(plusSlide, 4000);
Чтобы прекратить переключение, вам нужно остановить таймер. Для остановки таймера, нужна ссылка на него.
Об этом можно почитать здесь https://learn.javascript.ru/settimeout-setinterval

Останавливать таймер нужно по событию. Событие которое возникает при наведении мышки на элемент называется mouseover (еще есть mouseenter)
Подробнее о назначении обработчиков событий здесь https://learn.javascript.ru/introduction-browser-e...

При уходе мышки нужно снова запускать таймер (запускать вы уже умеете). Здесь вам нужны события mouseout или mouseleave.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
slider.addEventListener('mouseover', pauseMySlider)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы