如何在 Slick 轮播项目之间添加空格

How add spaces between Slick carousel item

我想在两个光滑的旋转木马项目之间添加 space,但不想要带填充的 space,因为它会减小我的元素大小(我不希望那样)。

    $('.single-item').slick({
        initialSlide: 3,
        infinite: false
    });
.slick-slider {
    margin:0 -15px;
}
.slick-slide {
    padding:10px;
    background-color:red;
    text-align:center;
    margin-right:15px;
    margin-left:15px;
}
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet"/>
<script src="http://cdn.jsdelivr.net/jquery.slick/1.5.0/slick.min.js"></script>
<link href="http://cdn.jsdelivr.net/jquery.slick/1.5.0/slick.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<div class="container">
    <div class="row">
        <div class="col-sm-12" style="background-color:gray;">
            <div class="slider single-item" style="background:yellow">
                <div>1</div>
                <div>2</div>
                <div>3</div>
                <div>4</div>
                <div>5</div>
                <div>6</div>
            </div>
        </div>
    </div>
</div>

不知怎么的,我从两边都得到了 space,我正在尝试删除它。

尝试使用像 :first-child & :last-child 这样的伪 类 来删除第一个和最后一个 child.

的额外填充

检查 slick 滑块的生成代码并尝试删除其上的填充。

希望,它会有所帮助!!!

借助伪 类 删除了第一个和最后一个 child 的边距,并使用了 adaptive height true in the script. Try this fiddle

再来一个Demo

 $('.single-item').slick({
        initialSlide: 3,
        infinite: false,
        adaptiveHeight: true
    });

如果您希望幻灯片之间的宽度更大 space + 而不是减小幻灯片的宽度,这意味着您必须显示更少的幻灯片。在这种情况下只需添加一个设置以显示较少的幻灯片

    $('.single-item').slick({
      initialSlide: 3,
      infinite: false,
      slidesToShow: 3
    });

另一种选择是通过 css 定义幻灯片的宽度,而不设置要显示的幻灯片数量。

是的,我找到了 dis 问题的解决方案。

  • 从两侧创建一个具有额外宽度的滑块框(我们可以使用它从两侧添加项目space)。
  • 创建内部项目内容,两边都有适当的宽度和边距(这应该是您的实际包装尺寸)
  • 完成
  /* the slides */
  .slick-slide {
      margin: 0 27px;
  }

  /* the parent */
  .slick-list {
      margin: 0 -27px;
  }

