相比火热的jquery,mootools更有他功能强大之处。
ShopEx基于mootools框架自主封装研发的switchabl效果库更是集众千宠爱于一身,区区几百行代码的switchable,高效的封装了市面上流行的各种效果。
这可是九阳神功心法的精髓!
熬过了这一关,即便你不在ShopEx模板界混饭吃,到任何一处,你都有足够的底气应付任何前端效果。
神马?你还需要mootools制作更牛X的效果?点击这里提出需求,我们会进行评估和制作!让你的神马都成为浮云.....
当然我们的switchable也是开源,欢迎大家共同开发,造福人类。
现在你只需要简单的效果调用和参数配置,即可轻松实现各种炫目的互动效果!我们来快速体验一下吧!
Switchable 版本介绍 基于Mootools1.3.2版本以上:
Switchable效果使用方法
实例下载 Mootools实例
Silde需要的DOM结构 - Example
<div class="Auto_Widget"> (注意switchable任何组件调用必须加入class="Auto_Widget")
<ol class="switchable-content">
<li class=""><img alt="" src="assets/01.jpg"/></li>
<li class="hidden "><img alt="" src="assets/02.jpg"/></li>
<li class="hidden "><img alt="" src="assets/03.jpg"/></li>
<li class="hidden "><img class="img-lazyload" alt="" src="assets/04.jpg"/></li>
<li class="hidden "><img alt="" src="assets/05.jpg"/></li>
</ol>
<ul class="switchable-triggerBox">
<li class="active">1</li>
<li class="">2</li>
<li class="">3</li>
<li class="">4</li>
<li class="">5</li>
</ul>
</div>
Silde组件调用方法 - Example
<div id="Slide" class="Auto_Widget" data-widget-type="Switchable" data-widget-config ="{
autoplay:true,
effect:'scrollx',
duration:1000,
interval:4000,
activeClass:'active',
circular:false,
eventType:'click'
}">
<!-- 相关Dom结构 -->
</div>
Silde配置参数表格
| 参数名 | 参数含义 | 参数默认值 |
|---|---|---|
| eventType | 支持事件类型点击触发或者鼠标移动 (mouse或click) | mouse |
| autoplay | 是否自动播放 (true/false) | false |
| interval | 间隔时间 | 3000(单位:毫秒) |
| effect | 动画类型 (fade-渐隐,scrolly-y轴滚动,scrollx-x轴滚动,none-直接切换) | none |
| circular | 是否开始循环滚动 (true/false) | false |
| duration | 动画时间,如:从图片1渐变到图片2的时间 | 500(单位:毫秒) |
| hasTriggers | 是否有触点 (true/false) | true |
| triggersBox | 触点元素的父元素 (triggersBox和triggers有一即可) | .switchable-triggerBox |
| triggers | 触点元素的class (triggersBox和triggers有一即可) | .switchable-trigger |
| content | 需要显示元素的父元素 (panels和content有一即可) | .switchable-content |
| panels | 需要显示的元素 (panels和content有一即可) | .switchable-panel |
| activeIndex | 默认显示的元素 | 0 |
| activeClass | 当前选中触点的class | active |
| steps | 每次切换多少个触点的内容 | 1 |
| pauseOnHover | 鼠标悬停停止播放 (true/false) | true |
| islazyload | 是否执行延迟加载 (true/false) | true |
| lazyDataType | 延迟加载内容的标签名称 (textarea/img) | textarea |
| textarea | 延迟加载textarea的class名称 | textarea-lazyload |
| execScript | 是否执行textarea中脚本 (true/false) | true |
| img | 延时加载图片地址的属性名 <img src="loading.gif" img-lazyload="01.jpg" /> | img-lazyload |
Tab需要的DOM结构
<div class="Auto_Widget"> (注意switchable任何组件调用必须加入class="Auto_Widget")
<ul class="switchable-triggerBox">
<li class="active"><span>郎朗春意</span></li>
<li>夏日炎炎</li>
<li>秋高气爽</li>
<li>冬至寒风</li>
</ul>
<div class="switchable-content">
<div class="switchable-panel">
郎朗春意,焕发着春天的气息
<p> - 在当前 trigger 中 mouseover/mouseout, click, focus, 不触发<br />
- 鼠标快速滑过非当前 trigger, 不触发<br />
- mouseover 到非当前 trigger, 停留时间到达延迟时,触发<br />
- click 或 Tab 切换到 trigger, 立即触发<br />
- beforeSwitch/onSwitch 事件的触发<br />
- 延迟的内容能正确加载
</P>
</div>
<div class="switchable-panel" style="display: none;">这夏天,出门是烤箱,进门是冰箱</div>
<div class="switchable-panel" style="display: none;">秋天还真的挺凉爽</div>
<div class="switchable-panel" style="display: none;">冬天来了,雪花飘了</div>
</div>
</div>
Tab组件调用方法<div id="Tabs1" class="Auto_Widget" data-widget-type="Tabs" data-widget-config="{
autoplay:true,
effect:'scrolly',
interval:2000}
">
<!-- 相关Dom结构 -->
</div>
Tab配置参数表格| 参数名 | 参数含义 | 参数默认值 |
|---|---|---|
| eventType | 支持事件类型点击触发或者鼠标移动 (mouse或click) | mouse |
| autoplay | 是否自动播放 (true/false) | false |
| interval | 间隔时间 | 3000(单位:毫秒) |
| circular | 是否开始循环滚动 (true/false) | false |
| duration | 动画时间,如:从图片1渐变到图片2的时间 | 500(单位:毫秒) |
| hasTriggers | 是否有触点 (true/false) | true |
| triggersBox | 触点元素的父元素 (triggersBox和triggers有一即可) | .switchable-triggerBox |
| triggers | 触点元素的class (triggersBox和triggers有一即可) | .switchable-trigger |
| content | 需要显示元素的父元素 (panels和content有一即可) | .switchable-content |
| panels | 需要显示的元素 (panels和content有一即可) | .switchable-panel |
| activeIndex | 默认显示的元素 | 0 |
| activeClass | 当前选中触点的class | active |
| steps | 每次切换多少个触点的内容 | 1 |
| pauseOnHover | 鼠标悬停停止播放 (true/false) | true |
| islazyload | 是否执行延迟加载 (true/false) | true |
| lazyDataType | 延迟加载内容的标签名称 (textarea/img) | textarea |
| textarea | 延迟加载textarea的class名称 | textarea-lazyload |
| execScript | 是否执行textarea中脚本 (true/false) | true |
| img | 延时加载图片地址的属性名 <img src="loading.gif" img-lazyload="01.jpg"> | img-lazyload |
实例展示
Accordion需要的DOM结构
<div class="Auto_Widget">
<div class="switchable-trigger active"><i class="moo-icon"></i><h3>标题A</h3></div>
<div class="switchable-panel">
1、支持鼠标滑过和点击触点两种方式<br/>
2、支持同时展开多个面板
</div>
<div class="switchable-trigger">
<h3>标题B</h3>
</div>
<div class="switchable-panel" style="display:none;">
内容B<br/>内容B<br/>内容B
</div>
<div class="switchable-trigger">
<h3>标题C</h3>
</div>
<div class="switchable-panel" style="display:none;">
内容C<br/>内容C<br/>内容C<br/>内容C<br/>内容C
</div>
<div class="switchable-trigger last-trigger">
<h3>标题D</h3>
</div>
<div class="switchable-panel last-panel" style="display:none;">
内容D<br/>内容D<br/>内容D
</div>
</div>
Accordion组件调用方法
<div class="Auto_Widget" data-widget-type="Accordion" data-widget-config="{
triggers:'.switchable-trigger',
panel:'.switchable-panel',
eventType:'click'
}">
<!-- 相关Dom结构 -->
</div>
Accordion配置参数表格| 参数名 | 参数含义 | 参数默认值 |
|---|---|---|
| eventType | 支持事件类型点击触发或者鼠标移动 (mouse或click) | mouse |
| multiple | 是否开启多面板展开 (true/false) | false |
| effect | 是否开启动画效果 | false |
| hasTriggers | 是否有触点 (true/false) | true |
| triggersBox | 触点元素的父元素 (triggersBox和triggers有一即可) | .switchable-triggerBox |
| triggers | 触点元素的class (triggersBox和triggers有一即可) | .switchable-trigger |
| content | 需要显示元素的父元素 (panels和content有一即可) | .switchable-content |
| panels | 需要显示的元素 (panels和content有一即可) | .switchable-panel |
| activeClass | 当前选中触点的class | active |
| onlyTrigger | 当只有1组展开收起时使用参数true (true/false) | false |
| activeTriggerCls | 当只有1组展开收起参数时,来回交替的class名称 | selected |
| islazyload | 是否执行延迟加载 (true/false) | true |
| lazyDataType | 延迟加载内容的标签名称 (textarea/img) | textarea |
| textarea | 延迟加载textarea的class名称 | textarea-lazyload |
| execScript | 是否执行textarea中脚本 (true/false) | true |
| img | 延时加载图片地址的属性名 <img src="loading.gif" img-lazyload="01.jpg"> | img-lazyload |
Carousel实例展示
Carousel需要的DOM结构
<div class="Auto_Widget"> <span class="prev ">‹</span> <span class="next">›</span> <ul class="switchable-content"> <li><img src="assets/1.jpg" alt="" /></li> <li><img src="assets/2.jpg" alt="" /></li> <li><img src="assets/3.jpg" alt="" /></li> <li><img src="assets/4.jpg" alt="" /></li> <li><img src="assets/5.jpg" alt="" /></li> <li><img src="assets/6.jpg" alt="" /></li> </ul> <ul class="switchable-triggerBox clearfix"> <li><img src="assets/1.jpg" width="40" height="40" alt="" /></li> <li><img src="assets/2.jpg" width="40" height="40" alt="" /></li> <li><img src="assets/3.jpg" width="40" height="40" alt="" /></li> <li><img src="assets/4.jpg" width="40" height="40" alt="" /></li> <li><img src="assets/5.jpg" width="40" height="40" alt="" /></li> <li><img src="assets/6.jpg" width="40" height="40" alt="" /></li> </ul> </div>Carousel组件调用方法
<div class="scrollable Auto_Widget"
data-widget-type="Switchable" data-widget-config="{
effect:'scrollx',
viewSize: [130,130],
steps:1,
haslrbtn:true
}">
<!-- 相关Dom结构 -->
</div>
Carousel配置参数表格| 参数名 | 参数含义 | 参数默认值 |
|---|---|---|
| eventType | 支持事件类型点击触发或者鼠标移动 (mouse或click) | mouse |
| autoplay | 是否自动播放 (true/false) | false |
| interval | 间隔时间 | 3000(单位:毫秒) |
| effect | 动画类型 (fade-渐隐,scrolly-y轴滚动,scrollx-x轴滚动,none-直接切换) | none |
| circular | 是否开始循环滚动 (true/false) | false |
| duration | 动画时间,如:从图片1渐变到图片2的时间 | 500(单位:毫秒) |
| hasTriggers | 是否有触点 (true/false) | true |
| triggersBox | 触点元素的父元素 (triggersBox和triggers有一即可) | .switchable-triggerBox |
| triggers | 触点元素的class (triggersBox和triggers有一即可) | .switchable-trigger |
| content | 需要显示元素的父元素 (panels和content有一即可) | .switchable-content |
| panels | 需要显示的元素 (panels和content有一即可) | .switchable-panel |
| activeIndex | 默认显示的元素 | 0 |
| activeClass | 当前选中触点的class | active |
| steps | 每次切换多少个触点的内容 | 1 |
| pauseOnHover | 鼠标悬停停止播放 (true/false) | true |
| haslrbtn | 是否支持前进后退按钮 (true/false) | false |
| prev | 上一页按钮的class名称 | .prev |
| next | 下一页按钮的class名称 | .next |
| disableCls | 当到最后一页或者第一页时,是否改变前进或后退按钮的class名,禁止点击按钮 (disable/null) | null |
| islazyload | 是否执行延迟加载 (true/false) | true |
| lazyDataType | 延迟加载内容的标签名称 (textarea/img) | textarea |
| textarea | 延迟加载textarea的class名称 | textarea-lazyload |
| execScript | 是否执行textarea中脚本 (true/false) | true |
| img | 延时加载图片地址的属性名 <img src="loading.gif" img-lazyload="01.jpg" /> | img-lazyload |
实例展示
需要的DOM结构
<div id="trigger" class="aaa">
<div class="Auto_Widget" data-widget-type="Popup" data-widget-config="{
trigger:'trigger',
triggerType:'mouse',
align:{
node:'.aaa',
points:['cr','cc'],
offset:[0,0]
}}">
我要“被”弹出
</div>
</div>
组件调用方法
<div class="Auto_Widget" data-widget-type="Popup" data-widget-config="{
trigger:'trigger',
triggerType:'mouse',
align:{
node:'.aaa',
points:['cr','cc'],
offset:[0,0]
}}">
<!-- 相关弹出层内容 -->
</div>
配置参数表格
| 参数名 | 参数含义 | 参数默认值 |
|---|---|---|
| trigger | 触点元素 | trigger(参数id值),也可填class(trigger:".aaa") |
| triggerType | 触发方式 (mouse/click) | mouse |
| isShowPopup | 第一次是否显示弹出层 | false |
| align | 综合参数配置 详见下文 | - |
配置项align中的points的说明
触点与弹出层的对齐方式(align中的points配置):
我们暂且先把每个层都看成一个几何矩形,矩形上有九个非常重要的定位点('tl', 'tc', 'tr', 'cl', 'cc', 'cr', 'bl', 'bc', 'br') 如下图所示:
实例展示
需要的DOM结构
<!-- 页面首屏内容 --> <textarea class="textarea-lazyload-block"> <!-- 需要延迟加载的内容 --> </textarea> <textarea class="textarea-lazyload-block"> <!-- 需要延迟加载的内容 --> </textarea>
组件调用方法
这里的组件调用方法很简单了只需要在页面的底部加入如下js代码,即可
<script>
new DataLazyLoad({textarea:'textarea-lazyload-block'});
</script>
需要的DOM结构
<div class="moo-countdown-run"><!-- 对应内容 --></div> <div class="moo-countdown-end"><!-- 对应内容 --></div> <div class="time-count moo-countdown-run"> <p class="tit">剩余时间: </p> <span class="moo-h value"></span><span class="unit">小时</span> <span class="moo-m value"></span><span class="unit">分</span> <span class="moo-s value"></span><span class="unit">秒</span> </div>
组件调用方法
<div class="Auto_Widget" data-widget-type="Countdown" data-widget-config="{
'endTime': '10000',
'interval': 1000,
'timeRunCls': '.moo-countdown-run',
'timeUnitCls':{
'h': '.moo-h',
'm': '.moo-m',
's': '.moo-s',
},
'minDigit': 2,
'timeEndCls': '.moo-countdown-end'
}">
<!-- 这里可设置倒计时及其他内容 -->
</div>
配置参数表格
| 参数名 | 参数含义 | 参数默认值 |
|---|---|---|
| endTime | 倒计时剩余时间 | 暂时仅支持毫秒(ms)形式 |
| interval | 倒计时刷新间隔(单位为毫秒/次)即每多少毫秒刷新一次。取值范围(>=100毫秒),默认值为1000毫秒 | 1000 |
| timeRunCls | 在倒计时运行时显示,结束时隐藏的class名称 | .count-run |
| timeEndCls | 在倒计时运行时隐藏,结束时显示的class名称 | .count-end |
| isMsecond | 是否开启毫秒计量(true/false) | false |
| dataFormat | 显示时间格式位数 例如4为天-小时-分钟-秒 3为小时-分钟-秒 | 3 |
| minDigit | 显示时间位数,1位数还是2位数.可选参数 | 1 |
| onEnd | 结束时可写自定义回调函数,可选参数 | - |
| timeUnitCls | 设定时间单位的class,d-天,h-时,m-分,s-秒,i-毫秒 | 'd': '.count-d','h': '.count-h','m': '.count-m','s': '.count-s','i': '.count-i' |