Faire des onglets en Javascript
Bonjour à tous! Voilà un petit tutoriel pour vous apprendre à faire des onglets en Javascript! Il est à noter que c'est très utile pour nos PA et nos QEEL qui demandent des onglets, et c'est parfois plus facile à comprendre que l'utilisation du :target en CSS. Cependant le javascript ne marche pas dans les messages forumactif (et ce, pour des questions de sécurité), c'est à dire que vous ne pouvez pas utiliser ce code dans les messages, mais uniquement sur le templates ou la page d'accueil de votre forum! Si vous voulez des onglets dans vos messages, il faudra passer par le CSS!
Ce tutoriel est donc une généralisation du tutoriel de Sui pour faire un QEEL en onglets. Il faut bien comprendre que vous pouvez l'utiliser de plein de façon différentes, autres que pour un QEEL: que ce soit une PA, un profil, une signature dans une iframe, une fiche de pub, etc. C'est donc un tutoriel pour que vous compreniez les mécanismes derrière et puissiez les réutiliser comme bon vous semble!
Le Javascript
Commençons tout de suite par un premier bout de script:
- Code:
<script type="text/javascript">
//<!--
function change_onglet(name)
{
document.getElementById('onglet_'+anc_onglet).className = 'onglet_0 onglet';
document.getElementById('onglet_'+name).className = 'onglet_1 onglet';
document.getElementById('contenu_onglet_'+anc_onglet).style.display = 'none';
document.getElementById('contenu_onglet_'+name).style.display = 'block';
anc_onglet = name;
}
//-->
</script>
Ca fait beaucoup n'est-ce pas? Et pour la plupart d'entre vous, ce sera probablement du charabia! Mais pas de panique, les explications arrivent, pas à pas, tout de suite!
Tout d'abord un petit mot sur ces balises:
- Code:
<script type="text/javascript"></script>
Cela implique que entre ces deux balises, vous retrouverez un code javascript. Facile donc de le repérer au milieu du reste du HTML: il suffit de chercher les balises script!
Commençons maintenant l'analyse du code en lui-même!
- Code:
function change_onglet(name)
Le terme important est donc function car cela signifie qu'on déclares une fonction javascript.
- Code:
document.getElementById('onglet_'+anc_onglet).className = 'onglet_0 onglet';
Donc, pour essayer d'expliquer un peu mieux que ce charabia: pour l'onglet qui était actif avant le click, on change la class actuel par la class "onglet_0 onglet".
Notons que la class "onglet_0 onglet" est en réalité deux class: onglet et onglet_0. On pourrait également les nommer autrement! En effet, ces class sont surtout là pour ensuite, par le CSS, mettre en forme les onglets! onglets étant la classe de TOUS les anglets, et onglet_0, la class des onglets inactifs.
- Code:
document.getElementById('onglet_'+name).className = 'onglet_1 onglet';
Notons, encore une fois, que la classe pourrait changer! En effet, on pourrait l’appeler comme on veut, cela permet simplement de mettre dans le CSS une certaine mise en forme! On n'est d'ailleurs pas obligé d'avoir deux class!
En effet, avoir deux class (dont une seule qui change) permet de donner à tous les onglets la même mise en forme, mais de donner une différence tout de même à l'onglet actif et aux onlgets inactifs. Par exemple, les class pourraient très ben être inactif onglet et actif onglet respectivement!
D'ailleurs, si on ne souhaite pas que tous les onglets aient la même mise en forme, on pourrait tout simplement supprimer "onglet" et simplement avoir:
- Code:
document.getElementById('onglet_'+anc_onglet).className = 'inactif';
document.getElementById('onglet_'+name).className = 'actif';
Passons à la suite:
- Code:
document.getElementById('contenu_onglet_'+anc_onglet).style.display = 'none';
En gros, on fait en sorte que l'onglet courant ne s'affiche plus.
- Code:
document.getElementById('contenu_onglet_'+name).style.display = 'block';
Notez qu'on pourrait également changer ici le CSS, par exemple en mettant opacity, qui passerait de 0 à 1. Dans le CSS, on pourrait alors mettre une transition dans l'endroit concerné! Il faut aussi faire attention, plus loin, dans le CSS, que l'on ne mette pas display:none mais bel et bien opacity: 0 (cf plus tard, la partie CSS).
Et enfin:
- Code:
anc_onglet = name;
Passons à présent au second bout de code javascript nécessaire:
- Code:
<script type="text/javascript">
//<!--
var anc_onglet = 'un';
change_onglet(anc_onglet);
//-->
</script>
Faites bien attention à ce que vous remplaciez "un" par le nom effectif d'un de vos onglets!
Le HTML
Tout d'abord, créons les "boutons" des onglets, c'est à dire, sr quoi on va cliquer pour afficher les onglets!
- Code:
<span class="onglet_0 onglet" id="onglet_un" onclick="javascript:change_onglet('un');"> Onglet 1</span><span class="onglet_0 onglet" id="onglet_deux" onclick="javascript:change_onglet('deux');"> Onglet 2</span>
Il suffit de copier ce bout de code:
- Code:
<span class="onglet_0 onglet" id="onglet_NOM" onclick="javascript:change_onglet('NOM');">TITRE_ONGLET</span>
Ce bout de code:
- Code:
onclick="javascript:change_onglet('deux');"
Et maintenant, créons le contenu des onglets:
- Code:
<div class="contenu_onglet" id="contenu_onglet_un">Contenu du 1er onglet</div>
<div class="contenu_onglet" id="contenu_onglet_deux">Contenu du 2ième onglet</div>
Bien sûr, comme plus tôt, cette partie est à copier et à nommer pour autant d'onglets que l'on a du même nom que le bouton d'onglet correspondant:
- Code:
<div class="contenu_onglet" id="contenu_onglet_NOM">Contenu du NOMième onglet</div>
Si vous voulez mettre une image comme "bouton" de votre onglet, il suffit de faire ceci:
- Code:
<span class="onglet_0 onglet" id="onglet_NOM" onclick="javascript:change_onglet('NOM');"><img src="URL_DE_L'IMAGE" /></span>
Le CSS
Le seul code obligatoire à mettre est celui-ci:
- Code:
.contenu_onglet {
display:none;
}
Le reste du code CSS est optionnel, mais bien sûr, pour mettre en forme correctement, vous en aurez besoin!
Voici donc le squelette, sans rien dedans, pour la mise en forme! Attention cependant, si vous avez changé le nom de certaines classes, il faudra aussi les changer dans le CSS!
- Code:
.onglet {
/* Permet de mettre en forme tous les onglets (enfin la partie à clicker). Par exemple, de tous les entourer. */
}
.onglet_0 {
/* Permet de mettre en forme tous les onglets inactifs. PAr exemple, leur donner une couleur ou couleur de fond particulière. */
}
.onglet_1 {
/* Permet de mettre en forme l'onglet actif. Par exemple, lui donner une couleur ou couleur de fond particulière. */
}
#onglet_NOM {
/* Changez NOM par le nom de l'onglet à modifier. Cela permet de mettre en forme un onglet en particulier. */
}
.contenu_onglet {
/* Mise en forme de tous les contenus d'onglets. Utile notamment pour les positionner quelque part */
}
#contenu_onglet_NOM {
/* Changez NOM par le nom du contenu d'onglet à modifier. Cela permet de mettre en forme un contenu d'onglet en particulier. */
}
Et voilà, c'est un peu tout! Si vous avez des questions ou que des passages n'étaient pas clairs, n'hésitez pas à demander!
Dernière édition par NyoTheNeko le Jeu 22 Jan 2015 - 21:44, édité 1 fois