Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.07.2017, 11:30
Новичок на форуме
Отправить личное сообщение для Bucef Посмотреть профиль Найти все сообщения от Bucef
 
Регистрация: 28.07.2017
Сообщений: 2

Остановка слайдера при событии mouseover
Добрый день!

Перепробовал все известные мне варианты для решения проблемы, но решить не удалось.

Задача запускать слайдер при наведении курсора, останавливать при покидании.
Все сделать кое-как удалось, но при повторном наведении слайды начинают прыгать, а нужно чтобы просто продолжался показ с той же скоростью.

Помогите, пожалуйста, с решением.


Ссылка на jsfiddle

var slides = document.querySelectorAll('#slides .slide');
var currentSlide = 0;
var d = 0;
var para = document.getElementById("slides");
para.addEventListener("mouseover", function(event) {
				d = 0;
        var slideInterval = setInterval(nextSlide,2000);
        function nextSlide() {
                if (d == 1) {
                        return true;
                } else{
                        slides[currentSlide].className = 'slide';
                        currentSlide = (currentSlide+1)%slides.length;
                        slides[currentSlide].className = 'slide showing';
                };
        }
});
para.addEventListener("mouseout", function(event) {
				d = 1;       
});


<style>
#slides {
    position: relative;
    height: 300px;
    padding: 0px;
    margin: 0px;
    list-style-type: none;
}

.slide {
    position: absolute;
    left: 0px;
    top: 0px;
    width: 100%;
    height: 100%;
    opacity: 0;
    z-index: 1;

    -webkit-transition: opacity 1s;
    -moz-transition: opacity 1s;
    -o-transition: opacity 1s;
    transition: opacity 1s;
}

.showing {
    opacity: 1;
    z-index: 2;
}

.slide {
    font-size: 40px;
    padding: 40px;
    box-sizing: border-box;
    background: #333;
    color: #fff;
}

.slide:nth-of-type(1) {
    background: red;
}
.slide:nth-of-type(2) {
    background: orange;
}
.slide:nth-of-type(3) {
    background: green;
}
.slide:nth-of-type(4) {
    background: blue;
}
.slide:nth-of-type(5) {
    background: purple;
}
</style>
<ul id="slides">
    <li class="slide showing">Slide 1</li>
    <li class="slide">Slide 2</li>
    <li class="slide">Slide 3</li>
    <li class="slide">Slide 4</li>
    <li class="slide">Slide 5</li>
</ul>
Ответить с цитированием
  #2 (permalink)  
Старый 28.07.2017, 12:03
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Bucef,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style>
#slides {
    position: relative;
    height: 300px;
    padding: 0px;
    margin: 0px;
    list-style-type: none;
}

.slide {
    position: absolute;
    left: 0px;
    top: 0px;
    width: 100%;
    height: 100%;
    opacity: 0;
    z-index: 1;

    -webkit-transition: opacity 1s;
    -moz-transition: opacity 1s;
    -o-transition: opacity 1s;
    transition: opacity 1s;
}

.showing {
    opacity: 1;
    z-index: 2;
}

.slide {
    font-size: 40px;
    padding: 40px;
    box-sizing: border-box;
    background: #333;
    color: #fff;
}

.slide:nth-of-type(1) {
    background: red;
}
.slide:nth-of-type(2) {
    background: orange;
}
.slide:nth-of-type(3) {
    background: green;
}
.slide:nth-of-type(4) {
    background: blue;
}
.slide:nth-of-type(5) {
    background: purple;
}
</style>
</head>

<body>

<ul id="slides">
    <li class="slide showing">Slide 1</li>
    <li class="slide">Slide 2</li>
    <li class="slide">Slide 3</li>
    <li class="slide">Slide 4</li>
    <li class="slide">Slide 5</li>
</ul>

<script>
 var para = document.getElementById("slides");
 var slides = para.querySelectorAll('.slide');
 var currentSlide = 0;
 var d;
function nextSlide() {
     window.clearTimeout(d);
     slides[currentSlide].classList.remove("showing");
     currentSlide = (currentSlide+1)%slides.length;
     slides[currentSlide].classList.add("showing");
     d = window.setTimeout(nextSlide,2000)
        }
para.addEventListener("mouseenter", function(event) {
        nextSlide()
});
para.addEventListener("mouseleave", function(event) {
        window.clearTimeout(d)
});

</script>
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 28.07.2017, 12:35
Новичок на форуме
Отправить личное сообщение для Bucef Посмотреть профиль Найти все сообщения от Bucef
 
Регистрация: 28.07.2017
Сообщений: 2

рони, Чертов гений!)

Спасибо тебе огромное!!!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
стили input при событии onFocus SerjRamone Элементы интерфейса 11 08.07.2010 15:58
постоянное повторяющееся событие при mouseover. как? greysells jQuery 2 01.02.2010 13:37
Смена картинки (бекграунд дива ) при событии (нажатие клавиш или клавиши и мыши) Monster Events/DOM/Window 5 01.11.2009 01:16
Выделение текста при использовании слайдера x00xer Firefox/Mozilla 8 29.09.2009 07:45
Событие mouseout при наведении мыши на пункт меню WalterScott Events/DOM/Window 2 12.05.2009 22:05