这个问题在插件的 github 上被报告为问题 (#582),顺便说一下,这个解决方案也在那里提到,(https://github.com/kenwheeler/slick/issues/582)

例如: 将此数据属性添加到您的主要 slick div:data-space="7"

                    $('[data-space]').each(function () {
                        var $this = $(this),
                            $space = $this.attr('data-space');

                        $('.slick-slide').css({
                            marginLeft: $space + 'px',
                            marginRight: $space + 'px'
                        });

                        $('.slick-list').css({
                            marginLeft: -$space + 'px',
                            marginRight: -$space/2 + 'px'
                        })
                    });

@Dishan TD 的回答很好,但我只使用 margin-left 得到了更好的结果。

为了让其他人更清楚这一点,您必须注意两个相反的数字:27 和 -27

  /* the slides */
  .slick-slide {
    margin-left:27px;
  }

  /* the parent */
  .slick-list {
    margin-left:-27px;
  }

添加

centerPadding: '0'

滑块设置如下所示:

$('.phase-slider-one').slick({
     centerMode: true,
     centerPadding: '0',
     responsive: [{breakpoint: 1024,},{breakpoint: 600,},{breakpoint: 480,}]
});

谢谢

自最新版本以来,您只需在幻灯片中添加 margin

.slick-slide {
  margin: 0 20px;
}

不需要任何类型的负边距,因为 slick 的计算是基于元素 outerHeight

只需修正 css:

/* the slides */
.slick-slider {
    overflow: hidden;
}
/* the parent */
.slick-list {
    margin: 0 -9px;
}
/* item */  
.item{
    padding: 0 9px;
}

光滑的幻灯片有内部包装 div,您可以使用它在幻灯片之间创建间距而不会破坏设计:

.slick-list {margin: 0 -5px;}
.slick-slide>div {padding: 0 5px;}

基于 Dishan TD post 的改进(也删除了垂直边距):

  .slick-slide{
    margin-left:  15px;
    margin-right:  15px;
  }

  .slick-list {
    margin-left: -15px;
    margin-right: -15px;
    pointer-events: none;
  }

注意:在我的例子中 pointer-events 是必需的,以便能够单击向左的箭头。

只需在 slick-side class 上添加填充即可

.slick-slider .slick-slide {
  padding: 0 15px;
}

此方法适用于最新版本的 react-slick:

  .slick-list {
    margin: 0 -7px !important;
  }
  
  .slick-slide > div {
    padding: 0 7px !important;
  }
.slick-slide > div {
  margin: 0 10px;
}
.slick-list {
  margin: 0 -10px;
}

屏幕屏幕
data-sm、data-md、data-lg、data-xl、data-xxl 和默认屏幕尺寸 data-default

至space项之间使用space=10,这里10是以“em”为单位的大小

eg: 我设置了space从小屏到中屏2,从大屏到特大屏我设置了space5data-default="[space=2]" data-xl="[space=5]"

注意: data-default="[space=1]" 这些属性只能在"your-slick-slider-class"中设置

Javascript代码

function slickSpacing(space, self){
    self.find('.slick-slide').css({
        marginLeft: space + 'em',
        marginRight: space + 'em'
    });
    self.find('.slick-list').css({
        marginLeft: -space + 'em',
        marginRight: -space/2 + 'em'
    });
}
function slickSlider(){
    $('.slick-slider').each(function () {
        var self = $(this);
        // var screenSize = String(self.attr('data-md')).match(/screen=([0-9]+)/);
        var spaceDefaultSize = String(self.attr('data-default')).match(/space=([0-9]+)/);
        var spaceSmSize = String(self.attr('data-sm')).match(/space=([0-9]+)/);
        var spaceMdSize = String(self.attr('data-md')).match(/space=([0-9]+)/);
        var spaceLgSize = String(self.attr('data-lg')).match(/space=([0-9]+)/);
        var spaceXlSize = String(self.attr('data-xl')).match(/space=([0-9]+)/);
        var spaceXxlSize = String(self.attr('data-xxl')).match(/space=([0-9]+)/);
        if(String(spaceDefaultSize) !== "null"){
            if($(window).innerWidth() >= 0){
                slickSpacing(spaceDefaultSize[1], self)
            }
        }
        if(String(spaceSmSize) !== "null"){
            if($(window).innerWidth() >= 576){
                slickSpacing(spaceSmSize[1], self)
            }
        }
        if(String(spaceMdSize) !== "null"){
            if($(window).innerWidth() >= 768){
                slickSpacing(spaceMdSize[1], self)
            }
        }
        if(String(spaceLgSize) !== "null"){
            if($(window).innerWidth() >= 992){
                slickSpacing(spaceLgSize[1], self)
            }
        }
        if(String(spaceXlSize) !== "null"){
            if($(window).innerWidth() >= 1200){
                slickSpacing(spaceXlSize[1], self)
            }
        }
        if(String(spaceXxlSize) !== "null"){
            if($(window).innerWidth() >= 1400){
                slickSpacing(spaceXxlSize[1], self)
            }
        }
    });
}
$(window).on('resize load', function(){
    slickSlider();
});

HTML代码

<div class="service-slider overflow-hidden" data-default="[space=1]" data-xl="[space=5]">
    <div></div>
    <div></div>
    <div></div>
</div>