JavaScript 图片滑动展示效果

看到jQuery实例:图片展示效果后,我也想拿来试试,但我不太喜欢用框架,所以自己做了个。
其中的难点在于怎么设计各个滑动对象进行想要的滑动。
一开始我想的是利用滑动对象的宽度的变化来实现滑动,
但实行起来发现这个只能在理想状态下实现,一般实现起来很困难。
所以还是参照了实例中的方法,利用left的变化来实现滑动。


效果:


















程序原理:

设计之初,先不要考虑文本显示那部分,把重心放到滑动效果的实现上,
减少设计负担,这是小小的技巧吧。

总体的思路是通过移动各个滑动对象到指定的位置来实现不同的效果。
效果有两种,分部是:鼠标移出容器时的默认效果和鼠标移到某个滑动对象时的展示效果。
根据效果可以看出,滑动对象有三种宽度一个是默认宽度,最大宽度和最小宽度。
这些宽度都可以在初始化时设置:

Code

我给每个滑动对象添加了一个_target属性来放一个目标值,用来告诉它要滑到哪里。

移动之前先执行Set()程序,给每个对象设置目标值,要分两种情况:

1.鼠标移出容器:这时只要设置滑动对象的目标值为默认宽度*索引值就行;

oList._target = this._width * i;

2.鼠标移到某个滑动对象上:把当前对象和之前的滑动对象的目标值设为最小宽度*索引值,之后的对象设为最小宽度*(索引值-1)加上最大宽度(因为这样会算多一个最小宽度所以要减1个),这样设置就能得到要实现的效果:

