Js制作选项卡小结

1.先构思好需要展示的页面效果,比如这样

2.需要显示的效果通过html和css制作出来,包括选项(第一课、第二课)的鼠标停留背景变色、下方选项页内容切换的内容等。

3.把此选项卡分为上下两个部分,并且3个选项对应3个选项页面。上方为id为tab的固定div,需要变换的是鼠标放入li时li切换背景(比如此时li为灰色背景);下方为content容器div,放入需要展示的内容(本例中为3个ul),初始效果为第一个ul显示block,后面两个为display:none。

4.将需要操作的元素提取出来,剩下的就是用代码实现元素的显示和隐藏。

个人总结:选项卡制作其实挺简单,一开始自己的想法是下方制作3个div来分别显示不同的选项页,后来查看源码时发现可以放入一个div(content)然后控制ul的显示来实现相同的效果,并且代码量变少,逻辑也更紧密,并且联系实际的话,下方若需固定高度则只需content设置即可。

下方为demo的代码行以及注释。

<!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=utf-8" />

<title>简易选项卡</title>

<style>

body,ul,li{margin: 0;padding: 0;}

body{font:12px/1.5 tahoma;}

#outer{width: 450px;margin:10px auto;}

#tab{overflow: hidden;zoom:1;background: #000;border: 1px solid #000;}

#tab li{float: left;color: #fff;height: 30px;cursor: pointer;line-height: 30px;list-style-type: none;padding: 0 20px;}

#tab li.current{color: #000;background: #ccc;}

#content{height: 100px;border: 1px solid #000;border-top-width: 0;}  /*通过容器高度可固定选项页高度。*/

#content ul{line-height: 25px;display: none;margin: 0 30px;padding: 10px 0;}

</style>

<script>

window.onload=function(){

var oLi=document.getElementById("tab").getElementsByTagName("li");  //提取选项li

var oUl=document.getElementById("content").getElementsByTagName("ul");  //提取容器内列表,此页有3个,目前第一个为block,其余为none

for (var i = 0; i < oLi.length ; i++) {

oLi[i].index=i;

oLi[i].onmouseover=function(){

//这里的length为3,循环重置tab中所有li的样式

for (var n = 0; n < oUl.length; n++) oLi[n].className="";

//这里的this为当前鼠标放置的li,此时再将样式设置为更改后的current

this.className="current";

//同前两段代码道理相同,先重置所有再单独设置当前

for (var n = 0; n < oUl.length; n++) oUl[n].style.display="none";

//因为选项和选项页为互相绑定,通过this.index可以确认需要显示的选项页

oUl[this.index].style.display="block";

};

};

}

</script>

</head>

<body>

<div id="outer">

<ul id="tab">

<li class="current">选项一</li>

<li>选项二</li>

<li>选项三</li>

</ul>

<div id="content">  <!-- 用一个div包裹多个ul,通过js设置ul的显示来实现选项卡的切换 -->

<ul style="display: block;">

<li>网页特效原理分析</li>

<li>响应用户操作</li>

<li>提示框效果</li>

</ul>

<ul>

<li>改变网页背景颜色</li>

<li>函数传参</li>

<li>高重用性函数的编写</li>

<li>126邮箱全选效果</li>

<li>循环及遍历操作</li>

<li>调试器的简单使用</li>

</ul>

<ul>

<li>JavaScript组成:ECMAScript、DOM、BOM,JavaScript兼容性来源</li>

<li>JavaScript出现的位置、优缺点</li>

</ul>

</div>

</div>

</body>

</html>

