Animer une "transition"

Par Théo Benoit, il y a 8 ans


Bonjour,

Je développe un petit site et j'ai réussi à faire ce que je voulais, implémenter une page dans une autre page (un peu comme sur IOS):
je vous montre le code et je vous explique après (code fais par moi-même, donc pas un truc de dingue, mais ça fonctionne, je suis ouvert à toutes critiques, je suis débutant) :

HTML:

<div class="panelWrapper"> <div id="overview" class="current"> Overview </div> <div id="overview" class="hidden"> Détails </div> <div id="overview" class="hidden"> Commande </div> <div id="overview" class="hidden"> Profil </div> </div>

CSS:

.hidden{ position: absolute; left: 0; right: 0; top: 0; bottom: 0; display: none; z-index:-1 } .current{ z-index: 2; } .panelWrapper{ postion: relative; overflow: hidden; }

JavaScript:

function changeTab($tab1,$tabClass1, $tab2,$tabClass2, $tab3,$tabClass3, $tab4,$tabClass4){ $($tab1).removeClass('hidden'); $($tab1).addClass('current'); // On cherche la tab qui a la class current if($tabClass1 === 'current') { $($tab1).removeClass('current'); $($tab1).addClass('hidden'); } else if ($tabClass2 === 'current') { $($tab2).removeClass('current'); $($tab2).addClass('hidden'); } else if ($tabClass3 === 'current') { $($tab3).removeClass('current'); $($tab3).addClass('hidden'); } else if ($tabClass4 === 'current') { $($tab4).removeClass('current'); $($tab4).addClass('hidden'); } } function changeContent(){ // CHANGE TAB // TABS tab1 = "#overview"; tabClass1 = $(tab1).attr('class'); tab2 = "#details"; tabClass2 = $(tab2).attr('class'); tab3 = "#order"; tabClass3 = $(tab3).attr('class'); tab4 = "#profil"; tabClass4 = $(tab4).attr('class'); src = $(this).attr('href'); // On teste TAB1 if(src === tab1 && tabClass1 != "current"){ changeTab(tab1, tabClass1, tab2,tabClass2, tab3,tabClass3, tab4,tabClass4); } // On teste TAB2 if(src === tab2 && tabClass2 != "current"){ changeTab(tab2, tabClass2, tab1,tabClass1, tab3,tabClass3, tab4,tabClass4); } // On teste TAB3 if(src === tab3 && tabClass3 != "current"){ changeTab(tab3, tabClass3, tab1,tabClass1, tab2,tabClass2, tab4,tabClass4); } if(src === tab4 && tabClass4 != "current"){ changeTab(tab4, tabClass4, tab1,tabClass1, tab3,tabClass3, tab2,tabClass2); } }) } $(document).ready(function(){ changeContent(); })

Voilà!

Tout marche parfaitement, mais j'aimerais savoir si c'était possible d'ajouter des animations entre le changement, car ça se fait brutalement là, et si vous avez des critiques sur le code n'hésitez pas !

Merci!

3 réponses

etorion, il y a 8 ans

Bonjour,

Comme ça:

.current{ z_index:2; animation: opacityAnim 1s; } @keyframes opacityAnim { from{ opacity: 0; } to{ opacity:1; } }

Sinon je pense que tu pourrais réduire ton code. Car pour le moment tu n'as que 4 view mais si tu en rajoute, ça va devenir compliqué.

Voici ce que tu peux faire par exmple:

<div> <label>Changement de view</label> <select id="selectorView"> <option value="overview" selected>Oveview</option> <option value="details">Details</option> <option value="order">Order</option> <option value="profil">Profil</option> </select> </div> <div class="panelWrapper"> <div id="overview" class="current tab"> Overview </div> <div id="details" class="hidden tab"> Détails </div> <div id="order" class="hidden tab"> Commande </div> <div id="profil" class="hidden tab"> Profil </div> </div> .hidden{ visibility:hidden; display:none; opacity: 0; } .current{ height:200px; width:200px; background: #2196F3; z-index:2; animation: opacityAnim 1s; } @keyframes opacityAnim { from{ opacity: 0; } to{ opacity:1; } } .panelWrapper{ postion: relative; overflow: hidden; } function changeView(value){ $(".current").addClass('hidden'); $(".current").removeClass('current'); $("#"+ value).removeClass('hidden'); $("#"+ value).addClass('current'); } $(document).ready(function(){ $('#selectorView').on('change',function(e){ changeView(this.value); }); })

@+

Théo Benoit, il y a 8 ans

Bonsoir!

Nickel! Merci beaucoup! Je regarderais votre code plus en profondeur quand j'aurais le temps, là je viens de finir de coder pour aujourd'hui, je me suis fais avec ce petit menu, un menu pour les petites résolutions, en bas, avec les 4 icones, et j'aimerais savoir si c'est possible d'imiter le glissement du doigt vers la gauche ou la droite pour changer de page ? ^^

Merci beaucoup de votre aide!

etorion, il y a 8 ans

Oui c'est possible avec une bibliotèque qui gère les swipes etc ..
Pensez à passer ce post en résolu.
@++