La barre de progression du curseur ne correspond pas au nombre de diapositives
<p>J'ai créé un carrousel contenant des éléments <code>7</code> </p>
<p>Par défaut, ce carrousel affichera les éléments <code>5</code> </p>
<p>Lors de ma démo, j'ai rencontré deux problèmes : </p>
<ol>
<li>Le curseur est réglé sur <code>boucle infinie</code>, mais lorsqu'il revient à la diapositive 1, la barre de progression ne se réinitialise pas. ≪/li>
<li>Une fois que le curseur atteint la fin, il revient immédiatement à la diapositive 1 (au lieu d'une transition douce). ≪/li>
<li>Une fois la 7ème diapositive (7ème carte) visible, la barre de progression devrait se terminer. ≪/li>
</ol>
<p><code>$slider.slick("getSlick").slideCount</code>'s <code>console.log</code> renvoie 7, qui correspond au nombre d'éléments dans le curseur. Je ne sais donc pas quelle est la cause de ces problèmes.</p>
<p></p>
<pre class="brush:js;toolbar:false;">(function($) {
const $slider = $('#slider');
var $progressBar = $('.progressBar__bar');
$slider.on('beforeChange', function(event, slick, currentSlide, nextSlide) {
var calc = ((nextSlide) / (slick.slideCount - 1)) * 100;
$progressBar.css('background-size', calc + '% 100%').attr('aria-valuenow', calc);
});
$slider.slick({
slidesToShow : 5,
slidesToScroll : 1,
vitesse: 400,
flèches : vrai,
mobileFirst : vrai,
});
})(jQuery);</pre>
<pre class="brush:css;toolbar:false;">.cardSlider {
remplissage : 100px 0 ;
fond : noir ;
Couleur blanche;
}
.carte {
la couleur noire;
remplissage : 50 px ;
alignement du texte : centre ;
}
.progressBar__bar {
marge supérieure : 82 px ;
position : relative ;
bloc de visualisation;
largeur : 100 % ;
hauteur : 3px ;
débordement caché;
image d'arrière-plan : dégradé linéaire (à droite, jaune, jaune) ;
répétition d'arrière-plan : pas de répétition ;
taille de l'arrière-plan : 5 % 100 % ;
transition : facilité d'entrée et de sortie de la taille de l'arrière-plan de 0,5 s ;
}
.progressBar__bar[aria-valuenow="0"] {
taille de l'arrière-plan : 5 % 100 % !important ;
}
.progressBar__bar[aria-valuenow] {
hauteur : 5px ;
}
.progressBar__bar:avant {
contenu: "";
position : absolue ;
gauche : 0 ;
haut : 50 % ;
transformer : traduire (0%, -50 %);
largeur : 100 % ;
hauteur : 0,5 pt ;
couleur de fond : blanc ;
}
.slick-slide {
marge : 0px 10px ;
affichage : aucun ;
flotteur : gauche ;
hauteur : 100 % ;
hauteur minimale : 1 px ;
aperçu : aucun !important ;
}
.slick-slide.slick-loading {
affichage : aucun ;
}
.slick-slide.dragging img {
événements de pointeur : aucun ;
}
.slick-slide img {
largeur : 100 % ;
bloc de visualisation;
}
.slick-slider {
position : relative ;
bloc de visualisation;
dimensionnement de la boîte : bordure-boîte ;
-webkit-touch-callout : aucun ;
-khtml-user-select : aucun ;
action tactile : pan-y ;
-webkit-tap-highlight-color : transparent ;
}
.slick-liste {
position : relative ;
bloc de visualisation;
débordement caché;
marge : 0 ;
remplissage : 0 ;
}
.slick-list:focus {
contour : aucun ;
}
.slick-list.dragging {
curseur : pointeur ;
curseur : main ;
}
.slick-piste,
.slick-liste {
transformer : traduire3d(0, 0, 0);
transition : toutes les 150 ms de facilité ;
}
.slick-piste {
position : relative ;
haut : 0 ;
gauche : 0 ;
aligner les éléments : centre ;
largeur : 100 % ;
}
.slick-track:avant,
.slick-track:après {
affichage : tableau ;
contenu: "";
}
.slick-track:après {
clarifier les deux;
}
.slick-initialisé .slick-slide {
bloc de visualisation;
}≪/pré>
<pre class="brush:html;toolbar:false;"><script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.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://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"/>
<link href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick-theme.css" rel="stylesheet"/>
<section class="cardSlider">
<div class="conteneur">
<div class="ligne">
<div class="col-12">
<div class="cardSlider__listing" id="slider">
<article class="carte">
Carte 1
</article>
<article class="carte">
Carte 2
</article>
<article class="carte">
Carte 3
</article>
<article class="carte">
Carte 4
</article>
<article class="carte">
Carte 5
</article>
<article class="carte">
Carte 6
</article>
<article class="carte">
Carte 7
</article>
</div>
</div>
</div>
<div class="ligne">
<div class="col-12">
<div class="progressBar">
<div class="progressBar__bar" role="progressbar" aria-valuemin="0" aria-valuemax="100"></div>
</div>
</div>
</div>
</div>
</section></pré>