JavaScript学习笔记(二)——选项卡小结的更多相关文章

  1. Javascript学习笔记二——操作DOM

    Javascript学习笔记 DOM操作: 一.GetElementById() ID在HTML是唯一的,getElementById()可以定位唯一的一个DOM节点 二.querySelector( ...

  2. JavaScript学习笔记(二)——闭包、IIFE、apply、函数与对象

    一.闭包(Closure) 1.1.闭包相关的问题 请在页面中放10个div,每个div中放入字母a-j,当点击每一个div时显示索引号,如第1个div显示0,第10个显示9:方法:找到所有的div, ...

  3. javascript学习笔记二

    1.js的string对象 **创建 String对象 *** var str = "abc"; **方法 和 属性(文档) *** 属性 length : 字符串的长度 ***方 ...

  4. javascript学习笔记(四) Number 数字类型

    数字格式化方法toFixed().toExponential().toPrecision(),三个方法都四舍五入 toFixed() 方法指定小数位个数  toExponential() 方法 用科学 ...

  5. JavaScript学习笔记之数组(二)

    JavaScript学习笔记之数组(二) 1.['1','2','3'].map(parseInt) 输出什么,为什么? ['1','2','3'].map(parseInt)//[1,NaN,NaN ...

  6. amazeui学习笔记二(进阶开发4)--JavaScript规范Rules

    amazeui学习笔记二(进阶开发4)--JavaScript规范Rules 一.总结 1.注释规范总原则: As short as possible(如无必要,勿增注释):尽量提高代码本身的清晰性. ...

  7. Javascript学习笔记三——操作DOM(二)

    Javascript学习笔记 在我的上一个博客讲了对于DOM的基本操作内容,这篇继续巩固一下对于DOM的更新,插入和删除的操作. 对于HTML解析的DOM树来说,我们肯定会时不时对其进行一些更改,在原 ...

  8. AJax 学习笔记二(onreadystatechange的作用)

    AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...

  9. Java程序猿的JavaScript学习笔记(3——this/call/apply)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  10. Java程序猿JavaScript学习笔记(4——关闭/getter/setter)

    计划和完成这个例子中,音符的顺序如下: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScr ...

随机推荐

  1. 基于Babylonjs自制WebGL3D模型编辑器

    一.总述 当代WebGL编程所使用的3D模型大多是从3DsMax模型或Blender模型转化而来,这种工作模式比较适合3D设计师和3D程序员分工配合的场景.但对于单兵作战的WebGL爱好者来讲这种模式 ...

  2. oracle数据库常用的99条查询语句(转载)

    1. select * from emp; 2. select empno, ename, job from emp; 3. select empno 编号, ename 姓名, job 工作 fro ...

  3. java 操作 redis

    1.Java 使用 Redis 只需要下载一个jar包即可 地址:http://maven.outofmemory.cn/redis.clients/jedis/2.5.2/ 工程

  4. 使用gzip优化web应用(filter实现)

    相关知识: gzip是http协议中使用的一种加密算法,客户端向web服务器端发出了请求后,通常情况下服务器端会将页面文件和其他资源,返回到客户端,客户端加载后渲染呈现,这种情况文件一般都比较大,如果 ...

  5. Segmentation Faul

    转自:http://www.cnblogs.com/panfeng412/archive/2011/11/06/segmentation-fault-in-linux.html

  6. jmeter 环境部署、数据库设置、分布式设置、多网卡配置等随笔

    <!-- linux系统修改系统环境变量  系统语言-->[root@web-249 ~]# env|grep LANGLANG=zh_CN.UTF-8[root@web-249 ~]# ...

  7. vue2.0+element+node+webpack搭建的一个简单的后台管理界面

    闲聊: 今天是六一儿童节哟,小颖祝大家节日快乐哈哈哈.其实这个demo小颖断断续续做了将近两个礼拜了,心塞的,其实这个也没有多难,主要是小颖有点最近事情有点多,所以就把这个一直拖着,今天好不容易做好了 ...

  8. MD5加密算法(信息摘要算法)、Base64算法

    1 什么是MD5 信息摘要算法,可以将字符进行加密,每个加密对象在进行加密后都是等长的 应用场景:将用户密码经过MD5加密后再存储到数据库中,这样即使是超级管理员也没有能力知道用户的具体密码是多少:因 ...

  9. CSS小技巧-为内盒子添加margin-top时,会带着父盒子一起下来,如何解决?

    1.为父盒子添加一个padding 2.为父盒子添加一个border 3.为父盒子添加一个overflow:hidden

  10. Maximum Subarray Sum

    Maximum Subarray Sum 题意 给你一个大小为N的数组和另外一个整数M.你的目标是找到每个子数组的和对M取余数的最大值.子数组是指原数组的任意连续元素的子集. 分析 参考 求出前缀和, ...