HTML+CSS+JavaScript实现tab切换栏


HTML+CSS+JavaScript实现tab栏切换制作

准备部分

HTML部分:切换栏由一个列表组成 每个内容写在分别一个div盒子里

CSS部分:列表:去除序列点,给每个修改样式 ;内容:让整个内容都隐藏起来

JavaScript:获取切换栏元素和类容元素 ;功能:点击不同的任务 出现相应的内容 ,切换任务隐藏之前出现的内容和任务样式,单独出现相应的标题样式和内容

代码部分

第一步实现HTML与CSS的内容

 <div>
   <div>
     <ul class="tabTitle">
       <li>游戏</li>
       <li>音乐</li>
       <li>学习</li>
     </ul>
 
   </div>
   <div class="tabBody" >
     <div>游戏内容</div>
     <div>音乐内容</div>
     <div>学习内容</div>
   </div>
 <style>
  .tabTitle li{
     list-style: none;
     background-color: #4CAF50; /* Green */
     color: white;
     padding: 15px 32px;
     text-align: center;
     text-decoration: none;
     display: inline-block;
     font-size: 16px;
 
  }
 .tabBody div{
   display: none;
 }
 
 </style>

第二步JavaScript部分

 var tabTitle=document.querySelectorAll('li');//获取任务栏的元素
 var tabBody=document.querySelector('.tabBody').querySelectorAll('div');//获取内容元素
 for(var i=0;i<tabTitle.length;i++){//通过for循环使遍历tabTitle这个伪数组,使每个任务都能通过一个注册时间获得相同的功能
   tabTitle[i].setAttribute('index',i);//让每个任务都添加一个自创的属性index,通过index=i来让任务按0-tabTitle.length-1来排列,为后面切换任务出现自己独有的内容做准备
   tabTitle[i].onclick=function (){//给每个任务元素,注册事件(点击事件)
     for(var i=0;i<tabTitle.length;i++){//1.清除在js部分给任一任务添加的背景颜色
       tabTitle[i].style.backgroundColor='';
    }
     this.style.backgroundColor='red';//2.在1的情况下给点击的任务的背景颜色设为red
     var index=this.getAttribute('index')//获取当前点击的任务的index
     for (var i=0;i<tabBody.length;i++){
       tabBody[i].style.display='none';//1.清除在js部分给任一内容的display='block‘,隐藏上一个任务的内容
    }
     tabBody[index].style.display='block';//2.在1的情况下出现点击任务相应的类容
 
  }
 
 }

整体代码

 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <title>Title</title>
   <style>
    .tabTitle li{
       list-style: none;
       background-color: #4CAF50; /* Green */
       color: white;
       padding: 15px 32px;
       text-align: center;
       text-decoration: none;
       display: inline-block;
       font-size: 16px;
 
    }
  .tabBody div{
     display: none;
  }
 
   </style>
 </head>
 <body>
 
 <div>
   <div>
     <ul class="tabTitle">
       <li>游戏</li>
       <li>音乐</li>
       <li>学习</li>
     </ul>
 
   </div>
   <div class="tabBody" >
     <div>游戏内容</div>
     <div>音乐内容</div>
     <div>学习内容</div>
   </div>
 </div>
 <script>
   var tabTitle=document.querySelectorAll('li');//获取任务栏的元素
   var tabBody=document.querySelector('.tabBody').querySelectorAll('div');//获取内容元素
   for(var i=0;i<tabTitle.length;i++){//通过for循环使遍历tabTitle这个伪数组,使每个任务都能通过一个注册时间获得相同的功能
     tabTitle[i].setAttribute('index',i);//让每个任务都添加一个自创的属性index,通过index=i来让任务按0-tabTitle.length-1来排列,为后面切换任务出现自己独有的内容做准备
     tabTitle[i].onclick=function (){//给每个任务元素,注册事件(点击事件)
       for(var i=0;i<tabTitle.length;i++){//1.清除在js部分给任一任务添加的背景颜色
         tabTitle[i].style.backgroundColor='';
      }
       this.style.backgroundColor='red';//2.在1的情况下给点击的任务的背景颜色设为red
       var index=this.getAttribute('index')//获取当前点击的任务的index
       for (var i=0;i<tabBody.length;i++){
         tabBody[i].style.display='none';//1.清除在js部分给任一内容的display='block‘,隐藏上一个任务的内容
      }
       tabBody[index].style.display='block';//2.在1的情况下出现点击任务相应的类容
 
    }
 
  }
 
 
 </script>
 
 
 </body>
 </html>

效果图片

 

 

 

 

 

 

posted @   自不自然  阅读(715)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示