JS实现带圆弧背景渐变效果的导航菜单代码


Posted in Javascript onOctober 13, 2015

本文实例讲述了JS实现带圆弧背景渐变效果的导航菜单代码。分享给大家供大家参考。具体如下:

这是一款效果个性的JS+CSS导航菜单,鼠标经过时出现有趣弧形背景,实际上,这里用CSS调用了背景,用JavaScript控制了背景的移动,用jQuery实现过类似的功能,整体感觉很不错。

运行效果截图如下:

JS实现带圆弧背景渐变效果的导航菜单代码

在线演示地址如下:

具体代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>圆弧背景的导航菜单</title>
<meta http-equiv="content-type" content="text/html;charset=gb2312">
<style type="text/css">
*{margin:0px;padding:0px;font-size:12px;}
.div_menu{ position:absolute;left:100px;top:100px;}
.ul_menu{list-style:none;}
.ul_menu li{float:left;margin-left:1px;border:1px solid #33CCCC;display:block;padding:5px 3px;background:url(images/menu_bg.gif) repeat-x 0px -80px;padding:2px 12px;}
.ul_menu li a{height:40px;width:auto;color:#ffffff;font-size:20px;font-weight:600;text-decoration:none;}
</style>
<script type="text/javascript">
var isIE = (document.all)?true:false;
var $ID = function(id){
 return "string"==typeof id?document.getElementById(id):id;
}
var Class = {
 create:function(){
  return function(){
   this.initilize.apply(this,arguments);
  }
 }
}
var Extend = function(destination, source){
 for(var property in source){
  destination[property] = source[property];
 }
}
var Bind = function(object,fun){
 var args = Array.prototype.slice.call(arguments).slice(2);
 return function(){
  return fun.apply(object,args);
 }
}
var BindAsEventListener = function(object,fun){
 var args = Array.prototype.slice.call(arguments).slice(2);
 return function(event){
  return fun.apply(object,[event||window.event].concat(args));
 }
}
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;
 }
};
function removeEventHandler(oTarget, sEventType, fnHandler) {
 if (oTarget.removeEventListener) {
 oTarget.removeEventListener(sEventType, fnHandler, false);
 } else if (oTarget.detachEvent) {
 oTarget.detachEvent("on" + sEventType, fnHandler);
 } else { 
 oTarget["on" + sEventType] = null;
 }
};
</script>
<script type="text/javascript">
var MyMenu = Class.create();
MyMenu.prototype = {
 initilize:function(ul){
  this.lis = ul.getElementsByTagName("li");
  for(var i=0;i<this.lis.length;i++){
   new BgChange(this.lis[i]);
  }
 }
}
var BgChange = Class.create();
BgChange.prototype = {
 initilize:function(li){
  this.li = li;
  this._fnMouseOver = Bind(this,this.MouseOver);
  this._fnMouseOut = Bind(this,this.MouseOut);
  addEventHandler(this.li,"mouseover",this._fnMouseOver);
  addEventHandler(this.li,"mouseout",this._fnMouseOut);
  this.timer = null;
  this.i = -80;
 },
 MouseOver:function(){
  this.Stop();
  this.i+=2;
  if(this.i>=0){
   window.clearTimeout(this.timer);
   this.i = 0;
  }else{
   this.ShowBg();
   this.timer = window.setTimeout(this._fnMouseOver,10);
  }
 },
 MouseOut:function(){
  this.Stop();
  this.i-=2;
  if(this.i<=-80){
   window.clearTimeout(this.timer);
   this.i = -80;
  }else{
   this.ShowBg();
   this.timer = window.setTimeout(this._fnMouseOut,10);
  }
 },
 ShowBg:function(){
  this.li.style.backgroundPosition = "0px " + this.i + "px";
 },
 Stop:function(){
  if(this.timer){
   window.clearTimeout(this.timer);
  }
 }
}
onload = function(){
 new MyMenu($ID("ul_menu"));
}
</script>
</head>
<body>
<div class="div_menu">
 <ul class="ul_menu" id="ul_menu">
 <li><a href="#">欢迎光临</a></li>
 <li><a href="#">最新更新</a></li>
 <li><a href="#">下载排行</a></li>
 <li><a href="#">网页特效</a></li>
 <li><a href="#">广告联系</a></li>
 </ul>
</div>
</body>
</html>

希望本文所述对大家的JavaScript程序设计有所帮助。

