学习了DOM的知识,今天开始做些练习,想到了一个网页滑动门的特效,见下图:

1、通过建立索引实现

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>js简单滑动门</title>
<style type="text/css">
*{ padding:0; margin:0; font-size:14px;}
li{ list-style:none}
#tab1{ width:600px; height:400px; margin:20px auto; overflow:hidden; position:relative}
#tab1_memu{ width:600px; height:40px; position:absolute; left:0; top:0; z-index:2; border-left:1px solid #333}
#tab1_memu li{ width:100px;height:39px; line-height:40px; background:#eee;float:left;text-align:center; border-right:1px solid #333;border-top:1px solid #333;}
#tab1_memu li.current{font-weight:bold; color:#F00; background:#fff;border-right:1px solid #333;border-top:2px solid #f00;border-bottom:1px solid #fff; }
#tab1_main{ width:598px; height:320px; position:absolute; left:0; top:40px; border:1px solid #333;z-index:1}
#tab1_main li{ display:none}
#tab1_main li.current{ display:block}
#tab1_main p{ margin:20px}
</style>
<script >
/*原理:
1、页面载入后,设置选项卡第一项为默认显示,改变其css样式
2、添加事件处理函数
当鼠标浮动到某菜单时,(1)清除所有菜单节点的className属性,为当前菜单项添加className属性(2)隐藏所有选项卡内容节点,显示菜单项对应的内容节点
*/
window.onload = function(){
var tabs=document.getElementById("tab1_memu").getElementsByTagName("LI");
var tab_contents=document.getElementById("tab1_main").getElementsByTagName("LI");
tabs[0].className="current"; //初始化
tab_contents[0].className="current";//初始化 for(var i=0;i<tabs.length;i++){
tabs[i].index=i;//给tabs[i]对象增加一个属性并赋值,即为每个菜单建立索引
tabs[i].onmouseover=function(){
for(var j=0;j<tabs.length;j++){
tabs[j].className="";
tab_contents[j].className="";
}
this.className="current";
tab_contents[this.index].className="current";
}//为每个菜单项绑定鼠标浮动事件
} }
</script>
</head>
<body>
<div id="tab1" >
<ul id="tab1_memu">
<li>菜单1</li>
<li>菜单2</li>
<li>菜单3</li>
<li>菜单4</li>
</ul>
<ul id="tab1_main">
<li><p>内容1</p></li>
<li><p>内容2</p></li>
<li><p>内容3</p></li>
<li><p>内容4</p></li>
</ul> </div>
</body>
</html>

这种方式在扩展一下,做一个可以重用的滑动门效果,javascript部分改写为:

function hdm(m_id,c_id){
var tabs=document.getElementById(m_id).getElementsByTagName("LI");
var tab_contents=document.getElementById(c_id).getElementsByTagName("LI");
tabs[0].className="current"; //初始化
tab_contents[0].className="current";//初始化 for(var i=0;i<tabs.length;i++){
tabs[i].index=i;//给tabs[i]对象增加一个属性并赋值,即为每个菜单建立索引
tabs[i].onmouseover=function(){
for(var j=0;j<tabs.length;j++){
tabs[j].className="";
tab_contents[j].className="";
}
this.className="current";
tab_contents[this.index].className="current";
}//为每个菜单项绑定鼠标浮动事件
}
}
window.onload = function(){
hdm("tab1_memu","tab1_main");
}

