前提・実現したいこと
スリックスライダーを使ってTOPページを実装しているのですが、dots部分をプログレスバーに変更したいです。
イメージはこんな感じです。
01のバーが100%になったら画像が切り替わり、02のバーがスタートします。
現在はこのような感じになっていて、スライダーに合わせて色も変わります。
このサイトを参考に作っています。
https://peaceday.jp/2019/
発生している問題・エラーメッセージ
スライダーは正常に動いていて、エラーは出ていません。
該当のソースコード
html
1<div class="slider"> 2 <div> 3 4 中略 5 6 <img alt="Alt" src="images/top_kv1-1.jpg" /> 7 </div> 8 <div> 9 10 中略 11 12 <img alt="Alt" src="images/top_kv1-1.jpg" /> 13 </div> 14 <div> 15 16 中略 17 18 <img alt="Alt" src="images/top_kv1-1.jpg" /> 19 </div> 20 <div> 21 22 中略 23 24 <img alt="Alt" src="images/top_kv1-1.jpg" /> 25 </div> 26</div>
css
1/* Slider */ 2.slider-wrapper{ 3 position: relative; 4 overflow: hidden; 5 width: 100%; 6 7 } 8 9 10 .slick-list { 11 position: relative; 12 overflow: hidden; 13 display: block; 14 margin: 0; 15 padding: 0; 16 } 17 18 .slick-list:focus { 19 outline: none; 20 } 21 22 .slick-list.dragging { 23 cursor: pointer; 24 cursor: hand; 25 } 26 27 .slick-slider .slick-list, 28 .slick-track, 29 .slick-slide, 30 .slick-slide img { 31 height: 100vh; 32 object-fit: cover; 33 } 34 35 .slick-track { 36 position: relative; 37 left: 0; 38 top: 0; 39 display: block; 40 zoom: 1; 41 } 42 43 .slick-track:before, 44 .slick-track:after { 45 content: ""; 46 display: table; 47 } 48 49 .slick-track:after { 50 clear: both; 51 } 52 53 .slick-loading .slick-track { 54 visibility: hidden; 55 } 56 57 .slick-slide { 58 float: left; 59 height: 100%; 60 min-height: 1px; 61 display: none; 62 } 63 64 .slick-slide img { 65 width: 100%; 66 height: 100vh; 67 margin-top: 82px; 68 } 69 70 .slick-slide.dragging img { 71 pointer-events: none; 72 width: 100%; 73 height: 100vh; 74 } 75 76 .slick-initialized .slick-slide { 77 display: block; 78 } 79 80 .slick-loading .slick-slide { 81 visibility: hidden; 82 } 83 84 .slick-vertical .slick-slide { 85 display: block; 86 height: auto; 87 border: 1px solid transparent; 88 } 89 90 .slick-slide > .slick-slider-img { 91 position: relative; 92 display: block; 93 width: 100%; 94 height: 100vh; 95 } 96 97 .slick-slide .image { 98 /*height: 180px;*/ 99 height: 100vh; 100 width: 100%; 101 margin: 0 auto; 102 } 103 104 .slick-slide img { 105 display: block; 106 width: 100%; 107 height: 100vh; 108 } 109 110 .slick-slide img.slick-loading { 111 display: none; 112 } 113 114 115 .slick-prev{ 116 width: 65px; 117 border: none; 118 border-radius: none; 119 position: absolute; 120 top: 50%; 121 transform: translateY(-20%); 122 left: 115px; 123 padding: 0.25em 0.5em; 124 z-index: 400; 125 } 126 127 .slick-next{ 128 width: 65px; 129 border: none; 130 border-radius: none; 131 position: absolute; 132 top: 50%; 133 transform: translateY(-20%); 134 right: 115px; 135 padding: 0.25em 0.5em; 136 z-index: 400; 137 } 138 139 140 141 142 143 144 145 146@media screen and (max-width: 767px) { 147 148 .slick-slide img{ 149 margin-top: 62px; 150 } 151 152 .slick-next{ 153 display: none!important; 154 } 155 156 .slick-prev{ 157 display: none!important; 158 } 159 } 160 161 162 163 164 165 166 167 168 .progress-bars { 169 position: absolute; 170 top: 80%; 171 left: 0; 172 right: 0; 173 overflow: hidden; 174 width: 100%; 175 max-width: 1200px; 176 margin: 0 auto; 177 display: flex; 178 padding-bottom: 10px; 179 } 180 181 .progress-bar-box { 182 height: 2px; 183 width: 25%; 184 margin: 10px; 185 font-size: 1.2rem; 186 font-weight: bold; 187 188 span{ 189 display: block!important; 190 margin-top: 10px; 191 } 192 193 } 194 195 .progress-bar-box:nth-child(even) { 196 background-color: #aaa; 197} 198 199.progress-bar-box:nth-child(odd) { 200 background-color: #aaa; 201} 202 203 204 .bar { 205 height: 100%; 206 width: 0px; 207 } 208
js
1// 2// Slider ------------------------------ 3// 4 5 6$(document).ready(function() { 7 8 const barColors = ['#fff', '#fff', '#fff','#fff']; 9 10 $.fn.startBar = function(index) { 11 this 12 .eq(index) 13 .css({ backgroundColor: barColors[index]}) 14 .animate({ width: '100%' }, 3400 ); 15 } 16 17 $('.slider').slick({ 18 autoplay: true, 19 arrows: true, 20 dots: false, 21 speed: 800, 22 autoplaySpeed: 3000, 23 prevArrow: '<img src="images/slick-prev.svg" class="slide-arrow slick-prev">', 24 nextArrow: '<img src="images/slick-next.svg" class="slide-arrow slick-next">', 25 adaptiveHeight: true 26 }).on('afterChange', function(event, slick, currentSlide) { 27 if (currentSlide === 0) 28 $('.bar').startBar(currentSlide); 29 $('.bar').css({width: 0}).startBar(currentSlide); 30 $('.bar').css({width: 0}); 31 }); 32 33 $('.bar').startBar(0); 34 35}); 36
補足
二週目からこのようになってしまいます。
回答1件
あなたの回答
tips
プレビュー