Switchable Widget
Switchable 提供了切换的基本操作,并通过参数配置实现了自动播放,循环,切换等操作,并提供不同的特点封装成了Tabs, Slide, Carousel, Accordion模块。用户可以根据自己的需求引用不同的模块。
Switchable 继承了 widget,可使用其中包括 base、class、events、attribute、aspect 的属性和方法。
配置说明 triggersString|Array
触发器列表, 支持直接传入选择器,也可以是元素数组。
panelsString|Array
面板列表,支持直接传入选择器,也可以是元素数组。
注意: 如果页面上有多个 Switchable 组件, triggers 和 panels 的 selector 最好写的更加精确些, 比如 triggers: '#banner .ui-switchable-nav li'
,
而不是 triggers: '.ui-switchable-nav li'
, 这样能避免多个组件引用 triggers/panels 的冲突.
String
触发类型,默认hover
.还可以选择click
Number
默认为100
, 触发器延迟时间,单位为毫秒。
String
触发器被选中时的class,默认ui-switchable-active
。
Number
初始化时,自动切换到指定面板,默认为0
,也就是第一个。
Number
步长,表示每次切换时需要间隔多少个panels, 默认为1
。
Array
可见视图区域的大小. 如果 css 中不设置 panel 的高宽或初始没有 panel , 则需要这里手工指定大小, 默认为 [].
当 panel 的高宽 css 中不指定时,需要设置 viewSize 为单个 panel 的高宽.
Boolean
是否自动切换,默认为false
, 开启后,不需要触发触发器,可以实现自动播放。
Number
自动播放间隔时间, 以毫秒为单位, 默认为 3000
。
Boolean
是否循环切换, 默认为 true
, 是否循环播放, 当切换到最初/最后一个时, 是否切换到最后/最初一个。
String
动画效果函数, 默认没有特效, 可取 scrollx
, scrolly
, fade
或者直接传入自定义效果函数.
Number
默认为 500
, 以毫秒为单位, 动画的时长.
String|Function
动画效果,目前支持,easeNode
默认, easeIn
, easeOut
, easeBoth
, easeInStrong
, easeOutStrong
, easeBothStrong
, elasticIn
, elasticOut
, elasticBoth
, backIn
, backOut
, backBoth
, bounceIn
, bounceOut
, bounceBoth
。
目前项目支持data-api的形式配置相关属性,并以role的形式配置到项目中,主要有下面6个role. 前面4个是所有组件均有效,后面2个,只在 Carousel 组件中生效.
其中前面4个仅在在属性配置中没有发现对应的panels
和 triggers
相关配置时,才会生效。
并且如果同时配置了下面的role, panel的优先级高于content. trigger高于nav.
panel
单个面板
content
面板列表元素
trigger
触发器
nav
触发器容器
<!-- 容器元素 --> <div id="J_Slide"> <span data-role="prev">上一页</span> <ul class="ui-switchable-nav" data-role="nav"> <li data-role="trigger">标题 A</li> <li data-role="trigger">标题 B</li> <li data-role="trigger">标题 C</li> <li data-role="trigger">标题 D</li> <li data-role="trigger">标题 E</li> </ul> <div class="ui-switchable-content" data-role="content"> <!-- 面板列表 --> <div data-role="panel">内容 A</div> <div style="display: none" data-role="panel">内容 B</div> <div style="display: none" data-role="panel">内容 C</div> <div style="display: none" data-role="panel">内容 D</div> </div> <span data-role="next">下一页</span> </div>
prev
上一页 (仅在Carousel组件生效)
next
下一页 (仅在Carousle组件中生效)
有些属性在对应类型的模块可能有不同的默认值,还有一些特有的配置属性。
Accordion (手风琴) triggerTypeString
在此模块中,默认值为click
Boolean
是否支持多个面板展开,默认为false
。
Boolean
是否支持循环切换。默认true
selector
指定 前一个
触发器. 默认会加上类名ui-switchable-prev-btn
。
selector
指定 后一个
触发器. 默认会加上类名 ui-switchable-next-btn
。
String
prev/next 按钮不可用状态时的样式类
Slide (卡盘) autoplayBoolean
是否自动切换,默认为true
。
Boolean
是否循环切换,默认为true
。
配置和基础类相同。
elementHTMLElement
容器元素。
obj.get('triggers')Array
触发器集合, 可能为空。
obj.get('panels')Array
切换面板结合,可以为空值。
contentHTMLElement
存放面板的容器元素。
lengthNumber
只读, 触发器或面板的个数。
.switchTo(toIndex, fromIndex)切换到某个视图。 toIndex {Number* 要切换到的项。 fromInex {Number* 当前项.
.prev()切换到上一视图。
.next()切换到下一视图。
.stop()停止自动切换。只有设置了 autoplay true 时有效。
.start()开始自动切换。
.destroy()组件销毁。
组件触发事件在组件运行中,会触发相关事件,使用者可以根据自己的需要去监听对应的事件
switch面板切换前触发。
instance.on('switch', function(toIndex, fromIndex) { }); switched
面板切换后触发。
instance.on('switched', function(toIndex, fromIndex) { }); change:activeIndex
面板改变时触发。
instance.on('change:activeIndex', function(toIndex, fromIndex) { }); 最佳实践
直接使用:
seajs.use(['tabs'], function(Tabs) { var t = new Tabs({ element: '#demo1', switchTo: 1, effect: 'fade' }); });
也可以适用自动渲染。详情可以参考examples/autorender.html
版权声明:
1、该文章(资料)来源于互联网公开信息,我方只是对该内容做点评,所分享的下载地址为原作者公开地址。2、网站不提供资料下载,如需下载请到原作者页面进行下载。