Javascript学习笔记2.2 Javascript与DOM选项卡(滑动门)案例详解的更多相关文章

  1. Flutter学习笔记(15)--MaterialApp应用组件及routes路由详解

    如需转载,请注明出处:Flutter学习笔记(15)--MaterialApp应用组件及routes路由详解 最近一段时间生病了,整天往医院跑,也没状态学东西了,现在是好了不少了,也该继续学习啦!!! ...

  2. Javascript学习笔记2.1 Javascript与DOM简介

    DOM(文档对象模型)简介 DOM(文档对象模型)针对HTML和XML文档的一个API. DOM可以将任何HTML或XML文档描绘成由多层节点构成的树形结构,它是中立于平台和语言的接口,允许程序和脚本 ...

  3. 1.1(JavaScript学习笔记)、JavaScript基础

    一.JavaScript简介 JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型. 它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端 ...

  4. [原创]java WEB学习笔记38:EL 中的 11个 隐含对象 详解

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  5. linux初级学习笔记八:linux权限管理及权限管理命令详解!(视频序号:04_2)

    本节学习的命令:chown,chgrp,chmod,openssl,umask 本节学习的技能: 文件权限详解及对其的操作 生成随机密码命令 用遮罩码对用户权限进行修改 站在用户登陆的角度来说SHEL ...

  6. javascript学习笔记(四):DOM操作HTML

    当网页被加载时,浏览器会创建页面的文档对象模型Document Object Model,简称DOM Dom操作html 1:改变页面中所有HTML元素 2:改变页面中所有HTML属性 3:改变页面中 ...

  7. javascript学习笔记(九):DOM操作HTML的各种方法使用

    <!DOCTYPE html> <html> <head lang="en"> <meta chaset="UTF-8" ...

  8. JavaScript学习笔记系列1:JavaScript的是什么?

    一.JS是什么? JavaScript作为Netscape Navigator浏览器的一部分首次出现在1996年.它最初的设计目标是改善网页的用户体验. 作者:Brendan Eich 期初JavaS ...

  9. JavaScript学习笔记——1.了解JavaScript

    百度百科: JavaScript是一种属于网络的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果.通常JavaScript脚本是通过嵌入在HT ...

随机推荐

  1. android 悬浮覆盖状态栏的相关建议

    WindowManager.LayoutParams.TYPE_SYSTEM_ERROR 显示在所有的应用之上包括显示在状态栏上,相对于TYPE_SYSTEM_OVERLAY不能获取焦点更为理想. 另 ...

  2. noi 6047 分蛋糕

    题目链接:http://noi.openjudge.cn/ch0405/6047/ 和Uva1629很类似,不过,可能用记忆化难写一点,状态初始化懒得搞了.就用循环好了. 状态描叙也可以修改,那个题目 ...

  3. iOS开发,URL编码和解码

    URL传递数据中,如果含有中文,需要进行编码: NSString *urlEncodeString = [urlStr stringByAddingPercentEncodingWithAllowed ...

  4. linux下的a.out文件

       当然这里,我更重要的是强调这个什么段,什么段.这以前就知道.但其实是对一个可以执行的c语言程序的分析.就好比你分析一篇作文.有标题.有段落. .out文件就是扩展名为out的文件,它本身不代表任 ...

  5. Android Studio 2.0使用指南

    一.下载界面.[无激活码 无序列码 无毒请放心使用][需将JAVA程序升级到1.8] 网址:http://www.android-studio.org/index.php/download/andro ...

  6. UVALive 3971 组装电脑

    https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...

  7. [OC][地图] 高德地图之定位初探(一)

    使用前的说明 高德地图开放平台的iOS定位模块网址-->http://lbs.amap.com/api/ios-location-sdk/summary/ 高德地图有Web端.android平台 ...

  8. validate插件深入学习-02 常用方法和validate对象的方法

    ①检查表单元素是否有效 valid() 在表单内添加<button id="check">检查</button> $('#check').click(fun ...

  9. Linux系统下配置JDK环境变量

    刚申请了阿里云,平时很少接触Linux,特此记录一下Linux系统下安装JDK的步骤. 1.进入usr:cd /usr: 2.创建java文件夹:mkdir java: 3.将下载好的文件拷贝至jav ...

  10. fonts.googleapis.com 加载慢的解决方法

    把:fonts.googleapis.com 替换成 fonts.useso.com