slickを使って、画像なし、テキストだけのリストを6枚スライドさせています。しかし、widthが自動計算されるせいか、挙動がおかしいです。何枚かのスライドが重なっていたり、時々動きがカクカクしたりします。
特に、dotsは、widthが大きな数字になり、一行で表示されず二行になったりします。
どこをなおせばいいのか教えてください。
html
1<div class="slider-container"> 2 <div class="slider"> 3 <div class="flow-slide"> 4 <p class="">、、、</p> 5 <div class="flow-list"> 6 <p class="">、、、</p> 7 <p class=""><span class="marker">、、、</p> 8 <p class=""><img src=.png" alt=""></p> 9 <p class="">、、、 10 </div> 11 </div> 12 <div class="flow-slide"> 13 <p class="">、、、</p> 14 <div class="flow-list"> 15 <p class="">、、、</p> 16 <p class=""><span class="marker">、、、</p> 17 <p class=""><img src=.png" alt=""></p> 18 <p class="">、、、 19 </div> 20 21 、、、 22 </div> 23 24
css
1 2.slider-container { 3 display: none; 4 position: relative; 5 width: 84%; 6 margin: 0 auto; 7} 8.slider-container.initialized { 9 display:block; 10} 11.slider { 12 margin: 0 24px; 13 overflow: hidden; 14} 15.slick-list { 16 margin-right: -12px; /* ガター分ネガティブマージン */ 17} 18.slider-arrow { 19 position: absolute; 20 top: 50%; 21 height: 36px; 22 margin-top: -18px; /* 高さの半分だけネガティブマージン */ 23 line-height: 36px; 24 font-size: 28px; 25 cursor: pointer; 26 z-index: 10; /* 重要 */ 27} 28.slider-prev { 29 left: 0; 30} 31.slider-next { 32 right: 0; 33} 34.slick-slide { 35 margin-right: 12px; /* ガター */ 36} 37.slick-slide { 38 outline: 0; 39} 40 41.slick-slide { 42 transition: .3s ease; 43 transform: scale(.85); 44} 45.slick-current { 46 transform: scale(1); 47} 48.slick-slide:not(.slick-current) { 49 opacity: .5; 50} 51.flow-slide { 52 width: 240px; 53 height: 800px; 54} 55.flow-list{ 56 width: 240px; 57 height: 600px; 58 border: 1px solid #000; 59 background-color: #fff; 60 padding: 24px; 61} 62
js
1var $slider_container = $('.slider-container'), 2 $slider = $('.slider'); 3 4// スライド初期化時にクラスを追加 5// はじめはdisplay:noneしておき、.initializedが追加されたらdisplay:block 6$slider.on('init', function(){ 7 $slider_container.addClass('initialized'); 8}); 9 10$slider.slick({ 11 appendArrows: $slider_container, 12 prevArrow: '<div class="slider-arrow slider-prev fa fa-angle-left"></div>', 13 nextArrow: '<div class="slider-arrow slider-next fa fa-angle-right"></div>', 14 slidesToShow: 3, 15 slidesToScroll: 1, 16 centerMode: true, 17// dots:true, 18 variableWidth: true, 19 autoplay: true 20}); 21 22// スライドの横幅を小数点以下pxまで表示 23$slider.on('setPosition', function(){ 24 var slider_width = $slider.width(), 25 slide_gutter = $slider.find('.slick-slide').eq(0).css('margin-right').split('px')[0], 26 slides_num = $slider.slick('slickGetOption', 'slidesToShow'), 27 slide_width = (slider_width - slide_gutter * (slides_num - 1)) / slides_num; 28 $slider.find('.slick-active').css('width', slide_width + 'px'); 29}); 30

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/27 22:31
2018/08/28 01:21
2018/08/28 17:11 編集
2018/08/30 09:45