学习了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. JDBC 内部资料 请勿转载 谢谢合作

    一.JDBC常用接口.类介绍 JDBC提供对独立于数据库统一的API,用以执行SQL命令.API常用的类.接口如下: DriverManager 管理JDBC驱动的服务类,主要通过它获取Connect ...

  2. laravel框架总结(十一) -- 集合

      创建集合: collect 辅助函数会利用传入的数组生成一个新的 Illuminate\Support\Collection 实例. $collection = collect([1, 2, 3] ...

  3. python之禅

    >>> import this The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is ...

  4. nfs 配置

    服务端1.打印系统版本cat /etc/redhat-release2.检查并安装NFS服务rpm -aq nfs-utils portmap rpcbindyum grouplistyum grou ...

  5. jquery 设置页面元素不可点击、不可编辑、只读(备忘)

    $("input").attr('readonly', true); $("textarea").attr('readonly', true); $(':rad ...

  6. 学习git与github的二三事 (一)

    前一段时间看到了一个参加机器人比赛的同学写的经验之谈,他提到了在比赛时,希望同学们学习一下git来管理代码,于是我就某度了一下,发现了廖雪峰老师的网站,受益匪浅,持续学习中,拜谢大神,顺便记录一下自己 ...

  7. inline-boock的默认间距

    1 2 3 4 div{width:900px;} div li{ display:inline-block; width:300px;} <ul>     <li></ ...

  8. ip封包

    I P封包 從一直以來討論至今﹐我們都不斷地接觸到“封包”這個詞﹐相信您也很有興趣想知道這個“封包”究竟是個什麼樣的東東吧﹗下面就讓我們一起看看一個IP封包究竟包含了那些內容. 擷取IP封包 如果您的 ...

  9. contos7 安装netcore 和vscode

    安装netcore 参考 http://www.cnblogs.com/hohoa/p/5691071.html 1 在root下新建一个文件夹"dotnet"用来放SDK,然后用 ...

  10. SQL知识整理二:锁、游标、索引

    锁 锁的模式 锁模式 描述 共享(S) 用于不更改或不更新数据(只读操作),如SELECT语句 更新(U) 用于可更新的资源中.防止当多个会话在读取.锁定以及随后可能进行的资源更新时发生常见形式的死锁 ...