javascript - 如何制作 3D 光滑 slider

标签 javascript html jquery slick.js

使用 slick ,我正在尝试实现一个看起来像这样的 slider :
enter image description here
在上面,slick 时默认选择中心幻灯片。发起。然后,当单击箭头时,slick-current类将转移到一个新的 div 和 css translate 可用于缩放图像。
这是我当前的代码:

$(function(){

  $("#downloadNow__slick").slick({
    slidesToShow: 3,
    // initialSlide: 2,
    centerMode: true,
    centerPadding: "53px",
    arrows: true,
    dots: false,
    infinite: true,
    cssEase: 'linear',
  });

});
.downloadNow {
  background: grey;
  padding: 60px 0px;

  &__wrapper {
    position: relative;
  }
  
  .downloadNowCard{
    background: white;
    padding: 100px;
  }


  .slider {
    max-width: 1110px;
    margin: 0 auto;
  }

  .slick-track {
    padding-top: 53px;
    padding-bottom: 53px;
  }

  .slick-slide {
    text-align: center;
    transition: transform 0.3s ease-in-out;
  }


  .slick-slide.slick-current {
    transform: scale(1.35);
    position: relative;
    z-index: 1;
  }

  .slick-slide img {
    width: 100%;
  }


}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js" integrity="sha512-894YE6QWD5I59HgZOGReFYm4dnWc1Qt5NtvYSaNcOP+u1T9qYdvdihz0PPSiiqn/+/3e7Jo4EaG7TubfWGUrMQ==" crossorigin="anonymous"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js" integrity="sha512-XtmMtDEcNz2j7ekrtHvOVR4iwwaD6o/FUJe6+Zq+HgcCsk3kj4uSQQR8weQ2QVj1o0Pk6PwYLohm206ZzNfubg==" crossorigin="anonymous"></script>


<section class="downloadNow">
  <div class="downloadNow__wrapper">


    <div class="downloadNow__slides" id="downloadNow__slick">
      <div class="downloadNowCard">Card 1</div>
      <div class="downloadNowCard">Card 2</div>
      <div class="downloadNowCard">Card 3</div>
    </div>
   

  </div>
</section>

当前问题:
  • 无法实现行布局(flex 在包装器上播放不好)
  • 如果我取消注释 initialSlide: 2 , slider 断裂。我正在尝试将中心幻灯片作为事件幻灯片。
  • Slick 不换幻灯片
  • 最佳答案

    干得好...

    由于光滑 slider 的一些奇怪行为,我花了一些时间才弄清楚。
    首先,光滑的 slider 不适用于较新版本的 jQuery .经过大量试验和错误(并在 SO 上搜索旧答案)后,我发现它仅适用于旧版本的 jQuery,原因很奇怪。这也是它对您不起作用的主要原因。我使用的 jQuery 比您使用的旧版本,但它仍然无法正常工作。它适用于 v1.12.3 (它可能也适用于一些较新版本的 jQuery,但我没有测试哪个是最新的兼容版本)。
    要实现3D效果,可以使用box-shadow: 0.1vw 0.8vw 1vw rgba(0, 0, 0, 0.35); .使用当前值(即 0.1vw 0.8vw 1vw ),您会得到 模糊 处的阴影底部 还有一点 边。第一个值(即 0.1vw )定义水平偏移。第二个值(即 0.8vw )定义垂直偏移。第三个值(即 1vw )定义模糊半径,以使阴影“平滑”(尝试删除 1vw 你会明白的)。
    此外,我设法解决了您的所有问题:

  • 行布局有效,
  • 中间的卡片总是一张“事件卡片”(大一点的盒子,大一点的字体)和
  • 箭头也可以(但您必须使用 z-index: 100; 将它们推到前面)。

  • $(document).on('ready', function() {
    
      $('.slider').slick({
        dots: true,
        centerMode: true,
        infinite: true,
        centerPadding: '60px',
        slidesToShow: 3,
        speed: 400
      });
    
    });
    html {
      height: 100%;
      overflow-x: hidden;
    }
    
    body {
      background: #F8F8F8;
      height: 100%;
      margin: 0;
    }
    
    .slider {
      width: 90%;
      left: 5%;
    }
    
    h3 {
      background: #fff;
      color: #202020;
      font-size: 3.5vw;
      line-height: 23vh;
      margin: 6.5vw;
      margin: 6.5vw;
      padding: 1vw;
      position: relative;
      text-align: center;
      box-shadow: 0.1vw 0.8vw 1vw rgba(0, 0, 0, 0.35);
    }
    
    .slick-center {
      transition: 0.2s ease-in-out;
      -webkit-transform: scale(1.3);
      -moz-transform: scale(1.3);
      transform: scale(1.3);
    }
    
    .slick-center h3 {
      font-size: 4vw;
    }
    
    .slick-prev,
    .slick-next {
      z-index: 100 !important;
    }
    
    .slick-prev:before {
      transition: 0.2s ease-in-out;
      color: #303030 !important;
      font-size: 2vw !important;
      margin-right: -10vw;
    }
    
    .slick-next:before {
      transition: 0.2s ease-in-out;
      color: #303030 !important;
      font-size: 2vw !important;
      margin-left: -10vw;
    }
    
    .slick-dots li button:before {
      transition: 0.2s ease-in-out;
      font-size: 0.7vw !important;
    }
    <!DOCTYPE html>
    <html lang='en'>
    
    <head>
      <meta charset='UTF-8'>
      <meta http-equiv='X-UA-Compatible' content='IE=edge'>
      <meta name='viewport' content='width=device-width, initial-scale=1.0'>
      <title>Document</title>
      <script src='https://ajax.googleapis.com/ajax/libs/jquery/1.12.3/jquery.min.js'></script>
      <script src='https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.6.0/slick.min.js'></script>
      <link href='https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.6.0/slick.min.css' rel='stylesheet' />
      <link href='https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.6.0/slick-theme.min.css' rel='stylesheet' />
    </head>
    
    <body>
    
      <div class='slider'>
        <div>
          <h3>1</h3>
        </div>
        <div>
          <h3>2</h3>
        </div>
        <div>
          <h3>3</h3>
        </div>
        <div>
          <h3>4</h3>
        </div>
        <div>
          <h3>5</h3>
        </div>
        <div>
          <h3>6</h3>
        </div>
      </div>
    
    </body>
    
    </html>

    关于javascript - 如何制作 3D 光滑 slider ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67653645/

    相关文章:

    javascript - React Draft-js block 插入

    html - Tinymce - 更改 anchor 标记内的代码 - 什么是配置设置

    javascript - 当元素运行且不在屏幕外时运行函数

    javascript - 使用通过链接传递的数据来个性化页面内容

    jquery - Bootstrap 3 下拉菜单不适用于较小的屏幕尺寸(手机/平板电脑)

    javascript - 无法让 Jquery 将函数的输出写入 html

    javascript - 意外的 token 导入 - jsfiddle

    javascript - 使用 Chart.Js 绘制最高(绿色)和最低(红色)坐标图

    javascript - 简单的 JQuery 闪存卡

    jquery - 如何在打开另一个下拉菜单时关闭相邻的下拉菜单