图片轮播插件的设计抽象

提出需求
首页的轮播焦点图是个常见的需求。
需求是这样子的
1 每隔2秒切换一次图片
2 切换图片的时候,会对应显示该图片的说明
3 切换图片的时候,对应显示图片处于小按钮中的第几个,点击小按钮时跳到对应的大图
4 自动滚动图片,鼠标放到图片区域时,停止滚动,移出时继续
5 点击左右可以上下切换图片
对于做一个图片轮播并不难,按照要求,写代码就行。而如何设计一个通用的图片轮播组件确实需要好好思考。
因为样式是不确定的,同时html结构也是不确定的。所以问改如何设计这个轮播js呢?

使用插件?
我是反插件的,除非插件的代码足够简单和清晰。否则,使用插件后,以后的维护会有太多问题。当想改插件的某个功能时,会发现不可能了。

普通的方法

1 setInterval(function(){
2   scrollPicture()
3   showPictureNotice()
4   AddSlectedState()
5 },2000)
6 bind(left,right)
7 bind(selected)

大概意思就这样,每隔2秒,滚动图片,显示图片说明,给对应的小图片加选中状态
绑定左右事件,绑定选择小图片事件
这样写,结果是每次需求都要写一遍,麻烦

抽象
会发现每次滚动,其实都是一次帧的切换。然后出发对应的一系列操作。所以就抽出来的核心就是帧的切换操作

 1 function BaseFrameSwitch(o) {
 2     o = $.extend({
 3         interval : 3000,  //滚动间隔
 4         picNums : null  //图片张数
 5     }, o);
 6     this.para = o;  //参数
 7     this.intervalFunc = null;   //间隔函数
 8     this.seat = 1;      //现在的位置
 9     this.picNums = this.para.picNums;     //图片张数
10 }
11
12
13 BaseFrameSwitch.prototype = {
14     enterFrame : function() {
15         var me = this;
16         $.each(this.todo, function(a, b) {
17             b.apply(me, arguments);
18         });
19     },
20     leaveFrame: function() {
21         this.leaveCall && this.leaveCall.apply(this,arguments);
22     },
23     frame : function(a, b) {
24         this.leaveFrame();
25         if (a) {
26             if (a < 1 || a > this.picNums) {
27                 alert(‘input number from 1 to length of pictures‘);
28                 return false;
29             }
30             this.seat = a;
31         } else if (b) {
32             this.seat += b;
33             (this.seat === 0) && (this.seat = this.picNums);
34             (this.seat === this.picNums + 1) && (this.seat = 1);
35         }
36         this.enterFrame();
37     },
38     go : function() {
39         var me = this;
40         this.intervalFunc = setInterval(function() {
41             me.next();
42         }, this.para.interval);
43     },
44     stop : function() {
45         clearInterval(this.intervalFunc);
46     },
47     enter : function(i) {
48         this.frame(i);
49     },
50     next : function() {
51         this.frame(null, 1);
52     },
53     prev : function() {
54         this.frame(null, -1);
55     }
56 };

this.todo是需要添加的操作,貌似记得AS3中有个onEnterFrame,上面就是这个意思。
然后下面就是继承上面的baseFrame,而具体的不同实现在todo中去实现。
。。。

有点多,好像跟普通模式区别不大。。。
唯一的好处,就是不需要写切换的逻辑,只需要继承,并且有一些借口可以直接用。
写完这个,就感觉到,所谓的动画都是这种一帧帧的改变,就像fps游戏一样,每帧一次

这里是几个实例  http://www.riyue.me/plugin/slide/index.html

图片轮播插件的设计抽象

时间: 2024-10-05 04:39:22

图片轮播插件的设计抽象的相关文章

Javascript和jQuery WordPress 图片轮播插件, 内容滚动插件,前后切换幻灯片形式显示

用于在有限的网页空间内展示一组产品图片或者照片,同时还有非常吸引人的动画效果.本文向大家推荐12款实用的 jQuery 图片轮播效果插件,帮助你在你的项目中加入一些效果精美的图片轮播效果,希望这些插件能够帮助到你.Nivo Slider首先推荐的这款插件号称世界上最棒的图片轮播插件,有独立的 jQuery 插件和 WordPress 插件两个版本.目前下载量已经突破 1,800,000 次!jQuery 独立版本的插件主要有如下特色:? 16个独特的过渡效果? 简洁和有效的标记? 加载参数设置?

