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 相关文章推荐
javascript 模式设计之工厂模式详细说明
May 10 Javascript
jQuery.getScript加载同域JS的代码
Feb 13 Javascript
js如何取消事件冒泡
Sep 23 Javascript
JQuery表单验证插件EasyValidator用法分析
Nov 15 Javascript
js基于面向对象实现网页TAB选项卡菜单效果代码
Sep 09 Javascript
jQuery获取file控件中图片的宽高与大小
Aug 04 Javascript
JavaScript实现瀑布流图片效果
Jun 30 Javascript
使用VUE+iView+.Net Core上传图片的方法示例
Jan 04 Javascript
详解JavaScript作用域 闭包
Jul 29 Javascript
React实现轮播效果
Aug 25 Javascript
JavaScript中时间格式化新思路toLocaleString()
Nov 07 Javascript
利用js实现简单开关灯代码
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
PHP中常见的缓存技术实例分析
2015/09/23 PHP
thinkPHP中volist标签用法示例
2016/12/06 PHP
详细解读php的命名空间(二)
2018/02/21 PHP
jsonp跨域请求数据实现手机号码查询实例分析
2015/12/12 Javascript
详解JavaScript基于面向对象之继承实例
2015/12/16 Javascript
JavaScript编写一个简易购物车功能
2016/09/17 Javascript
Vue.js自定义指令的用法与实例解析
2017/01/18 Javascript
浅谈Javascript事件对象
2017/02/05 Javascript
bootstrap栅格系统示例代码分享
2017/05/22 Javascript
js的函数的按值传递参数(实例讲解)
2017/11/16 Javascript
微信小程序实现天气预报功能
2018/07/18 Javascript
Vue导出页面为PDF格式的实现思路
2018/07/31 Javascript
vue 组件的封装之基于axios的ajax请求方法
2018/08/11 Javascript
vue新vue-cli3环境配置和模拟json数据的实例
2018/09/19 Javascript
webpack打包多页面的方法
2018/11/30 Javascript
JS中使用new Option()实现时间联动效果
2018/12/10 Javascript
vue弹出框组件封装实例代码
2019/10/31 Javascript
[00:20]TI9不朽观赛名额抽取
2019/08/05 DOTA
Python常用的json标准库
2019/02/19 Python
自定义实现 PyQt5 下拉复选框 ComboCheckBox的完整代码
2020/03/30 Python
Pandas把dataframe或series转换成list的方法
2020/06/14 Python
python实现简单文件读写函数
2021/02/25 Python
结合CSS3的新特性来总结垂直居中的实现方法
2016/05/30 HTML / CSS
特步官方商城:Xtep
2017/03/21 全球购物
英国最大的电子零件及配件零售商:Partmaster
2017/04/24 全球购物
世界上最具创新性的增强型知名运动品牌:Proviz
2018/04/03 全球购物
Lancer Skincare官方网站:抗衰老皮肤护理
2020/11/20 全球购物
外企财务年会演讲稿
2014/01/03 职场文书
公司中秋节活动方案
2014/02/12 职场文书
学习之星事迹材料
2014/05/17 职场文书
经济贸易专业自荐信
2014/06/11 职场文书
十佳好少年事迹材料
2014/08/21 职场文书
优秀纪检干部材料
2014/08/27 职场文书
2014年学习部工作总结
2014/11/12 职场文书
八年级数学教学反思
2016/02/17 职场文书
php TP5框架生成二维码链接
2021/04/01 PHP