使用 Slick 轮播将 class 添加到多张以前的幻灯片
Add class to multiple previous slides with Slick carrousel
我正在尝试使用 Slick carousel 创建时间轴。我想要实现的是,当你在时间轴上前进时,所有之前的幻灯片都保持彩色,当你返回时它们又变回灰色。我已尽力使用 onAfterChange 和 onBeforeChange,但我无法定位多张之前的幻灯片,只能定位到之前的最后一张幻灯片。
这是我的时间轴的 JSFiddle:https://jsfiddle.net/23wL9ymv/
html
<div class="wrapper">
<div class="carrousel__candidature__timeline">
<div class="timeline-item p">Architecture</div>
<div class="timeline-item p">Design d’intérieur</div>
<div class="timeline-item p">Accrédités LEED</div>
<div class="timeline-item p">Spécialiste codes</div>
</div>
</div>
css
.wrapper {
max-width: 800px;
}
.slick-list {
width: 100%;
}
.carrousel__candidature__timeline {
.timeline-item {
width: auto;
height: auto;
background: transparent;
margin-bottom: 20px !important;
position: relative;
font-size: 14px;
line-height: 28px;
font-weight: 400;
outline: none;
cursor: pointer;
color: grey;
&::before {
content: "";
position: absolute;
top: 36px;
left: -100%;
width: 100%;
height: 2px;
background-color: grey;
transition: 0.2s;
}
&::after {
content: "";
position: absolute;
top: 30px;
left: 0;
width: 15px;
height: 15px;
border-radius: 100%;
background-color: grey;
transition: 0.2s;
z-index: 1000;
}
&.slick-current {
color: red;
}
&.slick-current::before {
background-color: red;
}
&.slick-current::after {
background-color: red;
}
}
}
js
$('.carrousel__candidature__timeline').slick({
slidesToShow: 4,
SlideToScroll: 1,
asNavFor: '.carrousel__candidature__content',
centerMode: false,
focusOnSelect: true,
mobileFirst: true,
arrows: false,
dots: false,
infinite: false,
variableWidth: false
});
只有 css 可以解决这个问题,查看 classes 你可以将 .slick-current
class 应用于活动元素,如果你使用 general sibling selectors 您可以为该元素之后的所有内容设置样式。
因此,所做的更改基本上包括默认情况下将所有内容设为红色,然后将不活动的点设置为灰色。
.timeline-item {
//...
//color: gray remove this;
color: red;
&::before {
//...
//background-color: gray; remove this
background-color: red;
}
&::after {
//...
//background-color: gray; remove this
background-color: red;
}
}
//Added at the bottom of the scss file
.slick-current ~ .timeline-item {
color: gray;
}
.slick-current ~ .timeline-item::before {
background-color: gray;
}
.slick-current ~ .timeline-item::after {
background-color: gray;
}
我正在尝试使用 Slick carousel 创建时间轴。我想要实现的是,当你在时间轴上前进时,所有之前的幻灯片都保持彩色,当你返回时它们又变回灰色。我已尽力使用 onAfterChange 和 onBeforeChange,但我无法定位多张之前的幻灯片,只能定位到之前的最后一张幻灯片。
这是我的时间轴的 JSFiddle:https://jsfiddle.net/23wL9ymv/
html
<div class="wrapper">
<div class="carrousel__candidature__timeline">
<div class="timeline-item p">Architecture</div>
<div class="timeline-item p">Design d’intérieur</div>
<div class="timeline-item p">Accrédités LEED</div>
<div class="timeline-item p">Spécialiste codes</div>
</div>
</div>
css
.wrapper {
max-width: 800px;
}
.slick-list {
width: 100%;
}
.carrousel__candidature__timeline {
.timeline-item {
width: auto;
height: auto;
background: transparent;
margin-bottom: 20px !important;
position: relative;
font-size: 14px;
line-height: 28px;
font-weight: 400;
outline: none;
cursor: pointer;
color: grey;
&::before {
content: "";
position: absolute;
top: 36px;
left: -100%;
width: 100%;
height: 2px;
background-color: grey;
transition: 0.2s;
}
&::after {
content: "";
position: absolute;
top: 30px;
left: 0;
width: 15px;
height: 15px;
border-radius: 100%;
background-color: grey;
transition: 0.2s;
z-index: 1000;
}
&.slick-current {
color: red;
}
&.slick-current::before {
background-color: red;
}
&.slick-current::after {
background-color: red;
}
}
}
js
$('.carrousel__candidature__timeline').slick({
slidesToShow: 4,
SlideToScroll: 1,
asNavFor: '.carrousel__candidature__content',
centerMode: false,
focusOnSelect: true,
mobileFirst: true,
arrows: false,
dots: false,
infinite: false,
variableWidth: false
});
只有 css 可以解决这个问题,查看 classes 你可以将 .slick-current
class 应用于活动元素,如果你使用 general sibling selectors 您可以为该元素之后的所有内容设置样式。
因此,所做的更改基本上包括默认情况下将所有内容设为红色,然后将不活动的点设置为灰色。
.timeline-item {
//...
//color: gray remove this;
color: red;
&::before {
//...
//background-color: gray; remove this
background-color: red;
}
&::after {
//...
//background-color: gray; remove this
background-color: red;
}
}
//Added at the bottom of the scss file
.slick-current ~ .timeline-item {
color: gray;
}
.slick-current ~ .timeline-item::before {
background-color: gray;
}
.slick-current ~ .timeline-item::after {
background-color: gray;
}