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

889
24 апреля 2017, 01:44

Добрый день, подскажите как решить такую проблему: нужен слайдер центральный слайд которого был бы ~800 пик, а остальные(2 сбоку ) имели ширину поменьше и были половинчатыми(см. codepen), ну и находились вертикально по центру родителя, в принципе, эта задача решена, но проблема в другом. У меня сейчас на слайдере создается эффект захождения вперед и резный возврат назад.(эффект дергания). Если сделать все изображения одинаковой ширины - никакой проблемы нет, все плавно и красиво. Есть ли вообще вариант решения этой проблемы на этом слайдере slick? Или подкиньте готовы вариант, если у вас имеется линки на них. https://codepenio/anon/pen/VbjWez

Answer 1

Происходит резкая смена ширины фото и резкая смена transform(т.к. она относительно ширины, а ширина меняется резко). Добавила transition(в самом конце css) - эта смена стала происходить плавно. Можете попробовать разные задержки на transition, возможно получится желаемый результат:

$('.main__slider').slick({ 
    arrows: false, 
    infinite: true, 
    speed: 300, 
    centerPadding: '0', 
    slidesToShow: 1, 
    centerMode: true, 
    variableWidth: true, 
    focusOnSelect: true 
  });
.slick-slide { 
  margin-left: 35px; 
  margin-right: 35px; 
  cursor: pointer; 
  position: relative; 
  width: 400px; 
} 
.slick-slide img { 
  width: 100%; 
} 
.slick-slide.slick-center { 
  width: 600px; 
} 
.slick-slide.slick-center::after { 
  opacity: 0; 
} 
.slick-slide::after { 
  content: ""; 
  display: block; 
  position: absolute; 
  background: #000; 
  transition: opacity 0.5s; 
  opacity: 0.65; 
  top: 0; 
  left: 0; 
  width: 100%; 
  height: 100%; 
} 
 
.slick-track{ 
  transition: transform 1s; 
} 
.slick-slide{ 
  transition: width .5s; 
}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.6.0/slick.min.css" /> 
<div class="main__slider"> 
			<div> 
        <img src="http://worldoftanksblitz.org/wp-content/uploads/2014/10/wallpaper_7_ipad2.jpg" alt=""> 
  </div> 
			<div> 
        <img src="http://worldoftanksblitz.org/wp-content/uploads/2014/10/wallpaper_7_ipad2.jpg" alt=""> 
  </div> 
  			<div> 
          <img src="http://worldoftanksblitz.org/wp-content/uploads/2014/10/wallpaper_7_ipad2.jpg" alt=""> 
  </div> 
			<div> 
        <img src="http://worldoftanksblitz.org/wp-content/uploads/2014/10/wallpaper_7_ipad2.jpg" alt=""> 
  </div> 
 
		</div> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.6.0/slick.min.js"></script>

Answer 2

Вы немного не стой стороны зашли. Лучше всего подключить все необходимые стили для slick в такой последовательности:

<link href="css/slick.css" rel="stylesheet">
<link href="css/slick-theme.css" rel="stylesheet">
<script src="js/slick.min.js"></script>

Скачать их можно тут http://kenwheeler.github.io/slick/

А после этого уже переопределить стили если необходимо, например поменять стрелки. Тогда корректно будут работать все функции слайдера.

READ ALSO
Подключение скриптов в HTML

Подключение скриптов в HTML

Подскажите пожалуйстаЧто это за вид подключения и как поменять на обычный? Пытался все подключения поменять на script src="" и некоторые не работают

269
инкапсуляция, ad hoc полиморфизм и dynamic

инкапсуляция, ad hoc полиморфизм и dynamic

Согласно ответу @Grundy на следующий вопрос :

356
Структура программы

Структура программы

Как выглядит схема взаимосвязи модулей программы? Нужно нарисовать структуру программы, состоящей из 3 модулейА как она выглядит - не представляю

276