Slick slider centerMode

17,541

A little bit of CSS should help you out:

$('.slider').slick({
  centerMode: true,
  centerPadding: '30px',
  slidesToShow: 3
});
.slick-slide > div {
  transform: scale(.5);
  transition: transform .3s cubic-bezier(.4,0,.2,1);
}
.slick-center > div {
  transform: scale(1);
}
.slider__item > img {
  width: 100%;
  height: auto;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick.min.js"></script>


<div class="slider">
  <div class="slider__item">
    <img src="https://pp.userapi.com/c849132/v849132998/45c5c/RSTineyyvfE.jpg" alt="">
  </div>
  <div class="slider__item">
    <img src="https://pp.userapi.com/c849132/v849132998/45c5c/RSTineyyvfE.jpg" alt="">
  </div>
  <div class="slider__item">
    <img src="https://pp.userapi.com/c849132/v849132998/45c5c/RSTineyyvfE.jpg" alt="">
  </div>
  <div class="slider__item">
    <img src="https://pp.userapi.com/c849132/v849132998/45c5c/RSTineyyvfE.jpg" alt="">
  </div>
  <div class="slider__item">
    <img src="https://pp.userapi.com/c849132/v849132998/45c5c/RSTineyyvfE.jpg" alt="">
  </div>
  <div class="slider__item">
    <img src="https://pp.userapi.com/c849132/v849132998/45c5c/RSTineyyvfE.jpg" alt="">
  </div>
</div>

The principle is simple: use transform: scale(n) to scale down all the slides (where n is your desired factor - .5 in the example above). use transform:scale(1) on the centered one (has .slide-center class) to render it at its real scale (1:1).
And add a transition on transform.

Done.

Share:
17,541
spacy Fox
Author by

spacy Fox

Updated on June 29, 2022

Comments

  • spacy Fox
    spacy Fox almost 2 years

    I've been trying to create something like this using slick.js, and i really can't get my head around it.

    I have got the current code in place. How to make the center slide image 100% width and height and add paddings to the slide? It seems to be not working.

    I'd really appreciate any help. Thanks.

    $('.slider').slick({
      centerMode: true,
      centerPadding: '30px',
      slidesToShow: 3,
      adaptiveHeight: false
    });
    .slick-slide img {
      max-width: 100%; 
      transition: transform 0.5s; 
     }
    
    .slick-slide.slick-center img{
      transform: scale(2.1);
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <link href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick.min.css" rel="stylesheet"/>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick.min.js"></script>
    
    
    <div class="slider">
      <div class="slider__item">
        <img src="https://pp.userapi.com/c849132/v849132998/45c5c/RSTineyyvfE.jpg" alt="">
      </div>
      <div class="slider__item">
        <img src="https://pp.userapi.com/c849132/v849132998/45c5c/RSTineyyvfE.jpg" alt="">
      </div>
      <div class="slider__item">
        <img src="https://pp.userapi.com/c849132/v849132998/45c5c/RSTineyyvfE.jpg" alt="">
      </div>
      <div class="slider__item">
        <img src="https://pp.userapi.com/c849132/v849132998/45c5c/RSTineyyvfE.jpg" alt="">
      </div>
      <div class="slider__item">
        <img src="https://pp.userapi.com/c849132/v849132998/45c5c/RSTineyyvfE.jpg" alt="">
      </div>
      <div class="slider__item">
        <img src="https://pp.userapi.com/c849132/v849132998/45c5c/RSTineyyvfE.jpg" alt="">
      </div>
    </div>