学习了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. 5. 网络配置与FTP服务笔记

    IP地址: Ipv4        2*32       Ipv6 tcp      网络通讯协议 udp    用户数据报协议 常见网络端口: 20  21      ftp服务 文件共享 22   ...

  2. Eclipse 的快捷键以及文档注释、多行注释的快捷键

    一.多行注释快捷键 1.选中你要加注释的区域,用ctrl+shift+C 或者ctrl+/ 会加上//注释2.先把你要注释的东西选中,用shit+ctrl+/ 会加上/*    */注释 3.以上快捷 ...

  3. (4) 二叉平衡树, AVL树

    1.为什么要有平衡二叉树? 上一节我们讲了一般的二叉查找树, 其期望深度为O(log2n), 其各操作的时间复杂度O(log2n)同时也是由此决定的.但是在某些情况下(如在插入的序列是有序的时候), ...

  4. laravel框架总结(十二) -- 关联关系

    这里我们users表对应的模型类名是users,大家特意注意下和user取名的不同 1.一对一关系 1>表A和表B的记录一一对应,比如一个用户对应一个社交账号 数据表的设计如下:   2> ...

  5. SAP Query工具(一 Overview)

    SAP提供了3种Query工具 1,SAP Query 2,InfoSet (Ad Hoc) Query 3,QuickViewer 一般说Query是指第一种,SAP Query 1,SAP Que ...

  6. python中的 descriptor

    学好和用好python, descriptor是必须跨越过去的一个点,现在虽然Python书籍花样百出,但是似乎都是在介绍一些Python库而已,对Python语言本身的关注很少,或者即使关注了,但是 ...

  7. Windows使用shipyard

    步骤: 1. 安装go语言环境,配置go语言环境变量 如果是64位,GOARCH=amd64 http://my.oschina.net/pandao/blog/161667 2. 找一台linux或 ...

  8. PHP interface(接口)的示例代码

    <?php class DocumentStore { protected $data = []; public function addDocument(Documentable $docum ...

  9. jsonp的使用

    假设我们已经了解什么是同源策略,以及什么是浏览器的同源策略的限制. 现在我们需要在a.demo.com下的某个页面one.html 里加载不同域b.demo.com下的json数据. 我们都知道用&l ...

  10. 关于content-type","application/x-www-form-urlencoded;charset=utf-8"的说明

    在Form元素的语法中,EncType表明提交数据的格式 用 Enctype 属性指定将数据回发到服务器时浏览器使用的编码类型. 下边是说明: application/x-www-form-urlen ...