请选择 进入手机版 | 继续访问电脑版
收藏本站腾讯微博新浪微博
点点网模板设计大赛 phpchina

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

蓝色理想 最新研发动态 用悬赏 三天解决问题 解决访问速度慢 论坛支持农历生日 - 给官方提建议

论坛活动及任务 归纳网站最新活动 地图任务 邮件更新任务:保护帐号安全

积分换实物,来参加蓝色理想积分兑换吧! 联系招聘客服 蓝色理想帮你找工作! 万元奖励等你拿——点点网模板设计大赛

查看: 10505|回复: 20

用javascript来实现动画导航 [复制链接]

buliuming 楼主
帖子
68
体力
252
威望
1
发表于 2007-11-27 11:12:00 |显示全部楼层
原理

小时候,总喜欢看动画片吧,动画片是怎样实现的呢?记得妈妈说是一张画一张画切换过去(啊?那一部葫芦兄弟要画多少副画啊? -_-! ),其实我们现在做的也是这样,用一个图片,这个图片里有很多个小图,来显示动画轨迹.按时间来移动图片,那图片不是会动了啊?(不知道,表达清楚了没…语文很重要啊!!)


准备

我们需要一张图片,一个大脑,一张会笑的脸(不笑效果就出不来了….)!!下面是我准备的图片(ps水平有限^_^)…

代码

我们看到上面的图片,想象下,它动起来是多么的优美啊…

css

  1. .Gnb_btn_div{
  2.         width:90px;
  3.         height:75px;
  4.         overflow:hidden;
  5.         display:block;
  6.         position:absolute;
  7. }  

  8. .Gnb_btn_img{
  9.         width:100%;
  10.         height:525px;
  11.         display:block;
  12.         overflow:hidden;
  13.         text-indent:-500px;
  14. }
  15. #gnb_btn_01 .Gnb_btn_img {
  16.         background-image:url(http://www.wler.cn/blog/img/friend.gif)
  17. }
复制代码

javascript

  1. <script type="text/javascript">
  2. // <![CDATA[
  3. function GNB(_7c){
  4.         //初始化一些参数
  5.         this.iImgNum=7;                        //小图片个数
  6.         this.iImgHeight=75;                //小图片高度
  7.         this.iOverSpeed=50;                //鼠标经过时候切换的时间
  8.         this.iOutSpeed=50;                //鼠标离开时候切换的时间
  9.         this.eventObj=_7c;                //取得图片对象  

  10.         this.MouseOverFlag=false;
  11.         this.imageIndex=0;
  12.         if(this.eventObj==null){return;}
  13.         this.eventObj.parentClass=this;this.eventAssign();
  14. }  

  15. GNB.prototype.eventAssign=function(){//注册事件
  16.         this.eventObj.onmouseover=this.menuMouseOver;
  17.         this.eventObj.onmouseout=this.menuMouseOut;
  18. };  

  19. GNB.prototype.menuMouseOver=function(){//鼠标经过
  20.         if(this.parentClass.MouseOverFlag!=false){return;}
  21.         this.parentClass.MouseOverFlag=true;
  22.         this.parentClass.clearTimeOut();
  23.         this.parentClass.menuMouseOverTimer();
  24. };  

  25. GNB.prototype.menuMouseOut=function(){//鼠标离开
  26.         this.parentClass.MouseOverFlag=false;
  27.         this.parentClass.clearTimeOut();
  28.         this.parentClass.menuMouseOutTimer();
  29. };  

  30. GNB.prototype.menuMouseOverTimer=function(){//经过图片位置递增
  31.         var _7d=this;
  32.         if(this.imageIndex>=this.iImgNum){return;}
  33.         this.eventObj.scrollTop=this.imageIndex*this.iImgHeight;
  34.         this.imageIndex++;
  35.         this.setTimerID=setTimeout(function(){_7d.menuMouseOverTimer();},this.iOverSpeed);
  36. };  

  37. GNB.prototype.menuMouseOutTimer=function(){////经过图片位置递减
  38.         var _7e=this;if(this.imageIndex<0){return;}
  39.         this.eventObj.scrollTop=this.imageIndex*this.iImgHeight;
  40.         this.imageIndex--;
  41.         this.setTimerID=setTimeout(function(){_7e.menuMouseOutTimer();},this.iOutSpeed);
  42. };  

  43. GNB.prototype.clearTimeOut=function(){//取消定时
  44.         clearTimeout(this.setTimerID);
  45. };
  46. // ]]>
  47. </script>
复制代码


xhtml

<div class="Gnb_btn_div" id="gnb_btn_01">
<a class="Gnb_btn_img" href="#1" mce_href="#1">找朋友</a>
</div>  

<script type="text/javascript">
// <![CDATA[
var GNB1=new GNB(document.getElementById("gnb_btn_01"));//实例单个按钮,当然也可以多个
// ]]>
</script>

具体演示请看http://www.wler.cn/blog/?p=8  http://www.wler.cn/blog/lab/nav.html

[ 本帖最后由 buliuming 于 2007-11-27 11:14 编辑 ]
已有 1 人评分威望 收起 理由
帅青蛙 + 1 原创内容

总评分: 威望 + 1   查看全部评分

20字节太小气了吧
西部数码顶级域名注册商39元抢注!

无知阶梯

高级会员 手机认证 

帖子
143
体力
604
威望
0
居住地
安徽省 六安市
发表于 2007-11-27 11:19:23 |显示全部楼层
这东西不错是不错,但麻烦了点
租服务器,上51IDC | [长沙]招聘:PHP经理10K/WEB前端6K/PHP开发6K

