用javascript来实现动画导航效果的代码


Posted in Javascript onDecember 16, 2007

谁在用这些导航
google是个大公司,全世界都有google的脚印,韩国的google动画效果非常不错,蓝色理想论坛里已经有人挖过来了,可惜js写的太多了,那自己写一个吧?好,就这么干!
原理
小时候,总喜欢看动画片吧,动画片是怎样实现的呢?记得妈妈说是一张画一张画切换过去(啊?那一部葫芦兄弟要画多少副画啊? -_-! ),其实我们现在做的也是这样,用一个图片,这个图片里有很多个小图,来显示动画轨迹.按时间来移动图片,那图片不是会动了啊?(不知道,表达清楚了没…语文很重要啊!!)
准备
我们需要一张图片,一个大脑,一张会笑的脸(不笑效果就出不来了….)!!下面是我准备的图片(ps水平有限^_^)…
用javascript来实现动画导航效果的代码
代码

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

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(/resources/imgs/img_not_found.png)  

}

javascript
<script type="text/javascript">  

// <![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" href="#1">找朋友</a>  

</div>       

<script type="text/javascript">  

// <![CDATA[  

var GNB1=new GNB(document.getElementById("gnb_btn_01"));//实例单个按钮,当然也可以多个  

// ]]>  

</script>

演示地址
Javascript 相关文章推荐
JavaScript isArray()函数判断对象类型的种种方法
Oct 11 Javascript
Javascript 加载和执行-性能提高篇
Dec 28 Javascript
js实现弹出窗口、页面变成灰色并不可操作的例子分享
May 10 Javascript
在JS数组特定索引处指定位置插入元素
Jul 27 Javascript
javascript学习笔记(七)Ajax和Http状态码
Oct 08 Javascript
JavaScript希尔排序、快速排序、归并排序算法
May 08 Javascript
Javascript自执行匿名函数(function() { })()的原理浅析
May 15 Javascript
超实用的javascript时间处理总结
Aug 16 Javascript
Vue.js中数据绑定的语法教程
Jun 02 Javascript
详解vue-cli 构建Vue项目遇到的坑
Aug 30 Javascript
vue下history模式刷新后404错误解决方法
Aug 18 Javascript
Node.js 实现简单的无侵入式缓存框架的方法
Jul 21 Javascript
不用ajax实现点击文字即可编辑的方法
Dec 16 #Javascript
JS是否可以跨文件同时控制多个iframe页面的应用技巧
Dec 16 #Javascript
Javascript常用运算符(Operators)-javascript基础教程
Dec 14 #Javascript
javascript实现仿银行密码输入框效果的代码
Dec 13 #Javascript
CLASS_CONFUSION JS混淆 全源码
Dec 12 #Javascript
我见过最全的个人js加解密功能页面
Dec 12 #Javascript
文本链接逐个出现的js脚本
Dec 12 #Javascript
You might like
无数据库的详细域名查询程序PHP版(4)
2006/10/09 PHP
php获取网卡的MAC地址支持WIN/LINUX系统
2014/04/30 PHP
PHP格式化MYSQL返回float类型的方法
2016/03/30 PHP
thinkphp整合微信支付代码分享
2016/11/24 PHP
OAuth认证协议中的HMACSHA1加密算法(实例)
2017/10/25 PHP
Ajax提交与传统表单提交的区别说明
2014/02/07 Javascript
javascript实现文本域写入字符时限定字数
2014/02/12 Javascript
javascript转换静态图片,增加粒子动画效果
2015/05/28 Javascript
在AngularJS中使用AJAX的方法
2015/06/17 Javascript
jfinal与bootstrap的登录跳转实战演习
2015/09/22 Javascript
JS实现网页标题栏显示当前时间和日期的完整代码
2015/11/02 Javascript
Javascript编程之继承实例汇总
2015/11/28 Javascript
详解JavaScript中的自定义事件编写
2016/05/10 Javascript
获取input标签的所有属性的方法
2016/06/28 Javascript
jQuery选取所有复选框被选中的值并用Ajax异步提交数据的实例
2017/08/04 jQuery
使用vue-cli+webpack搭建vue开发环境的方法
2017/12/22 Javascript
Angular使用动态加载组件方法实现Dialog的示例
2018/05/11 Javascript
Vue.js实现大屏数字滚动翻转效果
2019/11/29 Javascript
Nuxt的路由配置和参数传递方式
2020/11/06 Javascript
小程序组件传值和引入sass的方法(使用vant Weapp组件库)
2020/11/24 Javascript
python的多重继承的理解
2017/08/06 Python
python将文本分每两行一组并保存到文件
2018/03/19 Python
解决python爬虫中有中文的url问题
2018/05/11 Python
解决python给列表里添加字典时被最后一个覆盖的问题
2019/01/21 Python
详解python解压压缩包的五种方法
2019/07/05 Python
使用Python脚本zabbix自定义key监控oracle连接状态
2019/08/28 Python
如何使用python记录室友的抖音在线时间
2020/06/29 Python
python pygame 愤怒的小鸟游戏示例代码
2021/02/25 Python
HTML5 input元素类型:email及url介绍
2013/08/13 HTML / CSS
美国最受欢迎的度假租赁网站:VRBO
2016/08/02 全球购物
2015年体育部工作总结
2015/04/02 职场文书
教师创先争优承诺书
2015/04/27 职场文书
小学教学工作总结2015
2015/05/13 职场文书
2019银行竞聘书
2019/06/21 职场文书
祝福语集锦:朋友新店开业祝福语
2019/12/10 职场文书
win10输入法不见了只能打出字母怎么解决?
2022/08/05 数码科技