Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.09.2019, 15:08
Интересующийся
Отправить личное сообщение для Андрей812 Посмотреть профиль Найти все сообщения от Андрей812
 
Регистрация: 10.09.2018
Сообщений: 27

Scroll на галерее
Помогите, пожалуйста, сделать чтобы помимо стрелок, можно было колесиком мыши менять элементы

<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
   * { box-sizing: border-box;margin: 0;padding: 0; }

.slider {
    width: 300px;
    height: 170px;
    overflow: hidden;
    position: relative;
}

.slider__arrow {
    width: 20px;
    height: 20px;
    position: absolute;
    top: 50%;
    background-color: #3294FD;
    text-align: center;
    line-height: 20px;
    color: #fff;
    z-index: 9;
    cursor: pointer;
}

.slider__left { left: 0; }
.slider__right { right: 0; }

.slider__container {
    width: 900px;
    height: 170px;
    position: absolute;
    top: 0;
    left: 0;
}

.slider__item {
    width: 100px;
    height: 170px;
    line-height: 170px;
    background: pink;
    display: block;
    float: left;
    text-align: center;
}

.slider__item:hover {
    background-color: #F7F7F7;
}
.slider__arrow.hide{
  display: none;
}
.slider {
  margin: 20px auto;
}

  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

  <script>
$(function() {
    var i = 0, len = 6;
    $('.slider__arrow').on('click', function(e) {
        var isLeft = $(this).hasClass('slider__left');
        i += (isLeft) ? 3 : -3;
        i > len && (i = len);
        i < 0 && (i = 0);
        $('.slider__arrow').removeClass('hide');
        $(this).toggleClass('hide', i == 0 || i == len);
        var left = -i * 100 + "px"
        $(".slider__container").stop().animate({
            left: left
        }, 300);
    });

});

  </script>
</head>

<body>
<div class="slider">
    <div class="slider__arrow slider__left"><</div>
    <div class="slider__arrow slider__right hide">></div>
    <div class="slider__container">
        <div class="slider__item">1</div>
        <div class="slider__item">2</div>
        <div class="slider__item">3</div>
        <div class="slider__item">4</div>
        <div class="slider__item">5</div>
        <div class="slider__item">6</div>
        <div class="slider__item">7</div>
        <div class="slider__item">8</div>
        <div class="slider__item">9</div>
    </div>
</div>


</body>
</html>
Ответить с цитированием
  #2 (permalink)  
Старый 11.09.2019, 17:57
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

slider and wheel
Андрей812,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
   * { box-sizing: border-box;margin: 0;padding: 0; }

.slider {
    width: 300px;
    height: 170px;
    overflow: hidden;
    position: relative;
}

.slider__arrow {
    width: 20px;
    height: 20px;
    position: absolute;
    top: 50%;
    background-color: #3294FD;
    text-align: center;
    line-height: 20px;
    color: #fff;
    z-index: 9;
    cursor: pointer;
}

.slider__left { left: 0; }
.slider__right { right: 0; }

.slider__container {
    width: 900px;
    height: 170px;
    position: absolute;
    top: 0;
    left: 0;
}

.slider__item {
    width: 100px;
    height: 170px;
    line-height: 170px;
    background: pink;
    display: block;
    float: left;
    text-align: center;
}

.slider__item:hover {
    background-color: #F7F7F7;
}
.slider__arrow.hide{
  display: none;
}
.slider {
  margin: 20px auto;
}

  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

  <script>
$(function() {
    var i = 0, len = 6;
    $('.slider__arrow').on('click', function(e) {
        var isLeft = $(this).hasClass('slider__left');
        i += (isLeft) ? 3 : -3;
        i > len && (i = len);
        i < 0 && (i = 0);
        $('.slider__arrow').removeClass('hide');
        $(this).toggleClass('hide', i == 0 || i == len);
        var left = -i * 100 + "px"
        $(".slider__container").stop().animate({
            left: left
        }, 300);
    });
   $(".slider__container").on("wheel", function(e) {
    if($(".slider__container").is(":animated")) {e.preventDefault(); return;};
    if (e.originalEvent.deltaY > 0) $(".slider__left:not(.hide)").trigger("click");
    else $(".slider__right:not(.hide)").trigger("click");
    e.preventDefault()
   });

});

  </script>
</head>

<body>
<div class="slider">
    <div class="slider__arrow slider__left"><</div>
    <div class="slider__arrow slider__right hide">></div>
    <div class="slider__container">
        <div class="slider__item">1</div>
        <div class="slider__item">2</div>
        <div class="slider__item">3</div>
        <div class="slider__item">4</div>
        <div class="slider__item">5</div>
        <div class="slider__item">6</div>
        <div class="slider__item">7</div>
        <div class="slider__item">8</div>
        <div class="slider__item">9</div>
    </div>
</div>


</body>
</html>

Последний раз редактировалось рони, 11.09.2019 в 19:17.
Ответить с цитированием
  #3 (permalink)  
Старый 11.09.2019, 18:40
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

рони,
Строка 80 лучше так
if($(".slider__container").is(":animated")) {e.preventDefault(); return;}
Ответить с цитированием
  #4 (permalink)  
Старый 11.09.2019, 19:08
Интересующийся
Отправить личное сообщение для Андрей812 Посмотреть профиль Найти все сообщения от Андрей812
 
Регистрация: 10.09.2018
Сообщений: 27

Спасибо огромное!
Ответить с цитированием
  #5 (permalink)  
Старый 11.09.2019, 19:16
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Dilettante_Pro,
ok!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему заедает scroll? DenKuzmin17 jQuery 6 09.08.2019 18:53
scroll после resize bipib Events/DOM/Window 5 24.05.2018 14:50
Scroll menu, подсветка активных пунктов меню при скролле makissm21 AJAX и COMET 13 29.04.2017 19:28
Работа с css классом элемента при scroll Bravo Events/DOM/Window 10 23.05.2014 16:18
OFF scroll на body > ON scroll children barkar Общие вопросы Javascript 5 15.04.2014 21:24