oList._target = (i <= index) ? this._width_min * i : this._width_min * (i - 1+ this._width_max;

 接下来就是怎么移动到目标值了,这个在Move()程序中实现。
首先移动效果是通过用计时器逐步设置滑动对象的left来实现,减速部分用一个GetStep()程序来实现(相关说明请看JavaScript 图片切换展示效果)。
不断移动,直到所有滑动对象都到达目标值:

Code

 这个程序本身的难度不高,就难在程序设计,例如怎么实现变化的效果(由于有实例难度就没那么高了)。
还有一个思想是把“移动到指定目标”这个任务分派到各个滑动对象,
主程序只要知道是否各个滑动对象都到达指定目标就行了,
这在给滑动对象设置_target属性和Each()程序的应用中能体现出来。
如果每次移动都由主程序来计算(试想想没有这个_target属性),难度会大大增加,
而设计之初很容易会陷入这个死胡同。

还有一点是容器的mouseout事件中,要先判断鼠标是否在容器外(相关说明请看JavaScript 自定义多级联动浮动菜单)。

扩展功能:

可以设置的属性:
Step: 滑动变化率;
Time: 滑动延时;
TextTag: 说明容器tag;
TextHeight: 说明容器高度;
Delay: 延迟值(微秒);
Showtext:是否显示说明文本;

能实现什么功能就看各位的想象力了。

程序测试:

实例化对象:

new GlideView("idGlideView"1000"div"500, { TextTag: "a", TextHeight: 50 });

其中参数分别是容器对象,容器宽度,展示标签,展示宽度,最后是一些设置。

程序代码:

Code

下载完整测试代码

其他图片展示效果:
JavaScript 图片变换效果(ie only)
JavaScript 图片切换展示效果

转载请注明出处:http://www.cnblogs.com/cloudgamer/
posted @ 2008-05-13 01:34 cloudgamer 阅读(23796) 评论(71)  编辑 收藏 所属分类: Javascript

  回复  引用    
#1楼2008-05-13 09:24 | vicqqq[未注册用户]
fisheye不错
  回复  引用  查看    
#2楼2008-05-13 09:49 | 早班火车      
挺好,有点像mootools首页的效果

  回复  引用  查看    
#3楼2008-05-13 10:44 | 任力      
效果不错,研究一下
  回复  引用  查看    
#4楼2008-05-13 10:44 | airwolf2026      
不错
  回复  引用  查看    
#5楼2008-05-13 11:20 | 数据绑定者      
UI可以再搞的好一点,一个网站哪里有那么大片地方放这个效果啊
  回复  引用  查看    
#6楼[楼主]2008-05-13 11:26 | cloudgamer      
@数据绑定者

我只是做个功能
能做多炫就看美工咯

  回复  引用    
#7楼2008-05-13 11:28 | 未注册用户[未注册用户]
楼主的代码怎么不用用呢,粘贴之后没有效果!是不是你代码里面的语法有错误?能不能把你的源文件打包一下?或者发给我一份 lzpx_2004@163.com
谢谢!

  回复  引用  查看    
#8楼[楼主]2008-05-13 11:46 | cloudgamer      
@未注册用户

效果那里不是能运行了么
怎么会不能用呢

  回复  引用  查看    
#9楼2008-05-13 12:09 | 求知无傲      
不错
  回复  引用  查看    
#10楼2008-05-13 12:10 | Q.Lee.lulu      
帅,赞一个!!!
  回复  引用    
#11楼2008-05-13 12:48 | CaiKanXP[未注册用户]
我顶你一下!
  回复  引用  查看    
#12楼[楼主]2008-05-13 13:50 | cloudgamer      
@Q.Lee.lulu
@CaiKanXP
@求知无傲
谢谢

  回复  引用    
#13楼2008-05-13 17:04 | lawrendc[未注册用户]
学习
  回复  引用  查看    
#14楼2008-05-13 19:20 | 苦心孤诣      
学习,强...
if (
(this.compareDocumentPosition && (this.compareDocumentPosition(o) & 16))
|| this.contains && this.contains(o)
) return;

  回复  引用  查看    
#16楼[楼主]2008-05-14 00:08 | cloudgamer      
@lawrendc
@苦心孤诣

共同学习

  回复  引用  查看    
#17楼2008-05-14 10:45 | 成长的强强      
代码放到HTML里面显示为白的,怎么回事呢?
  回复  引用    
#18楼2008-05-14 11:01 | 独来独往[未注册用户]
--引用--------------------------------------------------

--------------------------------------------------------
我和18楼的情况一样,在网页中看到是很炫,可代码拷到自己电脑上为什么就不行了呢?

如果可以的话,麻烦楼主把源文件发到我的邮箱里让我学习学习吧,谢谢了

  回复  引用  查看    
#19楼[楼主]2008-05-14 11:17 | cloudgamer      
@成长的强强
@独来独往

或者看看这里吧
http://shundebk.cn/temp/3.html" target="_new">http://shundebk.cn/temp/3.html

  回复  引用  查看    
#20楼2008-05-14 14:20 | 成长的强强      
呵呵,,我爱死你了,这效果做得太霸道了!
  回复  引用  查看    
#21楼2008-05-17 19:03 | Justin      
帅呆了
  回复  引用    
#22楼2008-06-07 22:17 | 地方萨芬[未注册用户]
就是不能用呀,发一下好么?
hkhame@163.com
谢了楼主!

  回复  引用  查看    
#23楼[楼主]2008-07-06 14:34 | cloudgamer      
@地方萨芬
http://shundebk.cn/temp/3.html" target="_new">http://shundebk.cn/temp/3.html
这里有完整代码

  回复  引用  查看    
#24楼2008-07-11 13:19 | 蜗牛身上的一只蚂蚁      
LZ 大大。你这是水平的、请问有垂直的吗??就是竖着滑动的。。。谢谢..
msn:cancanliunx_c110@hotmail.com 163邮件:yjjepl110@163.com

  回复  引用  查看    
#25楼[楼主]2008-07-11 13:43 | cloudgamer      
@蜗牛身上的一只蚂蚁
一样的道理
left改为top就行
试试吧

  回复  引用  查看    
#26楼2008-07-11 13:58 | 蜗牛身上的一只蚂蚁      
嗯。改了。。可以。呵呵。。。。
  回复  引用  查看    
#27楼2008-07-11 14:01 | 蜗牛身上的一只蚂蚁      
谢谢LZ。。哈哈。。我就想实现http://www.apple.com/support/" target="_new">http://www.apple.com/support/ 那卡片滑动效果..LZ大大你出的文章得太急时了.呵呵..再次感谢...
  回复  引用  查看    
#28楼[楼主]2008-07-11 14:12 | cloudgamer      
@蜗牛身上的一只蚂蚁
呵呵
共同进步

  回复  引用  查看    
#29楼2008-07-11 18:01 | 蜗牛身上的一只蚂蚁      
LZ 大大..我的图片为何同时显示二张啊.. 第一张总是显示的..他不会隐藏啊...

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<script language="javascript" type="text/javascript">

var $ = function (id) {
return "string" == typeof id ? document.getElementById(id) : id;
};

function Event(e){
var oEvent = document.all ? window.event : e;
if (document.all) {
if(oEvent.type == "mouseout") {
//oEvent.relatedTarget = oEvent.toElement;
}else if(oEvent.type == "mouseover") {
oEvent.relatedTarget = oEvent.fromElement;
}
}
return oEvent;
}

function addEventHandler(oTarget, sEventType, fnHandler) {
if (oTarget.addEventListener) {
oTarget.addEventListener(sEventType, fnHandler, false);
} else if (oTarget.attachEvent) {
oTarget.attachEvent("on" + sEventType, fnHandler);
} else {
oTarget["on" + sEventType] = fnHandler;
}
};

var Class = {
create: function() {
return function() {
this.initialize.apply(this, arguments);
}
}
}

Object.extend = function(destination, source) {
for (var property in source) {
destination[property] = source[property];
}
return destination;
}


var GlideView = Class.create();
GlideView.prototype = {
//容器对象 容器高度 展示标签 展示高度
initialize: function(obj, iHeight, sTag, iMaxHeight, options) {
var oContainer = $(obj), oThis=this, len = 0;

this.SetOptions(options);
this.Step = Math.abs(this.options.Step);
this.Time = Math.abs(this.options.Time);
this.Showtext = false;

this._list = oContainer.getElementsByTagName(sTag);
len = this._list.length;
this._count = len;
this._height = parseInt(iHeight / len);
this._height_max = parseInt(iMaxHeight);
this._height_min = parseInt((iHeight - this._height_max) / (len - 1));
this._timer = null;

if(this.options.TextTag && this.options.TextHeight > 0){
this.Showtext = true;
this._text = oContainer.getElementsByTagName(this.options.TextTag);
this._height_text = -parseInt(this.options.TextHeight);
}

this.Each(function(oList, oText, i){
oList._target = this._height * i;//自定义一个属性放目标left
oList.style.bottom = oList._target + "px";
oList.style.position = "absolute";
addEventHandler(oList, "mouseover", function(){ oThis.Set.call(oThis, i); });

if(oText){
oText._target = this._height_text;//自定义一个属性放目标bottom
oText.style.bottom = oText._target + "px";
oText.style.position = "absolute";
}
})

oContainer.style.width = iHeight + "px";
oContainer.style.overflow = "hidden";
oContainer.style.position = "relative";
addEventHandler(oContainer, "mouseout", function(e){
//变通防止执行oList的mouseout
var oOut = Event(e).relatedTarget;
while(oOut.parentNode){ oOut = oOut.parentNode; if(oOut == oContainer) return; }
oThis.Set.call(oThis, -1);
})
},
//设置默认属性
SetOptions: function(options) {
this.options = {//默认值
Step: 20,//滑动变化率
Time: 10,//滑动延时
TextTag: "",//说明容器tag
TextHeight: 0//说明容器高度
};
Object.extend(this.options, options || {});
},
//
Set: function(index) {
if (index < 0) {
this.Each(function(oList, oText, i){ oList._target = this._height * i; if(oText){ oText._target = this._height_text; } })
} else {
this.Each(function(oList, oText, i){
oList._target = (i <= index) ? this._height_min * i : this._height_min * (i - 1) + this._height_max;
if(oText){ oText._target = (i == index) ? 0 : this._height_text; }
})
}
this.Move();
},
//
Move: function() {
clearTimeout(this._timer);
var bFinish = true;
this.Each(function(oList, oText, i){
var nowLeft = parseInt(oList.style.bottom), iLeftStep = this.GetStep(oList._target, nowLeft);
if (iLeftStep != 0) { bFinish = false; oList.style.bottom = (nowLeft + iLeftStep) + "px"; }
if (oText) {
var nowBottom = parseInt(oText.style.bottom), iBottomStep = this.GetStep(oText._target, nowBottom);
if (iBottomStep != 0) { bFinish = false; oText.style.bottom = (nowBottom + iBottomStep) + "px"; }
}
})
if (!bFinish) { var oThis = this; this._timer = setTimeout(function(){ oThis.Move(); }, this.Time); }
},
//
GetStep: function(iTarget, iNow) {
var iStep = (iTarget - iNow) / this.Step;
if (iStep == 0) return 0;
if (Math.abs(iStep) < 1) return (iStep > 0 ? 1 : -1);
return iStep;
},
Each:function(fun) {
for (var i = 0; i < this._count; i++)
fun.call(this, this._list[i], (this.Showtext ? this._text[i] : null), i);
}
};

window.onload=function(){
new GlideView("DivView", 100, "div", 50, { TextTag: "a", TextHeight: 50 });
}

</script>
</HEAD>

<BODY>
<div id="DivView" class="leftbanner">

<div style="background-image:url(img/bigbf.gif); width:166px; height:171px;margin-left:45px;">111</div>
<div style="background-image:url(img/bigcp.gif); width:166px; height:171px;margin-left:45px;">222</div>
<div style="background-image:url(img/bigtx.gif); width:166px; height:171px;margin-left:45px;">3333</div>
<div style="background-image:url(img/big.gif); width:166px; height:171px;margin-left:45px;"><a href="#">444></a></div>


</div>
</BODY>
</HTML>

  回复  引用  查看    
#30楼2008-07-11 18:03 | 蜗牛身上的一只蚂蚁      
LZ 大大.帮我看看.第一张老是显示.他不隐藏起来.....
  回复  引用  查看    
#31楼[楼主]2008-07-11 20:27 | cloudgamer      
@蜗牛身上的一只蚂蚁
改一下这里
oContainer.style.height = iHeight + "px";

  回复  引用  查看    
#32楼2008-07-12 10:11 | 蜗牛身上的一只蚂蚁      
昨天家里停电了。郁闷。。。。谢谢LZ大大。。我去改下试试。。。再次感谢LZ大大。。。。
  回复  引用  查看    
#33楼2008-07-12 14:13 | 蜗牛身上的一只蚂蚁      
LZ大大。你的JS好历害。。。。怎么学的啊。。。前台的JS好难整。。。。
  回复  引用  查看    
#34楼[楼主]2008-07-12 14:26 | cloudgamer      
@蜗牛身上的一只蚂蚁
整多了就会整了
呵呵

  回复  引用  查看    
#35楼2008-07-12 14:29 | 蜗牛身上的一只蚂蚁      
<div style="background-image:url(img/bigbf.gif); width:166px; height:171px;margin-left:45px;">111</div>  我想问一下。怎么在这里加上个连接呢、、??背景图片上我无法加上。那链接。。。。。如何实现呢。。。。用透明的层放上去。那层老错位。。。
  回复  引用  查看    
#36楼[楼主]2008-07-13 08:27 | cloudgamer      
@蜗牛身上的一只蚂蚁
要整个div的话用onclick location吧

  回复  引用  查看    
#37楼2008-07-13 16:34 | 蜗牛身上的一只蚂蚁      
好。。我去试试,,问个题外话。。脚扭伤了。很疼吗?我星期五扭的。。有点疼。 没地意。。星期六只能脚尖着地。。我去买了红花油擦。。又没太在意。。到了晚上,疼得我快哭了。。。星期天只能躺着了。脚不能移动。。。太疼了。。
  回复  引用    
#38楼2008-07-17 17:54 | js初学者[未注册用户]
好棒
  回复  引用  查看    
#39楼[楼主]2008-07-19 09:32 | cloudgamer      
@蜗牛身上的一只蚂蚁
呵呵 小心

@js初学者
谢谢

  回复  引用  查看    
#40楼2008-07-26 09:37 | 蜗牛身上的一只蚂蚁      
哈哈...去一下医院.休了一个星期....

LZ大大..我传一个值进来..要求第三个图片展开..(或者说传一个值进来..要求对应的图片展开....如何实现呢???)

  回复  引用  查看    
#41楼2008-07-26 09:38 | 蜗牛身上的一只蚂蚁      
谢谢.......
  回复  引用  查看    
#42楼[楼主]2008-07-26 17:13 | cloudgamer      
@蜗牛身上的一只蚂蚁
上面不是有一个“展开第x个”的功能了么
你看看代码就知道了

  回复  引用  查看    
#43楼2008-07-27 09:26 | 蜗牛身上的一只蚂蚁      
哈哈..还真有......谢谢.....感觉LZ大大...我最近加快学JS..感觉怎么也快不起来..郁闷.........
  回复  引用  查看    
#44楼[楼主]2008-07-31 20:10 | cloudgamer      
@蜗牛身上的一只蚂蚁
坚持就行

  回复  引用    
#45楼2008-11-13 16:23 | chenjianwei[未注册用户]
if (oContainer.contains ? !oContainer.contains(o) : oContainer != o && !(oContainer.compareDocumentPosition(o) & 16)) oThis.Set.call(oThis, -1);

楼主能不能解释下段代码,看了有点晕,这个判断的意义。


  回复  引用    
#46楼2008-11-15 19:46 | chenjianwei[未注册用户]
我把楼主的代码稍微改了下,核心算法还是沿用楼主的,主要改了点依赖关系。
我把单个滑动块包装成了Guest对象,6个滑动块就是6个Guest对象,当然这些Guest对象不具备滑动能力,需要通过效果实现对象Gliding来实现滑动。Guest对象与Gliding对象是通过中介对象Mediator联系起来的,最后由GlideView对象封装。和楼主交流下,呵呵。

<style type="text/css">
#idGlideView{height:100px;width:1000px;margin:100px auto;overflow:hidden;position:relative;}
#idGlideView div{width:500px;height:100px;position:absolute;}
</style>

  回复  引用    
#47楼2008-11-15 19:51 | chenjianwei[未注册用户]
<script type="text/javascript">
function $(id) {
return document.getElementById(id);
}

function Event(e){
var oEvent = document.all ? window.event : e;
if (document.all) {
if(oEvent.type == "mouseout") {
oEvent.relatedTarget = oEvent.toElement;
}else if(oEvent.type == "mouseover") {
oEvent.relatedTarget = oEvent.fromElement;
}
}
return oEvent;
}

function addEventHandler(oTarget, sEventType, fnHandler) {
if (oTarget.addEventListener) {
oTarget.addEventListener(sEventType, fnHandler, false);
} else if (oTarget.attachEvent) {
oTarget.attachEvent("on" + sEventType, fnHandler);
} else {
oTarget["on" + sEventType] = fnHandler;
}
}

var Class = {
create: function() {
return function() {
this.initialize.apply(this, arguments);
}
}
}


  回复  引用    
#48楼2008-11-15 19:51 | chenjianwei[未注册用户]

var Mediator = Class.create();//中介者
Mediator.prototype = {
initialize : function (gliding){
this._gliding = gliding;
this._guests = [];
},
notify : function (guest){
this._gliding.setExpandTarget(guest);
for(var i=0; i< this._guests.length; i++){
if(this._guests[i]._index != guest._index){
this._gliding.setNarrowTarget(this._guests[i]);
}
}
this._gliding.move(this._guests);
},
notifyRestore : function (){
this._gliding.restore(this._guests);
},
addGuests : function (guest){
this._guests.push(guest);
}
}

var Gliding = Class.create();//效果实现类
Gliding.prototype = {
initialize : function (step,time){
this._step = step;
this._time = time;
this._timeid = null;
this._index = null;
},
setExpandTarget : function (guest){
this._index = guest._index;
guest._target = guest._minwidth * guest._index;
},
setNarrowTarget : function (guest){
guest._target = (guest._index <= this._index) ? guest._minwidth * guest._index : guest._minwidth * (guest._index - 1) + guest._maxwidth;
},
move : function (guestList){
clearTimeout(this._timeid);
var finished = true;
for(var i=0; i<guestList.length; i++){
var now = parseInt(guestList[i]._div.style.left);
var step = this.getStep(guestList[i]._target, now);
if (step != 0){
finished = false;
guestList[i]._div.style.left = (now + step) + "px";
}
}
if (!finished){
var thisobject = this;
this._timeid = setTimeout(function(){ thisobject.move(guestList);}, this._time);
}
},
getStep : function (target_, now){
var step = (target_ - now) / this._step;
if (step == 0) return 0;
if (Math.abs(step) < 1) return (step > 0 ? 1 : -1);
return step;
},
restore : function (guestList){
for(var i=0; i<guestList.length; i++){
guestList[i]._target = guestList[i]._width * i;
}
this.move(guestList);
}
}

var Guest = Class.create();//单体滑动对象
Guest.prototype = {
initialize : function (div, index_, totaldiv, totalwidth, maxwidth, mediator){
var thisobject = this;
this._div = div;
this._index = index_;
this._width = parseInt(totalwidth/totaldiv);
this._maxwidth = parseInt(maxwidth);
this._minwidth = parseInt((totalwidth - this._maxwidth) / (totaldiv - 1));
this._target = this._width * this._index;
this._div.style.left = this._target + "px";
addEventHandler(this._div,
"mouseover",
function(){
mediator.notify(thisobject);
});
}
}

var GlideView = Class.create();//封装了的滑动容器
GlideView.prototype = {
initialize : function (id_, totalwidth, maxwidth, step, time){
var myGliding = new Gliding(step,time);
var myMediator = new Mediator(myGliding);
var container = $(id_);
var list = container.getElementsByTagName("div");
var length_ = list.length;
for(var i=0; i<length_; i++){
myMediator.addGuests( new Guest(list[i], i, length_, totalwidth, maxwidth, myMediator));
}
addEventHandler(container,
"mouseout",
function(e){
var targetElement = Event(e).relatedTarget;
if(container.contains ?
!container.contains(targetElement) :
container != targetElement && !(container.compareDocumentPosition(targetElement) & 16)){
myMediator.notifyRestore();
}
});
}
}


window.onload=function(){
new GlideView("idGlideView", 1000, 500, 20, 20);
}

</script>

  回复  引用  查看    
#49楼[楼主]2008-11-16 00:25 | cloudgamer      
@chenjianwei
这个是判断文档位置
这里有详细一点的说明
http://www.cnblogs.com/cloudgamer/archive/2008/11/15/1290954.html" target="_new">http://www.cnblogs.com/cloudgamer/archive/2008/11/15/1290954.html

欢迎交流
有空拜读

  回复  引用    
#50楼2008-12-29 10:02 | 水流[未注册用户]
求学中,谢谢

  回复  引用    
#51楼2009-01-08 09:32 | zybx520[未注册用户]
我的也是在本地用html打开就为空白的,另外我看了楼主给蜗牛身上的一只蚂蚁和强强的回复,楼主你那个下载源码的地址已经打不开了,请问是否有新的地址?谢谢
  回复  引用  查看    
#52楼[楼主]2009-01-08 09:59 | cloudgamer      
@zybx520
http://files.cnblogs.com/cloudgamer/GlideView.rar" target="_new">http://files.cnblogs.com/cloudgamer/GlideView.rar
这个是下载地址
@水流
谢谢支持

  回复  引用    
#53楼2009-01-08 11:06 | zybx520[未注册用户]
哇,楼主,真没有想到你的回复速度这么快,我是个JS初学者,代码我下载了,可是打开来之后有整个屏幕宽,请问能否设置成固定的框架大小呢?
就像你上面的效果图一样

  回复  引用  查看    
#54楼[楼主]2009-01-08 11:13 | cloudgamer      
@zybx520
大小可以自己定的
你研究一下吧

  回复  引用    
#55楼2009-01-08 12:41 | zybx520[未注册用户]
<SCRIPT>new GlideView("idGlideView2", 700, "div", 500);
var gv = new GlideView("idGlideView", 700, "div", 400, { TextTag: "a", TextHeight: 50 });

这一段代码是显示框架大小的吧。

  回复  引用  查看    
#56楼[楼主]2009-01-08 14:03 | cloudgamer      
@zybx520
显示框是样式自己控制的
这里是根据样式来设置大小

  回复  引用    
#57楼2009-01-13 09:19 | zybx520[未注册用户]
楼主,不知道你最近有没有在迅雷看看上看电影,当你选择一个影片之后,会弹出一个新的页面,在新的页面上中间会有一张图片,然后经过一小段时间之后自动向两边分开,中间显示出播放器,请问楼主对这个有研究吗?如果有的话,可否提供一下相应的代码呢?
  回复  引用  查看    
#58楼[楼主]2009-01-13 09:25 | cloudgamer      
@zybx520
还有这样要代码的阿
另请高明吧

  回复  引用    
#59楼2009-01-13 16:47 | zybx520[未注册用户]
真的有呢,不是和你开玩笑的,楼主可以去看一下就知道啦

  回复  引用  查看    
#60楼[楼主]2009-01-13 16:52 | cloudgamer      
@zybx520
那个我没看过
有空再看吧

  回复  引用    
#61楼2009-02-03 08:53 | 下午茶[未注册用户]
高人啊!我对java一窍不通,只是自己做了几个网页。很想用这些效果,但连拷贝都不会。我真的好想有楼主这样的头脑啊~~
  回复  引用    
#62楼2009-02-10 16:43 | 飘过[未注册用户]
本来我很少顶贴的,但是博主太强大了,只有留下一笔了。
  回复  引用    
#63楼2009-02-20 09:01 | jjl_sky[未注册用户]
强人啊! 我要加强学习啦
  回复  引用    
#64楼2009-03-02 17:32 | yoy[未注册用户]
楼主好强~我什么时候能学到你这样的水平就老开心了~
  回复  引用  查看    
#65楼2009-03-14 23:33 | 超级奶崽      
楼主太强大了。。。。

  回复  引用  查看    
#66楼[楼主]2009-03-16 11:07 | cloudgamer      
@下午茶
@飘过
@jjl_sky
@yoy
@超级奶崽
谢谢支持!!!

  回复  引用    
#67楼2009-03-16 16:25 | 46799[未注册用户]
请问我要想在多行图片滑动勒?
  回复  引用  查看    
#68楼[楼主]2009-03-16 16:30 | cloudgamer      
@46799
什么意思
放多几个实例?

  回复  引用    
#69楼2009-04-11 16:21 | 翻版必究
漂亮,我以前还以为这样的效果是用flash做的呢,,
  回复  引用    
#70楼2009-04-12 13:50 | 潘凯[未注册用户]
楼主怎么没发新帖了啊?



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1194272




相关文章:

相关链接: