javascript实现tab切换的方法(2)

方法三:显示和隐藏通过是有拥有class控制,先把所有的内容隐藏dispaly设为none,而该class的display设置为block,遍历所有标题节点和内容节点,点击标题后,该标题节点和对用的内容节点拥有class,其他的没有。

 

< html >

 

< head >

 

< meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" />

 

< style >

 

*{

 

  padding: 0;

 

  margin: 0;

 

}

 

li{

 

  list-style: none;

 

  float:left;

 

}

 

#tabCon {

 

  clear: both;

 

}

 

#tabCon div {

 

  display:none;

 

}

 

#tabCon div.fdiv {

 

  display:block;

 

}

 

</ style >

 

</ head >

 

< body >

 

< div id = "tanContainer" >

 

  < div id = "tab" >

 

  < ul >

 

   < li class = "fli" >标题一</ li >

 

   < li >标题二</ li >

 

   < li >标题三</ li >

 

   < li >标题四</ li >

 

  </ ul >

 

  </ div >

 

  < div id = "tabCon" >

 

  < div class = "fdiv" >内容一</ div >

 

  < div >内容二</ div >

 

  < div >内容三</ div >

 

  < div >内容四</ div >

 

</ div >

 

</ div >

 

</ body >

 

< script >

 

var tabs=document.getElementById("tab").getElementsByTagName("li");

 

var divs=document.getElementById("tabCon").getElementsByTagName("div");

 

 

 

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

 

  tabs[i] .onclick = function (){change(this);}

 

}

 

 

 

function change(obj){

 

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

 

  if(tabs[i]==obj){

 

  tabs[i] .className = "fli" ;

 

  divs[i] .className = "fdiv" ;

 

}else{

 

  tabs[i] .className = "" ;

 

  divs[i] .className = "" ;

 

  }

 

  }

 

}

 

</script>

 

</ html >

该方法的缺点是,内容块的div下面不能再有div标签了。

方法四:不用js,用“input:checked”来做tab切换,先把所有的内容隐藏,被选中的内容显示。
< html >
< head >
< meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" />
< title >input:checked实现tab切换</ title >
< style >
input{
opacity: 0;/*隐藏input的选择框*/
}
label{
cursor: pointer;/*鼠标移上去变成手状*/
float: left;
}
label:hover{
background: #eee;
}
input:checked+label{
color: red;
}
/*选择前面有.tabs input:nth-of-type(x):checked的.panels .panel:nth-child(x)*/
.tabs input:nth-of-type(1):checked~.panels .panel:nth-child(1),
.tabs input:nth-of-type(2):checked~.panels .panel:nth-child(2){
opacity: 1;
}
.panel{
opacity: 0;
position: absolute;/*使内容区域位置一样*/
}
</ style >
</ head >
< body >
< div class = "tabs" >
  < input checked id = "one" name = "tabs" type = "radio" >
  < label for = "one" >标题一</ label >
 
  < input id = "two" name = "tabs" type = "radio" >
  < label for = "two" >标题二</ label >
 
  < div class = "panels" >
   < div class = "panel" >
   < p >内容一</ p >
   </ div >
   < div class = "panel" >
   < p >内容二</ p >
   </ div >
  </ div >
</ div >
</ body >
</ html >

该方法的缺点是,不同区域切换只能通过点击。

 

转载于:https://www.cnblogs.com/Marlboro-pm/p/6559048.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值