目录

实现点击变色效果:

点击之后下面的内容跟着变化

全部代码:

最后:


界面效果图如上,点击第二栏后第二栏变为红色,下面显示第二栏的内容。

html代码:如下

<header class="w"><ul><li>商品介绍</li><li>规格与包装</li><li>售后保障</li><li>商品评价</li><li>手机社区</li></ul><div class="tab_cont"><div class="item" style="display: block;">1</div><div class="item">2</div><div class="item">3</div><div class="item">4</div><div class="item">5</div></div></header>

实现点击变色效果:

1.写一个current属性,把背景颜色改为红色,字体改为白色。

.current
{/*背景变红*/background-color: red;/* 字体变白 */color: white;
}

2.要使每一个li标签点击后变色,只需要用js代码找到点击的li标签,并给对应的li标签加上current属性便可以实现变色效果。

<script>// 找到tab栏标题的每一项li存到tab数组中var tab = document.querySelector('ul').querySelectorAll('li');// 使用for循环给tab数组每一项设置监听for(var i = 0;i<tab.length;i++){tab[i].onclick = function(){// 排他思想,把所有元素属性清空for(var j=0;j<tab.length;j++)tab[j].className='';// 点击后把current属性加上this.className='current';}}</script>

3.排它思想:先把所有元素的属性清空,在给目前点击的元素设置对应的属性。这样可以保证点击的时候只有点击到的元素有变色效果。

点击之后下面的内容跟着变化

1.先给所有div元素设置隐藏,由于要让第一个内容模块一开始就显示,所以要给第一个内容模块先设置可见,采用行内样式直接设置。

.item
{display: none;
}

2.由于要让所有li元素于div元素对应起来,所以采用自定义元素给li设置一个值,在for循环内利用i来设置,之后在onclick方法内获取到对应的index属性值,setAttribute方法第一个参数是自定义属性名,第二个是自定义属性的值。

// 用js数组给items设置一个自定义属性,tab数组的每一项与之对应
tab[i].setAttribute("index",i);

3.排他思想:一旦点击li就让对应的div元素显示,其他div元素隐藏

        // 找到内容栏的每一项var items = document.querySelector('.tab_cont').querySelectorAll('div');// 使用for循环给tab数组每一项设置监听for(var i = 0;i<tab.length;i++){// 用js数组给items设置一个自定义属性,tab数组的每一项与之对应tab[i].setAttribute("index",i);// 给所有按钮设置监听tab[i].onclick = function(){// 排他思想,把所有元素属性清空for(var j=0;j<tab.length;j++)tab[j].className='';// 点击后把current属性加上this.className='current';var index=this.getAttribute('index');for(var k=0;k<items.length;k++)items[k].style.display="none";items[index].style.display='block';}}

这样就可以实现tab栏和内容的切换了

全部代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>*
{margin: 0;padding: 0;border: 0;
}
body
{position: relative;
}
header
{background-color: aquamarine;
}
.w
{width: 700px;margin: 0 auto;
}
header>ul li
{padding: 5px 30px;height: 30px;display: inline-block;list-style: none;
}
header ul
{background-color: rgb(248, 248, 248);border-bottom:orange solid 2px;
}
.item
{display: none;
}
.current
{/*背景变红*/background-color: red;/* 字体变白 */color: white;
}</style>
</head>
<body><header class="w"><ul><li>商品介绍</li><li>规格与包装</li><li>售后保障</li><li>商品评价</li><li>手机社区</li></ul><div class="tab_cont"><div class="item" style="display: block;">1</div><div class="item">2</div><div class="item">3</div><div class="item">4</div><div class="item">5</div></div></header><script>// 找到tab栏标题的每一项存到tab数组中var tab = document.querySelector('ul').querySelectorAll('li');// 找到内容栏的每一项var items = document.querySelector('.tab_cont').querySelectorAll('div');// 使用for循环给tab数组每一项设置监听for(var i = 0;i<tab.length;i++){// 用js数组给items设置一个自定义属性,tab数组的每一项与之对应tab[i].setAttribute("index",i);// 给所有按钮设置监听tab[i].onclick = function(){// 排他思想,把所有元素属性清空for(var j=0;j<tab.length;j++)tab[j].className='';// 点击后把current属性加上this.className='current';// 找到目前点击的li元素的下标var index=this.getAttribute('index');// 排它思想for(var k=0;k<items.length;k++)items[k].style.display="none";// 把于li元素同样下标的div元素显示items[index].style.display='block';}}</script>
</body>
</html>

