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 相关文章推荐
自适应图片大小的弹出窗口
Jul 27 Javascript
重构Javascript代码示例(重构前后对比)
Jan 23 Javascript
js相册效果代码(点击创建即可)
Apr 16 Javascript
对frameset、frame、iframe的js操作示例代码
Aug 16 Javascript
js中window.open打开一个新的页面
Aug 10 Javascript
分享12个实用的jQuery代码片段
Mar 09 Javascript
vuejs父子组件通信的问题
Jan 11 Javascript
jQuery表单插件ajaxForm实例详解
Jan 17 Javascript
老生常谈javascript中逻辑运算符&amp;&amp;和||的返回值问题
Apr 13 Javascript
javascript数据结构之多叉树经典操作示例【创建、添加、遍历、移除等】
Aug 01 Javascript
JavaScript跳出循环的三种方法(break, return, continue)
Jul 30 Javascript
20多个小事例带你重温ES10新特性(小结)
Sep 29 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的header和asp中的redirect比较
2006/10/09 PHP
CI框架中cookie的操作方法分析
2014/12/12 PHP
PHP中单例模式与工厂模式详解
2017/02/17 PHP
PHP中$GLOBALS与global的区别详解
2019/03/21 PHP
JavaScript在IE中“意外地调用了方法或属性访问”
2008/11/19 Javascript
Javascript 事件流和事件绑定
2009/07/16 Javascript
jQuery JSON的解析方式分享
2011/04/05 Javascript
轻松创建nodejs服务器(10):处理POST请求
2014/12/18 NodeJs
JS简单计算器实例
2015/01/20 Javascript
javascript获取重复次数最多的字符
2015/07/08 Javascript
jquery实现多次上传同一张图片
2017/01/09 Javascript
vue2.0使用Sortable.js实现的拖拽功能示例
2017/02/21 Javascript
用原生JS实现简单的多选框功能
2017/06/12 Javascript
VUE饿了么树形控件添加增删改功能的示例代码
2017/10/17 Javascript
React Native 搭建开发环境的方法步骤
2017/10/30 Javascript
vue中如何动态绑定图片,vue中通过data返回图片路径的方法
2018/02/07 Javascript
解决iview打包时UglifyJs报错的问题
2018/03/07 Javascript
vue动态绑定class选中当前列表变色的方法示例
2018/12/19 Javascript
Node.js net模块功能及事件监听用法分析
2019/01/05 Javascript
用Python生成器实现微线程编程的教程
2015/04/13 Python
Django如何自定义model创建数据库索引的顺序
2019/06/20 Python
基于numpy中的expand_dims函数用法
2019/12/18 Python
python 实现人和电脑猜拳的示例代码
2020/03/02 Python
Numpy中ndim、shape、dtype、astype的用法详解
2020/06/14 Python
win10安装python3.6的常见问题
2020/07/01 Python
详解Sticky Footer 绝对底部的两种套路
2017/11/03 HTML / CSS
Myprotein蛋白粉美国官网:欧洲畅销运动营养品牌
2016/11/15 全球购物
Spartoo葡萄牙鞋类网站:线上销售鞋履与时尚配饰
2017/01/11 全球购物
Beauty Expert美国/加拿大:购买奢侈美容产品
2018/12/05 全球购物
圣诞节红领巾广播稿
2014/02/03 职场文书
大学中国梦演讲稿
2014/04/23 职场文书
女生抽烟检讨书
2014/10/05 职场文书
公司更名通知函
2015/04/24 职场文书
毕业证明书
2015/06/19 职场文书
Mysql数据库值的添加、修改、删除及清空操作实例
2021/06/20 MySQL
Python可视化神器pyecharts之绘制地理图表练习
2022/07/07 Python