每一个滑块滑块都有它自己的子滑块,不管它的父滑块是什么,它都具有独立性。现在,我想要的视图是下面的布局。

这就是我到目前为止所取得的成就。小提琴
$('.slider').slick({
slidesToShow: 3,
centerMode: true,
centerPadding: 0,
dots: true,
infinite: true,
cssEase: 'linear'
});
$('.slider-mini').slick({
slidesToShow: 3,
dots: false,
infinite: true,
cssEase: 'linear'
});发布于 2017-04-13 07:46:33
如果我理解正确,这就是你想要的:
$('.slider').slick({
slidesToShow: 3,
centerMode: true,
centerPadding: 0,
dots: true,
infinite: true,
cssEase: 'linear',
onBeforeChange: (slider) => {
console.log('onBeforeChange', slider);
slider.$slider.addClass('sliding');
},
onAfterChange: (slider) => {
console.log('onAfterChange', slider);
slider.$slider.removeClass('sliding');
}
})
$('.slider-mini').slick({
slidesToShow: 3,
dots: false,
infinite: true,
cssEase: 'linear'
});.slider {
width: 650px;
margin: 0 auto;
}
img {
width: 200px;
height: 200px;
}
.red {
background: red;
height: 200px;
width: 200px
}
.green {
background: green;
height: 200px;
width: 200px
}
.yellow {
background: yellow;
height: 200px;
width: 200px
}
.black {
background: black;
height: 200px;
width: 200px
}
.slick-center {
border: solid 0px blue
}
.red-mini {
background: red;
margin-right: 5px;
margin-top: 10px
}
.green-mini {
background: green;
margin-right: 5px;
margin-top: 10px
}
.yellow-mini {
background: yellow;
margin-right: 5px;
margin-top: 10px
}
.black-mini {
background: black;
margin-right: 5px;
margin-top: 10px
}
.slider .slick-prev {
background: black
}
.slider .slick-next {
background: black;
z-index: 5;
}
.slider-mini {
margin-top: 10px;
padding: 0 20px;
width: 640px;
margin-left: -215px;
visibility: hidden;
}
.slick-center .slider-mini {
visibility: visible;
}
.slider-mini .slick-prev {
left: 0;
transition: opacity 250ms;
}
.slider-mini .slick-next {
right: 0;
transition: opacity 250ms;
}
.slider.sliding .slick-prev, .slider.sliding .slick-next {
opacity: 0;
}<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/jquery.slick/1.3.15/slick.min.js"></script>
<link href="https://cdn.jsdelivr.net/jquery.slick/1.3.15/slick.css" rel="stylesheet"/>
<div class="slider">
<div>
<div class="red">
</div>
<div class="slider-mini">
<div class="red-mini">
1
</div>
<div class="red-mini">
2
</div>
<div class="red-mini">
3
</div>
<div class="red-mini">
4
</div>
<div class="red-mini">
5
</div>
</div>
</div>
<div>
<div class="green">
</div>
<div class="slider-mini">
<div class="green-mini">
1
</div>
<div class="green-mini">
2
</div>
<div class="green-mini">
3
</div>
<div class="green-mini">
4
</div>
<div class="green-mini">
5
</div>
</div>
</div>
<div>
<div class="yellow">
</div>
<div class="slider-mini">
<div class="yellow-mini">
1
</div>
<div class="yellow-mini">
2
</div>
<div class="yellow-mini">
3
</div>
<div class="yellow-mini">
4
</div>
<div class="yellow-mini">
5
</div>
</div>
</div>
<div>
<div class="black">
</div>
<div class="slider-mini">
<div class="black-mini">
1
</div>
<div class="black-mini">
2
</div>
<div class="black-mini">
3
</div>
<div class="black-mini">
4
</div>
<div class="black-mini">
5
</div>
</div>
</div>
</div>
发布于 2017-04-17 12:02:18
我选择了另一种方法,而不是哥们儿提供的答案,这对你来说可能也很有趣。
注意:我已经将Slick库升级到1.6.0,所以现在也需要slick主题.own(除非您想用自己的东西完全替换它)。
我稍微改变了HTML的结构,将所有的迷你滑块放在一个div.mini-sliders中,并将该元素转换为一个不能手动调整的滑块。然后设置顶部滑块的asNavFor选项以指向该滑块,顶部滑块同时自动移动迷你滑块,这看起来更好,因为以前的迷你滑块不会突然消失。我还使箭头消失时,滑块的变化,按要求。
我遇到了一个小滑块按钮的问题,因为这些按钮显示在其可见区域之外,并在同级滑块中变得可见,但考虑到您的模拟显示与滑块重叠的箭头,一些CSS很容易修复,同时也匹配您的设计。如果要使按钮向外显示更多,则需要稍微增加.mini-sliders .slick-slide .slick-slide选择器中幻灯片的页边距。
$('.slider').slick({
slidesToShow: 3,
centerMode: true,
centerPadding: 0,
swipeToSlide: true,
dots: false,
infinite: true,
asNavFor: '.mini-sliders',
cssEase: 'linear'
});
$('.mini-sliders').slick({
slidesToShow: 1,
arrows: false,
draggable: false,
touchMove: false,
dots: false
}).on('beforeChange', function() {
$('.mini-sliders button').hide();
}).on('afterChange', function() {
$('.mini-sliders button').show();
});
$('.mini-sliders .slick-slide').slick({
slidesToShow: 5,
dots: false,
swipeToSlide: true,
arrows: true,
infinite: true,
cssEase: 'linear'
}).on('beforeChange', function(e) {
e.stopPropagation();
});.slider, .mini-sliders {
width: 650px;
margin: 0 auto;
}
.slider .slick-slide {
height: 200px;
}
.mini-sliders .slick-slide .slick-slide {
margin: 10px 5px;
height: 80px;
color: white;
text-shadow: 1px 1px 1px black;
}
.slider .slick-prev {
left: -10px;
z-index: 10;
}
.slider .slick-next {
right: -10px;
}
.mini-sliders .slick-slide .slick-prev {
left: 0;
z-index: 10;
}
.mini-sliders .slick-slide .slick-next {
right: 0;
}
.slick-arrow {
background: black !important;
}
img {
width: 200px;
}
.red {
background: red;
}
.green {
background: green;
}
.yellow {
background: yellow;
}
.black {
background: black;
}<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/jquery.slick/1.6.0/slick.min.js"></script>
<link href="https://cdn.jsdelivr.net/jquery.slick/1.6.0/slick.css" rel="stylesheet"/>
<link href="https://cdn.jsdelivr.net/jquery.slick/1.6.0/slick-theme.css" rel="stylesheet"/>
<div class="slider">
<div class="red"></div>
<div class="green"></div>
<div class="yellow"></div>
<div class="black"></div>
</div>
<div class="mini-sliders">
<div>
<div class="red">1</div>
<div class="red">2</div>
<div class="red">3</div>
<div class="red">4</div>
<div class="red">5</div>
<div class="red">6</div>
</div>
<div>
<div class="green">1</div>
<div class="green">2</div>
<div class="green">3</div>
<div class="green">4</div>
<div class="green">5</div>
<div class="green">6</div>
</div>
<div>
<div class="yellow">1</div>
<div class="yellow">2</div>
<div class="yellow">3</div>
<div class="yellow">4</div>
<div class="yellow">5</div>
<div class="yellow">6</div>
</div>
<div>
<div class="black">1</div>
<div class="black">2</div>
<div class="black">3</div>
<div class="black">4</div>
<div class="black">5</div>
<div class="black">6</div>
</div>
</div>
https://stackoverflow.com/questions/43236703
复制相似问题