Javascript.RU

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

Слайдер карусель
Пишу слайдер карусель, запрограммировал кнопку вправо, а вот кнопку в влево, что то не получается, подскажите пожалуйста как дополнить мой код, спасибо.

<div class="slider-container">

    <div class="slider">
      <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>

    <div class="arrows">
      <span class="arrows__item arrows__item_prew">❰</span>
      <span class="arrows__item arrows__item_next">❱</span>
    </div>

  </div>


body {
  margin: 0;
  padding: 0;
}

img {
  max-width: 100%;
  display: block;
  pointer-events: none;
}

.slider-container{
  max-width: 1000px;
  margin: 0 auto;
  overflow: hidden;
}

.slider{
  display: flex;
  align-items: center;
  user-select: none;  
  transition: all .4s ease-in-out;
  transform: translateX(0);
  will-change: transform;
}

.slider__item{
  flex-shrink: 0;
  width: 100%;
  height: 300px;
  background: rgb(170, 170, 170);
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: 3rem;
  line-height: 1;
  font-weight: 700;
}

.slider__item:nth-child(even){
  background: rgb(123, 122, 122);
}

.arrows{
  display: flex;
  justify-content: center;
  margin-top: 1rem;
}

.arrows__item{
  cursor: pointer;
  font-size: 3rem;
  line-height: 1;
  user-select: none;
  display: inline-block;
  margin: 0 1rem; 
}


function sliderCarousel(){
  'use strict';

  const sliderItem = document.querySelectorAll('.slider__item'),
        slider = document.querySelector('.slider'),
        arrows = document.querySelectorAll('.arrows__item');

  let countWidth = sliderItem[0].offsetWidth,
      count = 0;

    arrows[0].addEventListener('click', function(){

      // difficulties with this part of the code
      
    });

    arrows[1].addEventListener('click', function(){
      if(count < sliderItem.length - 1){
        slider.style.transform = `translateX(-${countWidth}px)`;
        countWidth += sliderItem[count].offsetWidth;
        count++;
      } else {
        count = 0;
        slider.style.transform = `translateX(0px)`;
        countWidth = sliderItem[0].offsetWidth;
      }
    });
}
sliderCarousel();

Последний раз редактировалось TheSanches, 16.07.2020 в 16:18.
Ответить с цитированием
  #2 (permalink)  
Старый 16.07.2020, 18:55
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

слайдер функция для кнопок вперёд назад
TheSanches,
<!doctype html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
body {
  margin: 0;
  padding: 0;
}

img {
  max-width: 100%;
  display: block;
  pointer-events: none;
}

.slider-container{
  max-width: 1000px;
  margin: 0 auto;
  overflow: hidden;
}

.slider{
  display: flex;
  align-items: center;
  user-select: none;
  transition: all .4s ease-in-out;
  transform: translateX(0);
  will-change: transform;
}

.slider__item{
  flex-shrink: 0;
  width: 100%;
  height: 300px;
  background: rgb(170, 170, 170);
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: 3rem;
  line-height: 1;
  font-weight: 700;
}

.slider__item:nth-child(even){
  background: rgb(123, 122, 122);
}

.arrows{
  display: flex;
  justify-content: center;
  margin-top: 1rem;
}

.arrows__item{
  cursor: pointer;
  font-size: 3rem;
  line-height: 1;
  user-select: none;
  display: inline-block;
  margin: 0 1rem;
}

    </style>

  <script>
document.addEventListener( "DOMContentLoaded" , function() {
  'use strict';

  const slider = document.querySelector('.slider'),
        items = slider.querySelectorAll('.slider__item'),
        len = items.length,
        countWidth = items[0].offsetWidth,
        arrows = document.querySelector('.arrows');

  let count = 0;

  arrows.addEventListener('click', ({target}) => {
        target = target.closest('.arrows__item');
        if(target) {
        const up = +target.dataset.up;
        count = (count + up + len) % len;
        slider.style.transform = `translateX(-${countWidth * count}px)`;
        }
    });
  });
  </script>

</head>
<body>
<div class="slider-container">

    <div class="slider">
      <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>

    <div class="arrows">
      <span class="arrows__item arrows__item_prew" data-up="-1">❰</span>
      <span class="arrows__item arrows__item_next" data-up="1">❱</span>
    </div>

  </div>

</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 17.07.2020, 09:58
Аспирант
Отправить личное сообщение для TheSanches Посмотреть профиль Найти все сообщения от TheSanches
 
Регистрация: 21.01.2018
Сообщений: 78

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



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как добавить слайдер блоков (карусель) Einsword Общие вопросы Javascript 0 13.03.2020 14:53
Слайдер карусель faceVB Events/DOM/Window 11 01.01.2020 16:01
Слайдер карусель TheSanches Общие вопросы Javascript 6 02.03.2019 19:33
Как поместить слайдер в модальное окно? ИщуПомощь Элементы интерфейса 2 24.08.2017 20:27
Слайдер - карусель блоков (помогите пожалуйста) Viktor.Poberezhniy Общие вопросы Javascript 3 22.07.2014 12:46