Bar kemajuan peluncur tidak sepadan dengan bilangan slaid
P粉587780103
2023-08-25 16:17:45
<p>Saya telah mencipta karusel yang mengandungi <kod>7</code> </p>
<p>Secara lalai, karusel ini akan memaparkan <kod>5</kod> </p>
<p>Semasa demo saya, saya menghadapi dua isu: </p>
<ol>
<li>Gelangsar ditetapkan kepada <kod>gelung tak terhingga</kod>, tetapi apabila ia kembali ke slaid 1, bar kemajuan tidak ditetapkan semula. </li>
<li>Sebaik sahaja peluncur sampai ke penghujung, ia serta-merta melompat kembali ke slaid 1 (bukan peralihan yang lancar). </li>
<li>Setelah slaid ke-7 (kad ke-7) kelihatan, bar kemajuan akan selesai. </li>
</ol>
<p><kod>$slider.slick("getSlick").slideCount</code>'s <code>console.log</code> Jadi tidak pasti apa yang menyebabkan masalah ini.</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('saiz latar belakang', calc + '% 100%').attr('aria-valuenow', calc);
});
$slider.slick({
slaidToShow: 5,
slaidToScroll: 1,
kelajuan: 400,
anak panah: benar,
mobileFirst: benar,
});
})(jQuery);</pre>
<pre class="brush:css;toolbar:false;">.cardSlider {
pelapik: 100px 0;
latar belakang: hitam;
warna: putih;
}
.card {
warna: hitam;
padding: 50px;
text-align: tengah;
}
.progressBar__bar {
jidar atas: 82px;
kedudukan: relatif;
paparan: blok;
lebar: 100%;
ketinggian: 3px;
limpahan: tersembunyi;
imej latar belakang: kecerunan linear (ke kanan, kuning, kuning);
background-repeat: tidak-ulang;
saiz latar belakang: 5% 100%;
peralihan: saiz latar belakang 0.5s mudah masuk;
}
.progressBar__bar[aria-valuenow="0"] {
saiz latar belakang: 5% 100% !penting;
}
.progressBar__bar[aria-valuenow] {
ketinggian: 5px;
}
.progressBar__bar:sebelum {
kandungan: "";
jawatan: mutlak;
kiri: 0;
atas: 50%;
mengubah: terjemah(0%, -50%);
lebar: 100%;
ketinggian: 0.5pt;
warna latar belakang: putih;
}
.slick-slide {
jidar: 0px 10px;
paparan: tiada;
terapung: kiri;
ketinggian: 100%;
ketinggian min: 1px;
garis besar: tiada !penting;
}
.slick-slide.slick-loading {
paparan: tiada;
}
.slick-slide.dragging img {
pointer-events: tiada;
}
.slick-slide img {
lebar: 100%;
paparan: blok;
}
.slick-slider {
kedudukan: relatif;
paparan: blok;
saiz kotak: kotak sempadan;
-webkit-touch-callout: tiada;
-khtml-user-select: tiada;
sentuhan-tindakan: pan-y;
-webkit-tap-highlight-color: lutsinar;
}
.slick-list {
kedudukan: relatif;
paparan: blok;
limpahan: tersembunyi;
margin: 0;
padding: 0;
}
.slick-list:focus {
garis besar: tiada;
}
.slick-list.dragging {
kursor: penunjuk;
kursor: tangan;
}
.slick-track,
.slick-list {
transform: translate3d(0, 0, 0);
peralihan: semua 150ms mudah;
}
.slick-track {
kedudukan: relatif;
atas: 0;
kiri: 0;
align-item: tengah;
lebar: 100%;
}
.slick-track:sebelum ini,
.slick-track:selepas {
paparan: meja;
kandungan: "";
}
.slick-track:selepas {
jelas: kedua-duanya;
}
.slick-initialized .slick-slide {
paparan: blok;
}</pra>
<pre class="brush:html;toolbar:false;"><script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"> ;</skrip>
<script src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js"></script>
<pautan href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"/>
<pautan href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick-theme.css" rel="stylesheet"/>
<section class="cardSlider">
<div class="container">
<div class="row">
<div class="col-12">
<div class="cardSlider__listing" id="slider">
<article class="card">
Kad 1
</article>
<article class="card">
Kad 2
</article>
<article class="card">
Kad 3
</article>
<article class="card">
Kad 4
</article>
<article class="card">
Kad 5
</article>
<article class="card">
Kad 6
</article>
<article class="card">
Kad 7
</artikel>
</div>
</div>
</div>
<div class="row">
<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></pre>
Saya rasa bar kemajuan pada masa ini berfungsi dengan baik dalam kod anda.
Untuk perkara kedua yang anda nyatakan tentang peralihan yang lancar, sila alih keluar CSS berikut daripada kod anda dan cuba.
Kemas kini
Sila semak perubahan di bawah. Saya juga telah melampirkan pautan Codepen di sini: https://codepen.io/nandu1993/pen/xxjdZjd