JS-制作网页特效——选项卡效果(水平,点击)

简介: //总结:这个样式的思维很重要,以前刚开始做,想的都是,怎么获取到自己点击的是哪一个li,然后给他以对应的div样式。后来发现难点是,怎么找到另外两个没有被点击的li和他们对应的div。把他们的样式去掉。

//总结:这个样式的思维很重要,以前刚开始做,想的都是,怎么获取到自己点击的是哪一个li,然后给他以对应的div样式。后来发现难点是,怎么找到另外两个没有被点击的li和他们对应的div。把他们的样式去掉。现在恍然,这种“打扫完屋子再请客”的思维,先把所有的都去掉,再想给谁添加就给谁添加就可以了呀!看来以后,想拿起什么东西前,得先学会把该放下的放下。不然,难为的只有自己。

<!DOCTYPE html>
<html>

<head>

<meta name="author" content"郭菊锋,702004176@qq.com">
<meta charset="UTF-8">
<title>选项卡</title>
<style type="text/css">
* {
margin: 0;
padding: 0;
}

a {
text-decoration: none;
color: black;
}

li {
list-style: none;
}

.tapWrap {
border: 3px dotted #4169E1;
width: 25%;
margin: 10px auto;
padding: 10px;
-webkit-border-radius: 8px;
-moz-border-radius: 8px;
border-radius: 8px;
}

ul.tapHeadWrap li {
width: 75px;
height: 45px;
line-height: 45px;
text-align: center;
display: inline-block;
border: 2px solid #ccc;
background-color: white;
}

.tapWrap div {
width: 94%;
padding: 10px;
margin-top: -4px;
border: 2px solid #ccc;
}
.tapWrap>ul li:hover,
.tapWrap div {
border-top: 3px solid #DC143C;
}
.tapWrap div li{
margin: 5px 0;
}
.tapWrap div a:hover{
text-decoration: underline;
color: #DC143C;
}
.tapWrap>ul li:hover,
.tapWrap div a:hover {
cursor: pointer;
}

ul.tapHeadWrap li.on {
border-top: 3px solid #DC143C;
border-bottom: 7px solid #fff;
}
.hide{
display: none;
}
</style>
</head>

<body>
<div class="tapWrap" id="tapWrap">
<ul id="tapHeadWrap" class="tapHeadWrap">
<li class="on">房产</li>
<li>家居</li>
<li>二手房</li>
</ul>
<div>
<ul>
<li>
<a href="javascript:;">275万购昌平邻铁三居 总价20万买一居</a>
</li>
<li>
<a href="javascript:;">200万内购五环三居 140万安家东三环</a>
</li>
<li>
<a href="javascript:;">北京首现零首付楼盘 53万购东5环50平</a>
</li>
<li>
<a href="javascript:;">京楼盘直降5000 中信府 公园楼王现房</a>
</li>
</ul>
</div>
<div class="hide">
<ul>
<li>
<a href="javascript:;">40平出租屋大改造 美少女的混搭小窝</a>
</li>
<li>
<a href="javascript:;">经典清新简欧哀家 90平老房焕发新生</a>
</li>
<li>
<a href="javascript:;">新中式的酷色温情 66平撞色活泼家居</a>
</li>
<li>
<a href="javascript:;">瓷砖就像选好老婆 卫生间烟道的设计</a>
</li>
</ul>
</div>
<div class="hide">
<ul>
<li>
<a href="javascript:;">通州豪华3居260万 二环稀缺2居250w甩</a>
</li>
<li>
<a href="javascript:;">西3环通透2居290万 130万2居限量抢购</a>
</li>
<li>
<a href="javascript:;">皇城根小学学区仅260万 121平70万抛!</a>
</li>
<li>
<a href="javascript:;">独家别墅280万 苏州桥2居优惠价248万</a>
</li>
</ul>
</div>
</div>
</body>
<script type="text/javascript">
window.onload = function(){
var tapDivWrap = document.getElementById('tapWrap');
var tapDiv = tapDivWrap.getElementsByTagName('div');
// alert(tapDiv.length)
var tapUl = document.getElementById('tapHeadWrap');
var tapLi = tapUl.getElementsByTagName('li');//此例中:利用tagName的方式获取下边的标签更方便
// alert(tapLi.length)
for(var i=0;i<tapLi.length;i++){
tapLi[i].index = i;//对三个li进行重新的编号,现在li[0,1,2]分别对应是0,1,2了,。具体原理明白就是说不出来,反正就是死记硬背知道这种方式,是用来对一个获取到的数组进行重新从零开始编号就对了,以方便下边获取他的下标索引对齐进行对应的操作
tapLi[i].onclick = function(){
for(var j = 0;j<tapLi.length;j++){//超出tapLi的长度就是超出了taoLi[i]中的值,会有未定义的错误出现
tapLi[j].className = "";//这里的tapLi[j]==tapLi[i]的值吗?不等于,这里的作用是让j【也就是从0-2,因为j小于li的长度,j又是从0开始的,所以j就是在0,1,2这三个数上面循环一遍】

//alert(tapLi[j].index);//由此调试循环得出,j分别是0,1,2.对应到html中,就是第一个li、第二个li、第三个li的className都成了0.这样先全部清除掉,到了下边j循环外,this.className处,再把点击的对应的li加上className。
tapDiv[j].className = "hide";//让所有的都先隐藏

 tapDiv[j].style.display = 'none';//对应的这里也就不能再用className了,而要改成style,上一行的className就要删掉
}

//j循环的外边
this.className = "on";//this代指tapLi[i],当前所点击的li,给他添加类名
tapDiv[this.index].className = "";//this.index=tapLi[i].index,具体作用下边alert做调试得知,就是得到一个对应你点击的li的下标(即一个数字),这个数字再搭配tapDiv[]的方式,自然就是获取和当前li对应的div了,因为div的下标也是从0开始共三个数的。这样,给当前被点击li对应的div空类名,去除掉j循环中添加在他身上的hide枷锁,他就得意重见天日了!

//这里最后把className忘记了,害得我调试了半天。记得思维不能忘,就是通过className来更改他的css样式,或者也可以对应上面j循环里,添加隐藏样式那地方(绿色位置)直接更改css样式:如下
tapDiv[this.index].style.display = 'block';

 

//alert(this.index);//调试:得到的是当前被点击的li的下标


    }
  }
}
</script>