使用道具 举报

unicac 
帖子
39
体力
146
威望
0
居住地
浙江省 金华市
发表于 2007-11-27 11:24:01 |显示全部楼层
google里有这个效果。。如果为了这个效果写那么多JS,有点得不偿失!

使用道具 举报

buliuming 楼主
帖子
68
体力
252
威望
1
发表于 2007-11-27 11:26:29 |显示全部楼层
google的js还要麻烦.....
20字节太小气了吧

使用道具 举报

罗亮

超级版主 手机认证 

帖子
15895
体力
19488
威望
19
居住地
北京市 海淀区
发表于 2007-11-27 11:43:31 |显示全部楼层
封装得不错,..好东西..收

使用道具 举报

代码艺术

中级会员 手机认证 

帖子
367
体力
859
威望
0
居住地
河北省 邯郸市
发表于 2007-11-27 11:46:24 |显示全部楼层
很强哦 ,不过是不是用FLASH更好一点呢

使用道具 举报

zcfg 
帖子
169
体力
341
威望
5
发表于 2007-11-27 12:24:09 |显示全部楼层
发个我写的 代码更简洁 也是oop的

 提示:您可以先修改部分代码再运行

已有 1 人评分威望 收起 理由
帅青蛙 + 1 原创内容

总评分: 威望 + 1   查看全部评分

使用道具 举报

buliuming 楼主
帖子
68
体力
252
威望
1
发表于 2007-11-27 13:42:11 |显示全部楼层

不错

  不错
20字节太小气了吧

使用道具 举报

帖子
380
体力
1010
威望
0
发表于 2007-11-27 14:43:01 |显示全部楼层
不错。。。。。
聘兼职网络信息http://soho.33se.cn/?78680.htm

使用道具 举报

buliuming 楼主
帖子
68
体力
252
威望
1
发表于 2007-11-28 09:54:13 |显示全部楼层
20字节太小气了吧

使用道具 举报

小米布枪

银牌会员

帖子
539
体力
1505
威望
3
发表于 2007-11-29 16:23:00 |显示全部楼层
原帖由 zcfg 于 2007-11-27 12:24 发表
发个我写的 代码更简洁 也是oop的
[html]

var hP=[0,-52,-104,-156,-208,-260,-312];

var Class = {
  create: function() {
    return function() {
      this.initialize.apply(this, argume ...

强烈建议写段教程
www.artwc.com未末|web2.0创意群4057211

使用道具 举报

帖子
5
体力
20
威望
0
发表于 2007-11-30 08:34:37 |显示全部楼层
zcfg  的封装,在鼠标经过图片(不是文字链接)时,会出现不正常

使用道具 举报

skybot 

size

钻石会员 手机认证 

帖子
3236
体力
12466
威望
7
发表于 2007-11-30 09:02:48 |显示全部楼层
js注册事件啊,收啊
http://www.qlili.com 个人站帮点啊

使用道具 举报

帖子
60
体力
130
威望
0
发表于 2007-12-2 15:13:54 |显示全部楼层
原帖由 ddyanhui 于 2007-11-30 08:34 发表
zcfg  的封装,在鼠标经过图片(不是文字链接)时,会出现不正常

那么如何让他正常呢??

使用道具 举报

帖子
2
体力
18
威望
0
居住地
广东省 深圳市
发表于 2007-12-6 11:10:34 |显示全部楼层
效果不错,实用性如何就不好说了。
平常喜欢用DW中鼠标经过图片的动作来实现比较方便。

使用道具 举报

buliuming 楼主
帖子
68
体力
252
威望
1
发表于 2007-12-6 15:25:11 |显示全部楼层

回复 #15 lucy0746 的帖子

....   
20字节太小气了吧

使用道具 举报

berain 

老马

初级会员

帖子
90
体力
335
威望
0
居住地
广东省 茂名市
发表于 2007-12-7 10:20:39 |显示全部楼层
楼主,我想问一下定义和判断this.MouseOverFlag的作用是什么,我发现去掉了之后,效果也可以实现的??

 提示:您可以先修改部分代码再运行

缘余几分~~飘~~

使用道具 举报

zcfg 
帖子
169
体力
341
威望
5
发表于 2007-12-15 01:44:13 |显示全部楼层
原帖由 electronixtar 于 2007-12-2 15:13 发表

[quote]原帖由 ddyanhui 于 2007-11-30 08:34 发表
zcfg  的封装,在鼠标经过图片(不是文字链接)时,会出现不正常


那么如何让他正常呢?? [/quote]

是css的问题 把<style>内a的line-height改成37px就没问题了

使用道具 举报

haocat 

绝世好猫

银牌会员

帖子
224
体力
1149
威望
0
发表于 2008-3-25 16:27:22 |显示全部楼层
晕 这不是偷GOOGLE的吗
绝世好猫

使用道具 举报

stkk 
帖子
1
体力
12
威望
0
发表于 2008-7-22 11:15:09 |显示全部楼层
我搞不懂得是为什么传递对象是<div>而不是<A>呢?

使用道具 举报

海之極

银牌会员 手机认证 

帖子
3751
体力
2803
威望
1
居住地
广东省 广州市
发表于 2008-7-22 11:38:42 |显示全部楼层
偶尔过来转转也能发现好东西,收啦
急需网页设计师和.NET人员

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

Archiver|手机版|安久科技提供CDN|blueidea.com ( 京ICP备05002321号 )  

GMT+8, 2012-2-13 12:03 , Processed in 0.183385 second(s), 9 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部