gpt4 book ai didi

javascript - 在窗口大小调整时重新加载 bxSlider

转载 作者:行者123 更新时间:2023-12-03 06:31:00 37 4
gpt4 key购买 nike

我在我的网站上使用 bxSlider。 slider 应在窗口调整大小时重新加载。通过代码,我实际上使用 slider 在加载和调整大小时加载。但 slider 没有重新加载,而是第二次加载。所以我有 2 个已加载的 slider 。我只需要重新加载 slider 而不需要再次加载。

$(window).on('load resize', function () {
/* BX SLIDER */
$('#bannerslider').bxSlider({
captions: true
});
});

最佳答案

使用了 bxSlider API 的 2 个回调:

  • onSliderResize() 当resize事件被触发时,reloadBX()会调用.reloadSlider,将当前索引存储在localStorage 并检索它以维护索引位置,而不是在重新加载后从头开始。

  • onSliderLoad() 当触发 load 事件时,checkBX() 会检查 bxSlider 的高度,如果是折叠的(0px),则会调用redrawSlider()。这将以图形方式强制重置,直到成功强制 bxSlider 唤醒。

此代码片段运行速度很快,因此我设置了控制台以显示它正在运行。当然,以全页模式查看它。如果由于某种原因代码片段被损坏(有时会损坏),您可以在 Plunker 测试演示。

片段

<!doctype html>
<html>

<head>
<meta charset="utf-8">
<title>bxSlider Resize</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/bxslider/4.2.5/jquery.bxslider.css">
<style>
img {
margin: 0 auto;
display: block;
}
/* Ruleset makes img centered. */
</style>
</head>

<body>
<ul class='bx'>
<li>
<img src="http://placehold.it/640x480/000/fff?text=1">
</li>
<li>
<img src="http://placehold.it/640x480/00f/fc0?text=2">
</li>
<li>
<img src="http://placehold.it/640x480/8de/fa6?text=3">
</li>
<li>
<img src="http://placehold.it/640x480/cb9/0ff?text=4">
</li>
<li>
<img src="http://placehold.it/640x480/fff/000?text=5">
</li>
</ul>
<input id='cache' type='hidden'>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/bxslider/4.2.5/jquery.bxslider.min.js"></script>
<!-- The 3 console.logs facilitates debugging.
//] They are optional and are not essential for overall functioning.//-->
<script>
var bx = $('.bx').bxSlider({
captions: true,
// onResize
onSliderResize: reloadBX,
// onLoad
onSliderLoad: checkBX
});

/*
Resize Callback
*/ // Stores the current slide index.
function reloadBX(idx) {
localStorage.cache = idx;
console.log('Reload on Slide: ' + idx);
// Reloads slider,
///goes back to the slide it was on before resize,
///removes the stored index.
function inner(idx) {
setTimeout(bx.reloadSlider, 0);
var current = parseInt(idx, 10);
console.log('RELOADED');
bx.goToSlide(current);
localStorage.removeItem("cache");
}
}

/*
Load Callback
*/ // If the slider height is collapsed,
/////invoke a repaint and stay on current index.
function checkBX(idx) {
var vp = $('.bx-viewport').height();
console.log('View-port Height: ' + vp + 'px');
while (vp <= 0) {
bx.redrawSlider();
console.log('REPAINT');
}

}
</script>
</body>

</html>

关于javascript - 在窗口大小调整时重新加载 bxSlider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38453377/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com