<!--清爽js代码如下-->

 1 <script type="text/javascript">
 2         window.onload = function() {
 3             var tapDivWrap = document.getElementById('tapWrap');
 4             var tapDiv = tapDivWrap.getElementsByTagName('div');
 5             var tapUl = document.getElementById('tapHeadWrap');
 6             var tapLi = tapUl.getElementsByTagName('li');
 7             for(var i = 0; i < tapLi.length; i++) {
 8                 tapLi[i].index = i;
 9                 tapLi[i].onclick = function() {
10                     for(var j = 0; j < tapLi.length; j++) {
11                         tapLi[j].className = "";
12                         tapDiv[j].className = "tapHideDiv";
13                     }
14                     this.className = "tapActiveLi";
15                     tapDiv[this.index].className = "";
16                 }
17             }
18         }
19     </script>
View Code

 


</html>

目录
相关文章
|
2月前
|
存储 JavaScript 前端开发
使用JavaScript构建动态交互式网页:从基础到实践
【10月更文挑战第12天】使用JavaScript构建动态交互式网页:从基础到实践
120 1
|
3月前
|
编解码 前端开发 JavaScript
javascript检测网页缩放演示代码
javascript检测网页缩放演示代码
|
3月前
|
存储 JavaScript 前端开发
JavaScript编程实现tab选项卡切换的效果+1
JavaScript编程实现tab选项卡切换的效果+1
|
3月前
|
Web App开发 JavaScript 前端开发
添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码 IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常
添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码 IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常
|
20天前
|
缓存 JavaScript 前端开发
JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用
本文深入讲解了 JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用。
29 5
|
1月前
|
数据采集 存储 监控
实现自动化数据抓取:使用Node.js操控鼠标点击与位置坐标
本文介绍了如何使用Node.js和Puppeteer实现自动化数据抓取,特别是针对新闻网站“澎湃新闻”。通过设置代理IP、User-Agent和Cookie,提高爬虫的效率和隐蔽性,避免被网站封锁。代码示例展示了如何模拟鼠标点击、键盘输入等操作,抓取并整理新闻数据,适用于需要规避IP限制和突破频率限制的场景。
81 10
|
1月前
|
JavaScript
js实现简洁实用的网页计算器功能源码
这是一款使用js实现简洁实用的网页计算器功能源码。可实现比较基本的加减乘除四则运算功能,界面简洁实用,是一款比较基本的js运算功能源码。该源码可兼容目前最新的各类主流浏览器。
24 2
|
1月前
|
JavaScript
js实现的精美彩色tab选项卡切换特效源码
js实现的精美彩色tab选项卡切换特效源码是一段基于JS实现的文件夹tab选项卡切换效果,拥有彩色、单色两种选择,点击标签选项卡可实现相应的变色效果,非常有意思,欢迎对此段代码感兴趣的朋友前来下载使用。
30 2
|
2月前
|
存储 JavaScript 前端开发
【JavaScript】网页交互的灵魂舞者
本文介绍了 JavaScript 的三种引入方式(行内、内部、外部)和基础语法,包括变量、数据类型、运算符、数组、函数和对象等内容。同时,文章还详细讲解了 jQuery 的基本语法和常用方法,如 `text()`、`html()`、`val()`、`attr()` 和 `css()` 等,以及如何插入和删除元素。通过示例代码和图解,帮助读者更好地理解和应用这些知识。
28 1
【JavaScript】网页交互的灵魂舞者
|
2月前
|
JavaScript
js学习--制作选项卡
js学习--制作选项卡
38 4