You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Slick Carousel技术问题:幻灯片底部对齐与描述即时切换

解决方案

一、实现所有幻灯片底部统一对齐

问题根源在于非中间幻灯片的description被隐藏,导致info区域高度不一致,进而让幻灯片整体高度不同。通过Flex布局可强制每个幻灯片的结构高度统一,让图片始终固定在底部:

修改CSS中的.slide和.slick-slide样式:

.slick-slide {
    margin: 10px;
    display: flex;
    height: auto;
}
.slide {
    display: flex;
    flex-direction: column;
    height: 100%;
}
.slide .info {
    padding: 10px;
    flex-grow: 1; /* 让info区域自动填充剩余空间,保证图片始终在底部 */
}

这样不管description是否显示,info区域都会占据足够空间,图片始终固定在幻灯片底部,实现所有幻灯片底部对齐。

二、滚动开始时即时切换描述显示状态

原代码使用afterChange事件(滚动结束后触发),替换为beforeChange事件(滚动开始时触发),就能在滑动开始时立即切换描述的显示状态:

修改JS中的事件监听部分:

$('.carousel').on('beforeChange', function(event, slick, currentSlide, nextSlide){
    $('.slide').removeClass('center');
    // 提前标记即将成为中心的幻灯片
    $(slick.$slides[nextSlide]).addClass('center');
});

修改后的完整代码

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick-theme.min.css" rel="stylesheet"/>
<link href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.css" rel="stylesheet"/>


<div class="wrapper">
      <div class="carousel">
        <div class="slide">
            <div class="info">
              <div class="title">TITLE 1</div>
              <div class="description">Description for the first slide</div>
            </div>
            <img src="https://picsum.photos/300/200?random=1" alt="Slide 1">
        </div>
        <div class="slide">
            <div class="info">
                <div class="title">TITLE 2</div>
                <div class="description">Description for the second slide</div>
             </div>
            <img src="https://picsum.photos/300/200?random=2" alt="Slide 2">
        </div>
        <div class="slide">
            <div class="info">
                <div class="title">TITLE 3</div>
                <div class="description">Description for the third slide</div>
            </div>
            <img src="https://picsum.photos/300/200?random=3" alt="Slide 3">
        </div>
        <div class="slide">
            <div class="info">
                <div class="title">TITLE 4</div>
                <div class="description">Description for the fourth slide</div>
            </div>
            <img src="https://picsum.photos/300/200?random=4" alt="Slide 4">
        </div>
        <div class="slide">
            <div class="info">
                <div class="title">TITLE 5</div>
                <div class="description">Description for the fifth slide</div>
            </div>
            <img src="https://picsum.photos/300/200?random=5" alt="Slide 5">
        </div>
        <div class="slide">
            <div class="info">
                <div class="title">TITLE 6</div>
                <div class="description">Description for the sixth slide</div>
            </div>
            <img src="https://picsum.photos/300/200?random=6" alt="Slide 6">
        </div>
      </div>
</div>

CSS

html, body {
    background-color: #e74c3c;
}
.wrapper {
    width: 100%;
    padding-top: 20px;
    text-align: center;
}
.carousel {
    width: 90%;
    margin: 0px auto;
}
.slick-slide {
    margin: 10px;
    display: flex;
    height: auto;
}
.slick-slide img {
    width: 100%;
    border-radius: 10px;
}
.slide {
    display: flex;
    flex-direction: column;
    height: 100%;
}
.slide .description {
    display: none;
}
.slide .info {
    padding: 10px;
    flex-grow: 1;
}
.slide.center .info {
    border-radius: 10px 10px 0 0;
    border: 2px solid #fff;
    border-bottom: none;
}
.slide.center .description {
    display: block;
}
.slide.center.slick-slide img{
    border-radius: 0 0 10px 10px;
}

JS

$(document).ready(function(){
    $('.carousel').slick({
        centerMode: true,
        centerPadding: '0px',
        slidesToShow: 3,
        autoplay: true,
        autoplaySpeed: 3000,
        responsive: [
            {
                breakpoint: 768,
                settings: {
                    arrows: false,
                    centerMode: true,
                    centerPadding: '40px',
                    slidesToShow: 1
                }
            },
            {
                breakpoint: 480,
                settings: {
                    arrows: false,
                    centerMode: true,
                    centerPadding: '40px',
                    slidesToShow: 1
                }
            }
        ]
    });
    
    $('.carousel .slick-center').addClass('center');
  
    $('.carousel').on('beforeChange', function(event, slick, currentSlide, nextSlide){
        $('.slide').removeClass('center');
        $(slick.$slides[nextSlide]).addClass('center');
    });
});

内容的提问来源于stack exchange,提问作者Hector

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 06:54:57