Javascript学习笔记2.2 Javascript与DOM选项卡(滑动门)案例详解
学习了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选项卡(滑动门)案例详解的更多相关文章
- Flutter学习笔记(15)--MaterialApp应用组件及routes路由详解
如需转载,请注明出处:Flutter学习笔记(15)--MaterialApp应用组件及routes路由详解 最近一段时间生病了,整天往医院跑,也没状态学东西了,现在是好了不少了,也该继续学习啦!!! ...
- Javascript学习笔记2.1 Javascript与DOM简介
DOM(文档对象模型)简介 DOM(文档对象模型)针对HTML和XML文档的一个API. DOM可以将任何HTML或XML文档描绘成由多层节点构成的树形结构,它是中立于平台和语言的接口,允许程序和脚本 ...
- 1.1(JavaScript学习笔记)、JavaScript基础
一.JavaScript简介 JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型. 它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端 ...
- [原创]java WEB学习笔记38:EL 中的 11个 隐含对象 详解
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- linux初级学习笔记八:linux权限管理及权限管理命令详解!(视频序号:04_2)
本节学习的命令:chown,chgrp,chmod,openssl,umask 本节学习的技能: 文件权限详解及对其的操作 生成随机密码命令 用遮罩码对用户权限进行修改 站在用户登陆的角度来说SHEL ...
- javascript学习笔记(四):DOM操作HTML
当网页被加载时,浏览器会创建页面的文档对象模型Document Object Model,简称DOM Dom操作html 1:改变页面中所有HTML元素 2:改变页面中所有HTML属性 3:改变页面中 ...
- javascript学习笔记(九):DOM操作HTML的各种方法使用
<!DOCTYPE html> <html> <head lang="en"> <meta chaset="UTF-8" ...
- JavaScript学习笔记系列1:JavaScript的是什么?
一.JS是什么? JavaScript作为Netscape Navigator浏览器的一部分首次出现在1996年.它最初的设计目标是改善网页的用户体验. 作者:Brendan Eich 期初JavaS ...
- JavaScript学习笔记——1.了解JavaScript
百度百科: JavaScript是一种属于网络的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果.通常JavaScript脚本是通过嵌入在HT ...
随机推荐
- Windows下部署Appium教程(Android App自动化测试框架搭建)
摘要: 1,appium是开源的移动端自动化测试框架: 2,appium可以测试原生的.混合的.以及移动端的web项目: 3,appium可以测试ios.android.firefox os: 4,a ...
- base64与byte[]之间转换
主要是根据BASE64Encoder 和BASE64Decoder 进行操作实现,具体例子如下: BASE64Encoder encode = new BASE64Encoder(); //将byte ...
- 【转】Android选项卡置底的方法
转载地址:http://www.oschina.net/code/snippet_163910_6092 发现很多Android应用的选项卡 都是显示在页面底部的,网上有资料:通过反射获取TabWid ...
- AngularJS中多个ng-app(手动加载模块)
1.当有多个ng-app时:(首先是要加载angularJS) <div ng-app=""> <p>姓名:<input type="tex ...
- linux git的安装与使用
一. Git安装. sudo apt-get install git 二.Git提交到远程仓. 1.到github或其coding(提供免费的私有仓)创建项目. 2.项目目录下初始化git. sudo ...
- Android study --- 广播
广播接收者 在Android系统运行时会产生很多事件,事件产生时,回想系统发送广播,只要向系统发送广播,系统就知道发生了相应的事件,从而执行相对应的代码.在系统中只要使用广播接受者,就可以接收广播 创 ...
- R语言基本操作函数---变量的基本操作
1.变量变换 as.array(x),as.data.frame(x),as.numeric(x),as.logical(x),as.complex(x),as.character(x) ...
- vchar2和nvchar2
Oracle中varchar2 nvarchar2 VARCHAR2(size),可变长度的字符串,其最大长度为 size 个字节.size 的最大值是 4000,而最小值是 1.您必须指定一个 VA ...
- 20161127-monkey
1.配置好adt-bundle-windows-x86-20131030 2.设置环境变量
- 查找二维数组list[][]中的最大的子数组的和
之前做过最大一维数组子数组的和的题目,现在将数组扩展成二维: 代码如下: #include<iostream> #define null -858993460 using namespac ...