亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

顯示 2 張幻燈片時,光滑的旋轉木馬自適應高度不起作用

顯示 2 張幻燈片時,光滑的旋轉木馬自適應高度不起作用

天涯盡頭無女友 2022-12-09 17:09:22
我正在建立一個帶有一些滑塊的網站,并為此使用Slick。通常,對于幻燈片,當我一次顯示 1 張幻燈片時,自適應高度有效,但當同時顯示 2 張幻燈片時,它不起作用。這是JSFiddle中復制的問題。這是 JavaScript:var options = {  slidesToShow: 2,  slidesToScroll: 2,  dots: true,  arrows: false,  dotsClass: 'slick-dots slick-dots-black',  adaptiveHeight: true,};$('.slider').slick(options);我一直在谷歌搜索這個問題,似乎其他人也有類似的問題,但我找不到解決方案。任何想法表示贊賞!
查看完整描述

1 回答

?
肥皂起泡泡

TA貢獻1829條經驗 獲得超6個贊

是的,看起來 slick 只允許adaptiveHeight在單個滑動輪播上使用。

在它的文檔adaptiveHeight中說這個......

啟用單幻燈片水平輪播的自適應高度。

有趣的是,我從沒想過 slick 會有這種行為,我假設自適應高度在所有情況下都有效。但顯然不是。

這有點 hacky,但可能涵蓋您網站的解決方案,以在多幻燈片滑塊上啟用自適應高度。這基本上找到了當前顯示的最高幻燈片,并為.slick-list. 在這個元素上使用 css transition 會產生光滑的adaptiveHeight效果。

我們還有一個.on('resize')事件會重新運行滑塊高度檢查,以防幻燈片內容流動并且幻燈片高度響應變化。

閱讀我在腳本中的評論,看看發生了什么......

另請參閱此處的小提琴... https://jsfiddle.net/joshmoto/1a5vwr3j/

// my slick slider options

var options = {

  slidesToShow: 2,

  slidesToScroll: 2,

  dots: true,

  arrows: false,

  dotsClass: 'slick-dots slick-dots-black',

  adaptiveHeight: true,

};



// my slick slider as constant object

const mySlider = $('.slider').on('init', function(slick) {


  // on init run our multi slide adaptive height function

  multiSlideAdaptiveHeight(this);


}).on('beforeChange', function(slick, currentSlide, nextSlide) {


  // on beforeChange run our multi slide adaptive height function

  multiSlideAdaptiveHeight(this);


}).slick(options);



// our multi slide adaptive height function passing slider object

function multiSlideAdaptiveHeight(slider) {


  // set our vars

  let activeSlides = [];

  let tallestSlide = 0;


  // very short delay in order for us get the correct active slides

  setTimeout(function() {


    // loop through each active slide for our current slider

    $('.slick-track .slick-active', slider).each(function(item) {


      // add current active slide height to our active slides array

      activeSlides[item] = $(this).outerHeight();


    });


    // for each of the active slides heights

    activeSlides.forEach(function(item) {


      // if current active slide height is greater than tallest slide height

      if (item > tallestSlide) {


        // override tallest slide height to current active slide height

        tallestSlide = item;


      }


    });


    // set the current slider slick list height to current active tallest slide height

    $('.slick-list', slider).height(tallestSlide);


  }, 10);


}



// when window is resized

$(window).on('resize', function() {


  // run our multi slide adaptive height function incase current slider active slides change height responsively

  multiSlideAdaptiveHeight(mySlider);


});

body {

  background: skyblue;

  margin: 0;

  padding: 20px;

}


.slick-list {

  transition: all .5s ease;

}


.aslide {

  background: yellow;

}

<div class="slider">

  <div class="aslide">1</div>

  <div class="aslide">2<br/>2<br/>2</div>

  <div class="aslide">3<br/>3<br/>3<br/>3<br/>3</div>

  <div class="aslide">4<br/>4<br/>4</div>

  <div class="aslide">5</div>

  <div class="aslide">6<br/>6<br/>6</div>

  <div class="aslide">7<br/>7<br/>7<br/>7<br/>7</div>

  <div class="aslide">8<br/>8</div>

  <div class="aslide">9<br/>9<br/>9<br/>9<br/>9<br/>9</div>

  <div class="aslide">10<br/>10<br/>10</div>

  <div class="aslide">11</div>

  <div class="aslide">12<br/>12</div>

</div>


<link href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick-theme.min.css" rel="stylesheet" />

<link href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.css" rel="stylesheet" />

<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>



查看完整回答
反對 回復 2022-12-09
  • 1 回答
  • 0 關注
  • 152 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號