JS+CSS实现简单滑动门(滑动菜单)效果


Posted in Javascript onSeptember 19, 2015

本文实例讲述了JS+CSS实现简单滑动门的方法。分享给大家供大家参考。具体如下:

这是一款超简约设计的滑动门菜单,鼠标放到主菜单上,里面的内容会跟着变化,实际上本演示是一个范例,从代码中的注释你就能感觉到,每一步都有注释,对学习JavaScript和CSS都有帮助,也为你以后写出比这更漂亮、更实用的滑动门做铺垫。

运行效果截图如下:

JS+CSS实现简单滑动门(滑动菜单)效果

在线演示地址如下:

具体代码如下:

<!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>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>滑动门测试</title>
<style>
#tab_container1{width:310px;text-align:left;border:1px solid #cccccc;background:url() repeat-x top;}
.cls_tab_nav{height:24px;overflow:hidden;font-size:12px;background:url() repeat-x bottom; padding-left:10px;}
.cls_tab_nav ul{font-size:9pt;margin:0;padding:0;}
.cls_tab_nav_li{background:url() no-repeat -70px 0;width:70px;height:24px;line-height:24px;float:left;display:inline;overflow:hidden;text-align:center;cursor:pointer;}
.cls_tab_nav_li_first{font-weight:bolder;background-position:0px 0px;}
.cls_tab_nav_li a{text-decoration:none;color:#000000;font-size:12px;}
.cls_tab_body{border-top:none;min-height:175px;padding:10px;height:175px;}
.cls_div{display:none;font-size:14px;}
.cls_tab_nav_li_first a{color:#c80000;}
</style>
</head>
  <body> 
  <div id="tab_container1" >
 <div class="cls_tab_nav">
 <ul>
  <li class="cls_tab_nav_li cls_tab_nav_li_first"><a href="#">百货大楼</a></li>
  <li class="cls_tab_nav_li"><a href="#">八方购物</a></li>
  <li class="cls_tab_nav_li"><a href="#">商场三</a></li>
 </ul>
 </div>
 <div class="cls_tab_body">
 <div class="cls_div" style="display:block;">
 百货大楼
 </div>
 <div class="cls_div">八方购物</div>
 <div class="cls_div">商场三</div>
 </div>
</div>
</body> 
</html> 
<script type="text/javascript">
try{
 document.execCommand("BackgroundImageCache", false, true);
}catch(e){}
function $(element){
 if(arguments.length>1){
 for(var i=0,elements=[],length=arguments.length;i<length;i++)
  elements.push($(arguments[i]));
 return elements;
 }
 if(typeof element=="string")
 return document.getElementById(element);
 else
 return element;
}
var Class={
 create:function(){
 return function(){
  this.initialize.apply(this,arguments);
 } 
 }
}
Object.extend=function(destination,source){
 for(var property in source){
 destination[property]=source[property];
 }
 return destination;
}
var tabMenu=Class.create();
tabMenu.prototype={
 initialize:function(container,selfOpt,otherOpt){
 this.container=$(container);
  var selfOptions=Object.extend({fontWeight:"bold",fontSize:"12px",color:"#FFBC44"},selfOpt||{});
 var otherOptions=Object.extend({fontWeight:"normal",fontSize:"12px",color:"#666"},otherOpt||{});
 //用for循环得到objs数组,主要是为了兼容非IE浏览器把空白也当作子对象
 for(var i=0,length=this.container.childNodes.length,objs=[];i<length;i++){
  if(this.container.childNodes[i].nodeType==1)
  objs.push(this.container.childNodes[i]);
 }
 var tabArray=objs[0].getElementsByTagName("li");
 //用for循环得到divArray数组,主要是为了兼容非IE浏览器把空白也当作子对象
 var divArray=new Array();
 for(i=0,length=objs[1].childNodes.length;i<length;i++){
  if(objs[1].childNodes[i].nodeType==1)
  divArray.push(objs[1].childNodes[i]);
 }
 for(i=0,length=tabArray.length;i<length;i++){
  tabArray[i].length=length;
  tabArray[i].index=i;
  tabArray[i].onmouseover=function(){
  //其它选项卡样式设置
  for(var j=0;j<this.length;j++){
   tabArray[j].style.backgroundPosition="-"+tabArray[j].offsetWidth+"px 0";
   for(var property in selfOptions){
   tabArray[j].firstChild.style[property]=otherOptions[property];
   }
  }
  //当前选项卡样式
  this.style.backgroundPosition="0 0";
  for(var property in selfOptions){
   this.firstChild.style[property]=selfOptions[property];
  }
  //隐藏其它选项卡
  for(j=0;j<this.length;j++){
   divArray[j].style.display="none";
  }
  //显示当前选项卡
  divArray[this.index].style["display"]="block";
  }
 }
 }
}
var tab1=new tabMenu("tab_container1",{fontSize:"12px",color:"#c80000",fontWeight:"bolder"},{fontWeight:"normal",color:"#000000"});
</script>

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

Javascript 相关文章推荐
js实现的网站首页随机公告随机公告
Mar 14 Javascript
需要做特殊处理的DOM元素属性的访问
Nov 05 Javascript
javascript hashtable 修正版 下载
Dec 30 Javascript
js中判断用户输入的值是否为空的简单实例
Dec 23 Javascript
Eclipse下jQuery文件报错出现错误提示红叉
Jan 13 Javascript
js实现class样式的修改、添加及删除的方法
Jan 20 Javascript
详解JavaScript的策略模式编程
Jun 24 Javascript
jQuery学习笔记之Ajax用法实例详解
Dec 01 Javascript
浅谈JS中json数据的处理
Jun 30 Javascript
jQuery插件版本冲突的处理方法分析
Jan 16 Javascript
对vue中methods互相调用的方法详解
Aug 30 Javascript
javascript实现电商放大镜效果
Nov 23 Javascript
jquery实现点击弹出带标题栏的弹出层(从右上角飞入)效果
Sep 19 #Javascript
jQuery实现点击按钮弹出可关闭层的浮动层插件
Sep 19 #Javascript
JS基于myFocus库实现各种功能的tab选项卡切换效果
Sep 19 #Javascript
JS实现仿雅虎首页快捷登录入口及导航模块效果
Sep 19 #Javascript
JS实现的不规则TAB选项卡效果代码
Sep 18 #Javascript
JS实现兼容性好,带缓冲的动感网页右键菜单效果
Sep 18 #Javascript
JS实现兼容性好,自动置顶的淘宝悬浮工具栏效果
Sep 18 #Javascript
You might like
消息持续发送的完整例子
2006/10/09 PHP
PHP的构造方法,析构方法和this关键字详细介绍
2013/10/22 PHP
使用php显示搜索引擎来的关键词
2014/02/13 PHP
ThinkPHP单字母函数(快捷方法)使用总结
2014/07/23 PHP
在WordPress中使用wp-cron插件来设置定时任务
2015/12/10 PHP
Zend Framework动作助手Redirector用法实例详解
2016/03/05 PHP
CI配置多数据库访问的方法
2016/03/28 PHP
ThinkPHP5分页paginate代码实例解析
2020/11/10 PHP
基于jQuery的简单九宫格实现代码
2012/08/09 Javascript
jQuery旋转插件—rotate支持(ie/Firefox/SafariOpera/Chrome)
2013/01/16 Javascript
JavaScript中圆括号()和方括号[]的特殊用法疑问解答
2013/08/06 Javascript
js特殊字符过滤的示例代码
2014/03/05 Javascript
跟我学Nodejs(三)--- Node.js模块
2014/05/25 NodeJs
jQuery内容过滤选择器用法示例
2016/09/09 Javascript
jQuery中页面返回顶部的方法总结
2016/12/30 Javascript
ES6中Math对象的部分扩展
2017/02/20 Javascript
bootstrap动态添加面包屑(breadcrumb)及其响应事件的方法
2017/05/25 Javascript
Ionic3实现图片瀑布流布局
2017/08/09 Javascript
vue-cli脚手架的安装教程图解
2018/09/02 Javascript
Vue项目服务器部署之子目录部署方法
2019/05/12 Javascript
微信小程序自定义模态弹窗组件详解
2019/12/24 Javascript
springboot+vue实现文件上传下载
2020/11/17 Vue.js
本地文件上传到七牛云服务器示例(七牛云存储)
2014/01/11 Python
python 计算两个日期相差多少个月实例代码
2017/05/24 Python
Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
2018/04/02 Python
Python运行不显示DOS窗口的解决方法
2018/10/22 Python
使用python处理题库表格并转化为word形式的实现
2020/04/14 Python
Python替换NumPy数组中大于某个值的所有元素实例
2020/06/08 Python
Python使用文件操作实现一个XX信息管理系统的示例
2020/07/02 Python
装潢设计实习自我鉴定
2013/09/19 职场文书
超市优秀员工事迹材料
2014/05/01 职场文书
仲裁协议书
2014/09/26 职场文书
法定代表人证明书
2014/11/28 职场文书
学校艾滋病宣传活动总结
2015/05/09 职场文书
JavaGUI模仿QQ聊天功能完整版
2021/07/04 Java/Android
详解Go语言中Get/Post请求测试
2022/06/01 Golang