我正在使用jQuery lightSlider作为图片滑块。我想在bootstrap药片里面有滑块(每个药丸一个滑块)。不过,我发现了以下情况:在第一个药丸中滑块是可以的。在第二个药丸中,不显示滑块内容(调整窗口大小会调出滑块内容!)。我看不出如何解决这个问题。任何帮助都将深表感谢。
我的(简体)html:
<div>
<ul class="nav nav-pills">
<li class="active"> <a data-toggle="pill" id="pill1" href="#s1">Pill 1</a>
</li>
<li> <a data-toggle="pill" id="pill2" href="#s2">Pill 2</a>
</li>
</ul>
</div>
<div class="tab-content">
<div class="col-md-12 tab-pane fade in active" id="s1">
<ul id="slider-1">
<li>
<p>one</p>
</li>
<li>
<p>two</p>
</li>
<li>
<p>tree</p>
</li>
</ul>
</div>
<div class="col-md-12 tab-pane fade active" id="s2">
<ul id="slider-2">
<li>
<p>uno</p>
</li>
<li>
<p>dos</p>
</li>
<li>
<p>tres</p>
</li>
</ul>
</div>
</div>
javascript:
function initSlider(sliderId) {
$('#'+sliderId).lightSlider({
item:2,
loop:false,
slideMove:1
});
}
initSlider('slider-1');
initSlider('slider-2');
Jsfiddle再现问题:https://jsfiddle.net/sedtjchs/4/
感谢您的帮助!
答案 0 :(得分:2)
答案 1 :(得分:0)
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
$('#slider-2').lightSlider({
item:4,
loop:false,
slideMove:2,
pager: false,
easing: 'cubic-bezier(0.25, 0, 0.25, 1)',
speed:600,
responsive : [
{
breakpoint:480,
settings: {
item:2,
slideMove:1
}
}
]
}).refresh();
});
答案 2 :(得分:0)
我有同样的问题,但Alex的解决方案对我不起作用,因为我的标签包装器没有固定的高度,所以它会在第一次加载时在第一个标签下显示空白间隙。
ThànhNguyễn的解决方案对我有用。基本上每次单击选项卡导航时都会刷新滑块,因此LightSlider将能够计算活动容器高度。
这是完整的脚本:
$(document).ready(function() {
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
$('#slider-2').lightSlider({
item:4,
loop:false,
slideMove:2,
pager: false,
easing: 'cubic-bezier(0.25, 0, 0.25, 1)',
speed:600,
responsive : [
{
breakpoint:480,
settings: {
item:2,
slideMove:1
}
}
]
}).refresh();
});
});