javascript - 在 Slick.js 上如何计算当前可见的幻灯片?
问题描述
我的情况是我在 100% div 上显示一些宽度可变的照片,因此它可以调整到浏览器宽度。我在 centerMode 中设置了 slick.js,现在我想设置部分可见的“边缘”图像的样式。
为此,我需要知道哪些幻灯片可见或不可见。
我知道如果您将 slidesToShow 用于正确的数字,您可以设置“slick-active”的 css 样式,但问题是我的容器总宽度取决于用户屏幕尺寸,而且我的幻灯片宽度可变,所以我不知道有多少幻灯片来显示。
如何轻松计算当前可见或不可见的幻灯片?(对我来说,部分可见应标记为隐藏)
$(".slider").slick({
focusOnSelect: true,
centerMode: true,
centerPadding: '10%',
slidesToShow: 2,
arrows: false,
infinite: true,
variableWidth: true
});
.slider div {
padding: 0 8px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.5.9/slick.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.5.9/slick.css">
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.5.9/slick-theme.css">
<div class="slider">
<div><img src="https://via.placeholder.com/300x200"></div>
<div><img src="https://via.placeholder.com/400x200"></div>
<div><img src="https://via.placeholder.com/100x200"></div>
<div><img src="https://via.placeholder.com/250x200"></div>
<div><img src="https://via.placeholder.com/300x200"></div>
<div><img src="https://via.placeholder.com/400x200"></div>
</div>
解决方案
我在这里编写代码以获取当前活动(显示)幻灯片列表,并获取计数,并在幻灯片更改时执行一些操作:Fiddle Demo
$(".slider").slick({
focusOnSelect: true,
centerMode: true,
centerPadding: '10%',
slidesToShow: 2,
arrows: false,
infinite: true,
variableWidth: true,
});
doMyAction($(".slider").slick('slickCurrentSlide'));
$(".slider").on('swipe', function(event, slick, direction){
doMyAction($(".slider").slick('slickCurrentSlide'));
});
function doMyAction(currentSlick){
// your acction for current slick
console.log('Current Slick:', currentSlick);
}
console.log(getActiveSlickLength());
function getActiveSlickLength()
{
return $('.slick-active').length;
}
console.log(getActiveSlickIndexList());
function getActiveSlickIndexList()
{
var indexes = [];
$.each($('.slick-active'), function(key, value){
indexes[key] = $(value).data('slick-index');
});
return indexes;
}
.slider div {
padding: 0 8px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.5.9/slick.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.5.9/slick.css">
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.5.9/slick-theme.css">
<div class="slider">
<div><img src="https://via.placeholder.com/300x200"></div>
<div><img src="https://via.placeholder.com/400x200"></div>
<div><img src="https://via.placeholder.com/100x200"></div>
<div><img src="https://via.placeholder.com/250x200"></div>
<div><img src="https://via.placeholder.com/300x200"></div>
<div><img src="https://via.placeholder.com/400x200"></div>
</div>
我在更改活动 slick 时使用 swipe 事件来执行操作,以便您检测或更新每次滑动到您的操作的列表,并且可以访问或更新其他选项,因为您希望依赖滑动或任何其他代码想法。
注意:此解决方案将根据需要返回当前活动的 slick 幻灯片,但不确定是否使用 slick.js 的最佳解决方案。
推荐阅读
- java - 组件的 IText 可视化
- node.js - node.js 绑定回调问题
- java - 如何使用 ModelMapper 映射对象树
- python -
使用Python生成html时如何附加多个文本行后跟单个标记 - perl - 无法正确使用 Exporter
- c# - 我可以将 CustomXmlPart 添加到我的演示文稿而不将其 XML 存储在文件中吗?
- javascript - Sequelize.js - “不关联”
- r - 将 -1,0,1 分配给数字和倍数及其等级
- python - 如何从谷歌趋势中提取标题/文本并通过 Selenium 和 Python 打印它们
- python - Python 的 os.path.getsize() 是否具有真正的字节分辨率?