图片轮播插件

刚买了司徒大大的<Javascript框架设计>,准备开始研读.打算在读之前先随便写个图片轮播插件,到读完这本书再来看看现在的自己有多菜....... 顺便做图片轮播的时候用美女照片真影响效率..... 上代码! 先是如何使用: html: <div id='outer' style='width:591px;height:862px;overflow:hidden;margin-left:100px;'> <ul id='try-slide' style='list-sty

js面向对象实现图片轮播插件

这个demo的学习过程很值得记录下来. 前言:学习了一遍js的面向对象,想找点东西练练手,就上网找了个用js面向对象实现图片轮播插件: http://www.codefans.net/jscss/code/3327.shtml 功能:新建一个实例就是一个图片轮播,可以新建多个,但是实例与实例之间是干扰的. 过程:看视频教程说,第一次搞面向对象,把面向过程改头换面就可以了.自己就死磕地先写了原生,再改为面向对象. 写原生的时候,遇到的问题: 不知道怎么样停止计时器:clearInterval.cl

12款经典的白富美型—jquery图片轮播插件—前端开发必备

图片轮播是网站中的常用功能,用于在有限的网页空间内展示一组产品图片或者照片,同时还有非常吸引人的动画效果.本文向大家推荐12款实用的 jQuery 图片轮播效果插件,帮助你在你的项目中加入一些效果精美的图片轮播效果,希望这些插件能够帮助到你.Nivo Slider 首先推荐的这款插件号称世界上最棒的图片轮播插件,有独立的 jQuery 插件和 WordPress 插件两个版本. 目前下载量已经突破 1,800,000 次!jQuery 独立版本的插件主要有如下特色: ?  16个独特的过渡效果?

PgwSlideshow-基于Jquery的图片轮播插件

0 PgwSlideshow简介 PgwSlideshow是一款基于Jquery的图片轮播插件,基本布局分为上下结构,上方为大图轮播区域,用户可自定义图片轮播切换的间隔时间,也可以通过单击左右方向按键实现图片切换:下方为要轮播的所有图片的缩略图展示,可直接单击缩略图快速切换图片. PgwSlideshow主要有以下特点: 体验度很好的响应式设计 支持桌面及移动设备 身形矫健,压缩后的文件只有不到4KB 你可以自定义或者直接修改基本的css样式来给你想要的轮播插件美个容 PgwSlideshow核

Nivo Slider - 世界上最棒的 jQuery 图片轮播插件

Nivo Slider 号称世界上最棒的图片轮播插件,有独立的 jQuery 插件和 WordPress 插件两个版本.目前下载量已经突破 1,800,000 次!jQuery 独立版本的插件主要有如下特色: ?  16个独特的过渡效果 ?  简洁和有效的标记 ?  加载参数设置 ?  内置方向和导航控制 ?  压缩版本大小只有12KB ?  支持链接图像 ?  支持 HTML 标题 ?  3套精美光滑的主题 ?  在MIT许可下免费使用 ?  支持响应式设计 插件下载     效果演示 您可能

图片轮播插件FlexSlider

推荐一款万能图片轮播插件FlexSlider 先来看一下都能做出什么效果吧 轮播图方向控制按钮和底部的焦点按钮都是可以控制显示和隐藏,最厉害的一点是该插件支持手机触屏 具体参数设置当然还是github更权威https://github.com/woothemes/FlexSlider/ 友情提示:在github上下载的demo由于用的是google的CDN,由于google被墙可能导致无法运行,建议更改jQuery的调用地址 最后看一下支付宝官方网站上的对该插件的应用效果图

JQuery插件之图片轮播插件–slideBox

来源:http://www.ido321.com/852.html 今天偶然发现了一个比較好用的图片轮播插件-slideBox 先看看效果:http://slidebox.sinaapp.com/ 代码例如以下 1: <!doctype html> 2: <html> 3: <head> 4: <meta http-equiv="Content-Type" content="text/html; charset=utf-8"

手机端图片轮播插件

官网:http://bxslider.com/ 能自动适应屏幕大小,滑动图片 引用文件:query.bxslider.css和jquery.bxslider.min.js   手机端图片轮播插件