Javascript 相关文章推荐
jQuery对象的length属性用法实例
Dec 27 Javascript
jquery复选框多选赋值给文本框的方法
Jan 27 Javascript
js实现卡片式项目管理界面UI设计效果
Dec 08 Javascript
JavaScript实现下拉菜单的显示和隐藏
Jan 05 Javascript
JavaScript关于提高网站性能的几点建议(一)
Jul 24 Javascript
js html css实现复选框全选与反选
Oct 09 Javascript
使用jquery.qrcode.js生成二维码插件
Oct 17 Javascript
基于javascript实现数字英文验证码
Jan 25 Javascript
js实现简单选项卡功能
Mar 23 Javascript
vue中如何实现后台管理系统的权限控制的方法示例
Sep 19 Javascript
vue+axios实现post文件下载
Sep 25 Javascript
微信小程序实现购物车小功能
Dec 30 Javascript
js验证真实姓名与身份证号是否匹配
Oct 13 #Javascript
编写高性能Javascript代码的N条建议
Oct 12 #Javascript
JavaScript 性能优化小结
Oct 12 #Javascript
一个php+js实时显示时间问题
Oct 12 #Javascript
JS实现新浪微博效果带遮罩层的弹出框代码
Oct 12 #Javascript
jquery实现仿新浪微博带动画效果弹出层代码(可关闭、可拖动)
Oct 12 #Javascript
关于事件mouseover ,mouseout ,mouseenter,mouseleave的区别
Oct 12 #Javascript
You might like
超人钢铁侠联手合作?美漫作家呼吁DC漫威合作联动以抵抗疫情
2020/04/09 欧美动漫
在PHP中执行系统外部命令
2006/10/09 PHP
JS中encodeURIComponent函数用php解码的代码
2012/03/01 PHP
windows下PHP_intl.dll正确配置方法(apache2.2+php5.3.5)
2014/01/14 PHP
详解php语言最牛掰的Laravel框架
2017/11/20 PHP
Yii框架安装简明教程
2020/05/15 PHP
CSS+Table图文混排中实现文本自适应图片宽度(超简单+跨所有浏览器)
2009/02/14 Javascript
jquery.messager.js插件导致页面抖动的解决方法
2013/07/14 Javascript
ActiveX控件与Javascript之间的交互示例
2014/06/04 Javascript
javascript实现Table间隔色以及选择高亮(和动态切换数据)的方法
2015/05/14 Javascript
jQuery+HTML5实现手机摇一摇换衣特效
2015/06/05 Javascript
js获取字符串字节数方法小结
2015/06/09 Javascript
纯javascript实现四方向文本无缝滚动效果
2015/06/16 Javascript
javascript动画算法实例分析
2015/07/31 Javascript
Bootstrap每天必学之工具提示(Tooltip)插件
2016/04/26 Javascript
jQuery解析与处理服务器端返回xml格式数据的方法详解
2016/07/04 Javascript
深入理解JS中的Function.prototype.bind()方法
2016/10/11 Javascript
JS实现遍历不规则多维数组的方法
2018/03/21 Javascript
如何解决React官方脚手架不支持Less的问题(小结)
2018/09/12 Javascript
优化Vue项目编译文件大小的方法步骤
2019/05/27 Javascript
python基于隐马尔可夫模型实现中文拼音输入
2016/04/01 Python
python的socket编程入门
2018/01/29 Python
致Python初学者 Anaconda入门使用指南完整版
2018/04/05 Python
Python3之简单搭建自带服务器的实例讲解
2018/06/04 Python
Django中URL的参数传递的实现
2019/08/04 Python
Python实现微信中找回好友、群聊用户撤回的消息功能示例
2019/08/23 Python
AHAVA美国官方网站:死海海泥护肤品牌
2016/10/18 全球购物
吉列剃须刀美国官网:Gillette美国
2018/07/13 全球购物
毕业生机械建模求职信
2013/10/14 职场文书
中学劳技课教师的自我评价
2014/02/05 职场文书
美丽家庭事迹材料
2014/05/03 职场文书
地道战观后感300字
2015/06/04 职场文书
中学语文教学反思
2016/02/16 职场文书
Python爬虫:从m3u8文件里提取小视频的正确操作
2021/05/14 Python
一看就懂的MySQL的聚簇索引及聚簇索引是如何长高的
2021/05/25 MySQL
【海涛解说】史上最给力比赛,挑战DOTA极限
2022/04/01 DOTA