Maison  >  Article  >  interface Web  >  Quatre façons d'implémenter le changement d'onglet dans les compétences javascript_javascript

Quatre façons d'implémenter le changement d'onglet dans les compétences javascript_javascript

WBOY
WBOYoriginal
2016-05-16 15:33:371834parcourir

Le changement d'onglet est très courant dans les pages Web, nous avons donc récemment résumé 4 méthodes de mise en œuvre.
Tout d'abord, écrivez le cadre de l'onglet et ajoutez le style le plus simple. Le code est le suivant :

<!DOCTYPE html>
 <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;
 }
 </style>
 </head>
 <body>
 <div id="tanContainer">
  <div id="tab">
  <ul>
   <li>标题一</li>
   <li>标题二</li>
   <li>标题三</li>
   <li>标题四</li>
  </ul>
  </div>
  <div id="tabCon">
  <div>内容一</div>
  <div>内容二</div>
  <div>内容三</div>
  <div>内容四</div>
  </div>
 </div>
 </body>
 </html>

L'effet d'affichage actuel est le suivant :

Les quatre titres d'onglets et les quatre zones de contenu sont tous affichés sur la page. Nous devons maintenant obtenir l'effet de changement d'onglet, c'est-à-dire cliquer sur le premier titre, le premier contenu sera affiché et les autres contenus ne seront pas affichés ; cliquez sur le titre deux, le contenu deux sera affiché. Les autres contenus ne seront pas affichés...
L'idée générale est donc très simple. Lier les événements à quatre titres. Lorsqu'il est déclenché, le contenu correspondant est affiché et les autres contenus sont masqués.

Méthode 1 : Le contenu correspondant au titre cliqué est affiché, et le contenu correspondant au titre non cliqué est masqué. Le code est le suivant :

 <!DOCTYPE html>
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <style>
 *{
  padding: 0;
  margin: 0;
 }
 li{
  list-style: none;
 }
 </style>
 <script>
 function tab(pid){
  var tabs=["tab1","tab2","tab3","tab4"];
  for(var i=0;i<4;i++){
   if(tabs[i]==pid){
    document.getElementById(tabs[i]).style.display="block";
  }else{
    document.getElementById(tabs[i]).style.display="none";
  }
  }
 }
 </script>
</head>
 <body>
 <div id="tanContainer">
  <div id="tabNav">
  <ul>
   <li onclick="tab('tab1')">标题一</li>
   <li onclick="tab('tab2')">标题二</li>
   <li onclick="tab('tab3')">标题三</li>
   <li onclick="tab('tab4')">标题四</li>
  </ul>
  </div>
  <div id="tab">
   <div id="tab1">内容一</div>
  <div id="tab2">内容二</div>
   <div id="tab3">内容三</div>
  <div id="tab4">内容四</div>
  </div>
 </div>
 </body>
 </html>

Méthode 2 : Définissez d'abord que tout le contenu soit masqué, puis cliquez sur le titre pour afficher le contenu concerné. Le code est le suivant :

 <!DOCTYPE html>
 <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_1{
 display: none;
 }
 #tabCon_2{
  display: none;
 }
 #tabCon_3{
 display: none;
 }
 </style>
 <script>
 function changeTab(tabCon_num){
 for(i=0;i<=3;i++) { 
  document.getElementById("tabCon_"+i).style.display="none"; //将所有的层都隐藏 
  } 
  document.getElementById("tabCon_"+tabCon_num).style.display="block";//显示当前层 
 } 
 </script>
 </head>
 <body>
 <div id="tanContainer">
  <div id="tab">
  <ul>
   <li onclick="changeTab('0')">标题一</li>
   <li onclick="changeTab('1')">标题二</li>
   <li onclick="changeTab('2')">标题三</li>
   <li onclick="changeTab('3')">标题四</li>
  </ul>
 </div>
  <div id="tabCon">
  <div id="tabCon_0">内容一</div>
  <div id="tabCon_1">内容二</div>
  <div id="tabCon_2">内容三</div>
  <div id="tabCon_3">内容四</div>
 </div>
 </div>
 </body>
 </html>

Méthode 3 : l'affichage et le masquage sont contrôlés par la possession de la classe. Tout d'abord, masquez tout le contenu et définissez l'affichage sur aucun, puis définissez l'affichage de la classe pour qu'il parcoure tous les nœuds de titre et de contenu. . Après avoir cliqué sur le titre, le nœud de titre et le nœud de contenu correspondant ont des classes, mais pas les autres. Le code est le suivant :

 <!DOCTYPE html>
 <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>

L'inconvénient de cette méthode est qu'il ne peut plus y avoir de balise div sous le div du bloc de contenu.

Méthode 4 : Au lieu de js, utilisez "input:checked" pour changer d'onglet. Masquez d'abord tout le contenu et affichez le contenu sélectionné. Le code est le suivant :

 <!DOCTYPE html>
 <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>

L'inconvénient de cette méthode est que le basculement entre les différentes zones ne peut se faire qu'en cliquant.

Ce qui précède est un résumé de la méthode de mise en œuvre du changement d'onglet pour tout le monde. J'espère que cela sera utile à l'apprentissage de chacun. Suivez cette idée et commencez à créer vos propres effets de changement d'onglet.

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn