用javascript来实现仿gogle动画导航

作者:buliuming 来源:蓝色理想 时间:2007-11-30 14:15:00 

谁在用这些导航

google是个大公司,全世界都有google的脚印,韩国的google动画效果非常不错,蓝色理想论坛里已经有人挖过来了,可惜js写的太多了,那自己写一个吧?好,就这么干!

原理

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

准备

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

代码

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

css


.Gnb_btn_div{
 width:90px;
 height:75px;
 overflow:hidden;
 display:block;
 position:absolute;
}   

.Gnb_btn_img{
 width:100%;
 height:525px;
 display:block;
 overflow:hidden;
 text-indent:-500px;
}
#gnb_btn_01 .Gnb_btn_img {
 background-image:url(// <![CDATA[
function GNB(_7c){
 //初始化一些参数
 this.iImgNum=7;   //小图片个数
 this.iImgHeight=75;  //小图片高度
 this.iOverSpeed=50;  //鼠标经过时候切换的时间
 this.iOutSpeed=50;  //鼠标离开时候切换的时间
 this.eventObj=_7c;  //取得图片对象   

 this.MouseOverFlag=false;
 this.imageIndex=0;
 if(this.eventObj==null){return;}
 this.eventObj.parentClass=this;this.eventAssign();
}   

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

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

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

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

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

GNB.prototype.clearTimeOut=function(){//取消定时
 clearTimeout(this.setTimerID);
};
// ]]>
</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>


演示



标签:导航,菜单,javascript,google
0
投稿

猜你喜欢

  • 采用XMLHTTP编写一个天气预报的程序

    2007-10-15 12:35:00
  • vue 下列表侧滑操作实例代码详解

    2024-04-30 10:19:36
  • node.js回调函数之阻塞调用与非阻塞调用

    2024-05-05 09:21:26
  • Golang中生成随机字符串并复制到粘贴板的方法

    2024-02-16 08:32:10
  • 一个有趣的SQL命题 用一条语句切换BIT型的真假值

    2024-01-24 04:57:38
  • Python中Permission denied的解决方案

    2023-11-09 18:42:24
  • Python大数据用Numpy Array的原因解读

    2023-06-19 05:14:00
  • 写给应聘页面重构的同学

    2009-03-18 11:01:00
  • aws 通过boto3 python脚本打pach的实现方法

    2021-09-14 23:33:19
  • 无级分类的多级联动

    2020-07-02 12:53:12
  • python pyheatmap包绘制热力图

    2021-02-18 21:35:46
  • Python3 关于pycharm自动导入包快捷设置的方法

    2021-10-11 02:08:01
  • JavaScript 作用域scope简单汇总

    2024-04-18 10:54:55
  • PHP函数shuffle()取数组若干个随机元素的方法分析

    2023-10-14 16:06:55
  • Java基于redis和mysql实现简单的秒杀(附demo)

    2024-01-16 16:55:13
  • MySQL分库分表后路由策略设计详情

    2024-01-19 01:24:55
  • asp智能脏话过滤系统v1.0

    2011-04-14 11:00:00
  • Python搭建代理IP池实现检测IP的方法

    2023-10-05 04:42:51
  • Golang二维数组的使用方式

    2023-07-21 07:29:16
  • Windows下PyCharm2018.3.2 安装教程(图文详解)

    2022-07-09 12:05:53
  • asp之家 网络编程 m.aspxhome.com