之前判断方法是被第几次调用时的逻辑有问题,导致二次调用时,如果出现设备宽度变化 或者二次调用时传入配置对象的话,无法正确执行。 针对这个,修改了二次调用时的代码:
- 通过滚动位置获取当前显示项的索引
- 如果设备宽度有变化,重新设置滚动项以及包裹项的宽度
- 更新配置项,并在当前索引位置重新运行。
-
理论上支持 IE8+和现代浏览器 ,还没完整测试
-
JS文件使用了0es6语法,babel转译,不需要jQuery或其他库支持。
-
css使用scss编写,插件只定义的滚动项和外层盒子的宽度,其他样式需要自己编写,可参考我自己的写法。
-
HTML结构参考 demo.html 文件,其中必须的规则有几点:
- 滚动外盒需要添加 role="list-box" 属性
- 滚动项的样式必须包含 slide-item (可在 js/carousel-es6.js 中自己改)
- 滚动指示器的盒子必须添加 role="indicators" 属性。为了方便,指示器的数量不需要和滚动项一致,脚本中会补齐。建议要么写一个,要么写数量一致。如果不需要指示器可以留空
- 上下切换按钮必须包含 data-slide=prev 和 data-slide=next 如果没有两个同时存在,没有切换功能。
通过在 HTMLElement.prototype 上添加 slide 方法供所有HTML元素调用
Element.slide({
interval : 3000, // number 滚动间隔
direction : 'left', // string 'left' of 'right'
pause : 'hover', // string 'hover'支持鼠标悬停,不需要可删除
auto : true // boolean 自动滚动,默认 true
})
在调用 slide 方法的元素上添加 .slide
类名可忽略 auto