javascript - 限制光滑滑块上的点(无 jQuery)
问题描述
如果我的滑块包含超过 30-40 个图像,这些点会不断加起来形成多条线。我的目标是获得类似 instagram 点导航的东西。当您点击一个点时,您会收到正确的图像,而新激活的活动点会在中间滑动。
我知道 slick-slider 可以选择 slidesToScroll 来划分图像(块滚动而不是 1 比 1),这实际上可以减少你的点,但对移动设备没有帮助。
jQuery 不包含在项目中,所以我想查看此请求的一些 JS 或 JSX 结果。
这是我想要的一个例子
https://codepen.io/nazarkomar/pen/RdRjqJ
$(document).ready(function() {
var slider = $('.main-slider');
slider.slick({
dots: true
});
function loadSliderDotClasses(stickSlider) {
var dot = stickSlider.find('.slick-dots li.slick-active'),
dotSize1 = 'dot-size-1',
dotSize2 = 'dot-size-2',
dotSize3 = 'dot-size-3';
stickSlider.find('.slick-dots li').each(function() {
$(this).removeClass(dotSize1).removeClass(dotSize2).removeClass(dotSize3);
});
dot.prev().prev().prev().addClass(dotSize1);
dot.prev().prev().addClass(dotSize2);
dot.prev().addClass(dotSize3);
dot.next().addClass(dotSize3);
dot.next().next().addClass(dotSize2);
dot.next().next().next().addClass(dotSize1);
}
loadSliderDotClasses(slider);
slider.find('.slick-dots li').on('click', function() {
loadSliderDotClasses(slider);
});
slider.on('swipe', function(event, slick, direction){
loadSliderDotClasses(slider);
});
});
https://codepen.io/nazarkomar/pen/RdRjqJ
是否可以将其转换为 JavaScript?
解决方案
这是我不花时间就能得到的最接近的结果。基本上,您需要的只是 jQuery 的一些原生 JavaScript 替代品。这应该足以让你开始。
- 替换
$(element).remove()
和$(element).add()
替换classList
_ - 检测
.slick-active
节点的索引Array.from(element.parentNode.children).indexOf(element)
- 循环遍历
.slick-dots li
元素数组以选择性地应用类,具体取决于每个与活动点的索引的关系。
推荐阅读
- python - 如何将 jq 的值行转换为 JSON 输出?
- reactjs - 如何使用 Mobx6 制作 RootStore
- python-3.x - 1 值与先前元素的类型不同 python pandas
- image - 当我设置 LoggingMode = 'disk' 时,为什么 MATLAB videoinput 会写入 RAM?
- python - 尽管存在元素,但 selenium WebDriverWait for element to appear 已超时
- python - 如何修复错误“dict”对象没有属性“to_csv”
- javascript - 如何通过使用 javascript 函数按下按钮将相同的图像放置在 4 个单独的 div 中 4 次?
- javascript - 如何在给定周和年的情况下获取工作日的日期
- python - 在连接它们之前删除每个 csv 文件的前两行 Pandas
- python - 将(邻接)矩阵的列和行排序为上三角