Flexslider <li>高度等于移动浏览器上的最高</li> <li> </li>

时间:2013-04-01 21:18:32

标签: javascript jquery html css flexslider

我试图找出Flexslider的一个问题,只有当我在Safari Mobile等移动浏览器上测试时才会出现这个问题。

所有&lt; li&gt;容器与最高的&lt; li&gt;具有相同的高度,即使没有足够的内容来证明它们具有相同的高度。

我不知道如何获取此屏幕截图,因为它在桌面浏览器上运行良好,但在移动浏览器上却无法正常工作。这是一个小提琴,显示它在我在桌面浏览器上查看时的预期效果,容器的高度根据内容的大小调整。

http://jsfiddle.net/CsCyh/

这是hml:

<div class="flexslider">
  <ul class="slides">
    <li>
      <img src="http://i.imgur.com/YSVlz2Z.jpg" />
      <h2><a href"#">First Link Here</a></h2>
      <p>Some text here that could be a message</p>
      <a href="#" data-role="button" data-icon="arrow-r" data-iconpos="right">Another Link Here</a>
    </li>
    <li>
      <img src="http://i.imgur.com/YSVlz2Z.jpg" />
      <h2><a href"#">Second Link Here</a></h2>
      <p>Some text here that could be a message</p>      
    </li>
    <li>
     <img src="http://i.imgur.com/YSVlz2Z.jpg" />
     <h2><a href"#">Third Link Here</a></h2>
     <p>Some text here that could be a message</p>     
    </li>
  </ul>
</div>

这是flexslider的JS:

$('.flexslider').flexslider();

5 个答案:

答案 0 :(得分:3)

嗯,我前一段时间遇到过这个问题。我希望这有帮助!

var evenSliderHeight = function(slideContainer, slideItem) {
  var slider_height = 0;
  var $slider_slide = $(slideContainer).find(slideItem);
  $slider_slide.each(function() {
    var __height = $(this).outerHeight(true);
    if ( slider_height < __height ) {
       slider_height = __height;
    }
  });
  $slider_slide.css('min-height', slider_height);
};
evenSliderHeight('.flexslider-container', '.slide');

答案 1 :(得分:2)

$('.flexslider').flexslider({
  after: function(slider){
    currHeight = $('.flexslider').find('.slides > li').eq(slider.currentSlide).outerHeight(true);
    $('.flexslider').height(currHeight);
  }
});

JSFiddle更新http://jsfiddle.net/CsCyh/14/


答案 2 :(得分:2)

对于在2019/2020年仍然存在此问题的任何人,请在Flexslider docs处查看名为“ smoothHeight”的新属性

我通过将“ smoothHeight”设置为true来解决问题。

$('.sliders').flexslider({
    animation: 'slide',
    smoothHeight: true,
    controlNav: false,
    customDirectionNav: $('.js-slider-control button'),
});

答案 3 :(得分:0)

将此添加到调用滑块的脚本中。

animateHeight: false,

例如:

$(window).load(function(){ if ( $('#content-slider-wrap').length == 0 ) return false
    $('#content-slider-wrap').flexslider({
        animation:"fade",
        slideshow: true,
        directionNav: true,
        animateHeight: false,
        controlNav:false ,
........... etc etc

答案 4 :(得分:0)

这是仅CSS解决方案。已针对animation: "slide"属性进行了测试:

.flexslider .flex-viewport { display: flex; flex-direction: column; }
.flexslider .flex-viewport > ul { display: flex; }
.flexslider .flex-viewport > ul > li { display: flex !important; }

!important会覆盖flexslider生成为内联样式的display:block;属性。现在,根据最高的幻灯片,所有面板的高度都相等。