当前位置: 首页 > 图文教程 > 网络编程 > Javascript > JS特效详解:图片幻灯片切换

Javascript
jQuery生成asp.net服务器控件的代码
javascript 实现的完全兼容鼠标滚轴缩放图片的代码
JavaScript学习笔记(十七)js 优化
使用SyntaxHighlighter实现HTML高亮显示代码的方法
javascript contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
利用jQuery 实现GridView异步排序、分页的代码
jquery.lazyload 实现图片延迟加载jquery插件
Lazy Load 延迟加载图片的 jQuery 插件
jquery 插件实现图片延迟加载效果代码
javascript小数计算出现近似值的解决办法
jquery1.4后 jqDrag 拖动 不可用
jquery 应用代码 方便的排序功能
选择TreeView控件的树状数据节点的JS方法(jquery)
jquery 图片Silhouette Fadeins渐显效果
JQuery Dialog(JS 模态窗口,可拖拽的DIV)
javascript 同时在IE和FireFox获取KeyCode的代码
js 键盘记录实现(兼容FireFox和IE)
javascript 函数速查表
jQuery AnythingSlider滑动效果插件
经典海量jQuery插件 大家可以收藏一下

Javascript 中的 JS特效详解:图片幻灯片切换


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-28   浏览: 491 ::
收藏到网摘: n/a

  • 序一(08/07/06)
    看到 alibaba 的一个图片切换效果,感觉不错,想拿来用用。但代码一大堆的,看着昏,还是自己来吧。
    由于有了做 图片滑动展示效果 的经验,做这个就容易得多了。
  • 序二(09/03/19)
    自写了 Tween缓动 之后就很想重新写过这个效果,近来有点时间,终于可以动手了。
    除了改成Tween缓动,也改进了程序算法,不过原理还是一样的。

效果预览:

运行代码框

[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

程序说明

原理就是通过不断设置滑动对象的left(水平切换)和top(垂直切换)来实现图片切换的动态效果。

首先需要一个容器,程序会自动设置容器overflow为hidden,如果不是相对或绝对定位会同时设置position为relative,
滑动对象会设置为绝对定位:

var p = CurrentStyle(this._container).position;
p == "relative" || p == "absolute" || (this._container.style.position = "relative");
this._container.style.overflow = "hidden";
this._slider.style.position = "absolute";

如果没有设置Change切换参数属性,会自动根据滑动对象获取:

this.Change = this.options.Change ? this.options.Change :
    this._slider[bVertical ? "offsetHeight" : "offsetWidth"] / this._count;

执行Run方法就会开始进入切换,其中有一个可选参数用来重新设置要切换的图片索引:

index == undefined && (index = this.Index);
index < 0 && (index = this._count - 1) || index >= this._count && (index = 0);
== undefined && (index = this.Index);
index < 0 && (index = this._count - 1) || index >= this._count && (index = 0);

之后就到设置使用 tween缓动 时需要的参数了,
包括_target(目标值)、_t(时间)、_b(初始值)和_c(变化量):

this._target = -Math.abs(this.Change) * (this.Index = index);
this._t = 0;
this._b = parseInt(CurrentStyle(this._slider)[this.options.Vertical ? "top" : "left"]);
this._c = this._target - this._b;

还有Duration(持续时间)是自定义属性。

参数设置好后就执行Move程序开始移动了。
里面很简单,首先判断_c是否有值(等于0表示不需要移动)和_t是否到达Duration,
未满足条件就继续移动,否则直接移动到目标值并进行下一次切换:

if (this._c && this._t < this.Duration) {
    this.MoveTo(Math.round(this.Tween(this._t++, this._b, this._c, this.Duration)));
    this._timer = setTimeout(Bind(this, this.Move), this.Time);
}else{
    this.MoveTo(this._target);
    this.Auto && (this._timer = setTimeout(Bind(this, this.Next), this.Pause));
}

 

使用说明

实例化需要3个参数,分别是容器对象,滑动对象和切换数量,之后可以直接执行Run方法运行:

new SlideTrans("idContainer", "idSlider", 3).Run();

还有以下可选属性:

  • Vertical: true,//是否垂直方向(方向不能改)
  • Auto:  true,//是否自动
  • Change:  0,//改变量
  • Duration: 50,//滑动持续时间
  • Time:  10,//滑动延时
  • Pause:  2000,//停顿时间(Auto为true时有效)
  • onStart: function(){},//开始转换时执行
  • onFinish: function(){},//完成转换时执行
  • Tween:  Tween.Quart.easeOut//tween算子

其中Vertical初始化后就不能修改,Tween算子可参照这里的缓动效果选择(实例中选了其中3个)。

还有提供了以下方法:

  • Next: 切换下一个
  • Previous: 切换上一个
  • Stop: 停止自动切换
  • 还有上面说到的Run

程序代码

代码拷贝框

[Ctrl+A 全部选择 然后拷贝]