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 打造动态渐变按钮 详细图文教程
Apr 25 Javascript
Javascript 自适应高度的Tab选项卡
Apr 05 Javascript
Jquery的Tabs内容轮换效果实现代码,几行搞定
Feb 12 Javascript
根据当前时间在jsp页面上显示上午或下午
Aug 18 Javascript
JavaScript实现横向滑出的多级菜单效果
Oct 09 Javascript
JavaScript中利用各种循环进行遍历的方式总结
Nov 10 Javascript
微信小程序 聊天室简单实现
Apr 19 Javascript
在ABP框架中使用BootstrapTable组件的方法
Jul 31 Javascript
解决vue的 v-for 循环中图片加载路径问题
Sep 03 Javascript
JS闭包经典实例详解
Dec 20 Javascript
Node.js API详解之 Error模块用法实例分析
May 14 Javascript
js实现Element中input组件的部分功能并封装成组件(实例代码)
Mar 02 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
PHP教程 基本语法
2009/10/23 PHP
ThinkPHP公共配置文件与各自项目中配置文件组合的方法
2014/11/24 PHP
PHP curl CURLOPT_RETURNTRANSFER参数的作用使用实例
2015/02/07 PHP
微信封装的调用微信签名包的类库
2017/06/08 PHP
jQuery)扩展jQuery系列之一 模拟alert,confirm(一)
2010/12/04 Javascript
jQuery中调用WebService方法小结
2011/03/28 Javascript
让jQuery Mobile不显示讨厌loading界面的方法
2014/02/19 Javascript
jQuery学习笔记之总体架构
2014/06/03 Javascript
深入理解JavaScript 函数
2016/06/06 Javascript
AngularJS 中的事件详解
2016/07/28 Javascript
jQuery实现的省市县三级联动菜单效果完整实例
2016/08/01 Javascript
仿iframe效果Aajx文件上传实例
2016/11/18 Javascript
ES6 中可以提升幸福度的小功能
2018/08/06 Javascript
JavaScript fetch接口案例解析
2018/08/30 Javascript
vue项目中引入vue-datepicker插件的详解
2019/05/14 Javascript
原生javascript自定义input[type=radio]效果示例
2019/08/27 Javascript
layui 数据表格 点击分页按钮 监听事件的实例
2019/09/02 Javascript
javascript实现支付宝滑块验证码效果
2020/07/24 Javascript
[04:36]DOTA2国际邀请赛 ti3精彩集锦
2013/08/19 DOTA
[06:23]2014DOTA2西雅图国际邀请赛 小组赛7月12日TOPPLAY
2014/07/12 DOTA
pycharm 使用心得(六)进行简单的数据库管理
2014/06/06 Python
python语音识别实践之百度语音API
2018/08/30 Python
Python实现的特征提取操作示例
2018/12/03 Python
详解Python中的正斜杠与反斜杠
2019/08/09 Python
python3.7通过thrift操作hbase的示例代码
2020/01/14 Python
详解python中groupby函数通俗易懂
2020/05/14 Python
python 实现关联规则算法Apriori的示例
2020/09/30 Python
python3 re返回形式总结
2020/11/20 Python
python 列表推导和生成器表达式的使用
2021/02/01 Python
HTML5输入框下拉菜单功能的示例代码
2020/09/08 HTML / CSS
Haggar官网:美国男装品牌
2020/02/16 全球购物
新西兰最大的连锁超市:Countdown
2020/06/04 全球购物
党政领导班子民主生活会整改措施
2014/09/18 职场文书
学生违纪检讨书200字
2014/10/21 职场文书
2014年度培训工作总结
2014/11/27 职场文书
python cv2图像质量压缩的算法示例
2021/06/04 Python