最后:

第一篇博客,是在自己离开软协后写的,希望通过这种方式记录自己的学习过程吧,更是督促自己不要堕落下去,不要忘了自己是个学生。虽然很简单,但是那怕只是学了一点,每天也会进步一点。

js实现tab栏的切换相关推荐

  1. JavaScript基础 - 经典案例3 - tab栏选项卡切换

    通常我们用 js 写 tab 栏切换功能会用到 排他思想,即干掉其他人,留下我自己 但也可以用一个更有效率的方法:找出那个特殊的人,精准干掉他,放过其他无辜的人,然后留下我自己 实现过程:假设需要切换 ...

  2. 原生JS实现 ‘Tab栏切换’,‘手风琴’,‘轮播图’效果

    1.小天使跟随鼠标效果 <!DOCTYPE html> <html lang="en"><head><meta charset=" ...

  3. JS实现Tab栏切换

    记录使用JS实现Tab切换的效果 实现过程如下,首先利用排他思想选定模块选项卡,随后根据用户自定义标签再次利用排他思想显示内容模块. 具体代码如下 <head>* {margin: 0;p ...

  4. tab栏自动切换功能 鼠标移动上去取消自动切换 离开启动自动切换

    <!DOCTYPE html> <html><head><meta charset="utf-8" /><meta name= ...

  5. 纯CSS实现Tab栏的切换

    思路 利用input标签的radio类型中的checked属性控制当前选中tab 隐藏radio的显示,用label标签的for属性关联radio,对label进行样式编写实现tab栏的自定义. 一个 ...

  6. js高级—tab栏切换(面向对象做法)

    <main><h4>Js 面向对象 动态添加标签页</h4><div class="tabsbox" id="tab" ...

  7. 原生js实现tab栏切换效果

    我是歌谣 放弃很容易 但是坚持一定很酷 微信公众号关注小歌谣一起学习前后端知识 运行效果 首先我们来看一下原生js实现的效果 下面就开始直接上代码了 index.html <!DOCTYPE h ...

  8. Element-ui tab栏的切换

    代码: <template><div class=""><h3>{{ id }}</h3><div class="d ...

  9. tab栏的切换【DOM点击事件】

    不太美观,但是想把这段js代码放上来,自己翻着玩. <style type="text/css"> .Box { width: 240px; border: 1px s ...

最新文章

  1. Welcome to Swift (苹果官方Swift文档初译与注解三十四)---241~247页(第五章-- 函数)
  2. 过滤查询集中的空名称或NULL名称
  3. Distributed Transaction Coordinator 服务因 3221229584 (0xC0001010) 服务性错误而停止
  4. Go gin web框架介绍
  5. MVP Community Camp 社区大课堂
  6. python-双层嵌套循环-打印小星星
  7. 《大型网站架构技术》系列分享专栏
  8. PHP中的Array类型其实是Hashtable
  9. centos7下搭建hadoop、hbase、hive、spark分布式系统架构
  10. 管理分支:git branch
  11. svnadmin hotcopy
  12. ocx注册方法,vs安装包自动安装ocx,以及ocx注册失败的解决方法
  13. c语言智能手环程序,首款医学智能手环c+手环使用图文教程
  14. SAP MM库存盘点流程
  15. 1.25 Tic-tac-toe
  16. 【Python扩展阅读EasyGui 学习文档【超详细中文版】】
  17. C中%g(G)g格式符用法详解
  18. 数据的物理独立性和数据的逻辑独立性
  19. android手机舆情分析,基于Android平台的环境公共舆情监督系统研究
  20. GCC版本对C++的支持情况

热门文章

  1. Swift语言学习(一)
  2. 进击的 AI 生成,创造性的新世界!
  3. kruskal算法c语言,最小生成树之Kruskal算法
  4. 【案例精选】聚铭网络流量智能分析审计系统助力六安市司法局推进网络安全防护建设
  5. adb命令查看android系统用户userid
  6. 采购管理软件有哪些给你一份主流采购管理工具排行榜 - 副本
  7. python进阶练习题:括号是响亮!【难度:2级】--景越Python编程实例训练营,不同难度Python习题,适合自学Python的新手进阶
  8. Let me introduce myself
  9. laradock配置多php版本
  10. 本地电商赛道拥挤,同城零售将是下一个万亿级风口?