Bonjour,
Je ne suis pas sûr d'avoir compris ce que tu veux faire exactement.
Je suppose pour la suite qu'en fenêtre étroite (que ce soit sur un ordi ou mobile), le menu est caché initialement, et en fenêtre large, le menu est montré.
J'ai supposé que la limite entre fenêtre étroite et fenêtre large était à 600px (c'est facile à modifier). J'ai supposé qu'il était inutile de considérer les modes portait et paysage, et de faire la distinction entre mobile et desktop, et que le seul point important était de distinguer fenêtre étroite et fenêtre large.
1) On ajoute à la fin du css :
nav.initial a,
nav.initial header
{
transition:none;
}
2) On remplace dans le html :
<nav class="menu">
par
<nav class="menu initial">
3) On remplace dans le javascript :
$('.menu footer button').on('click',function(e){
e.preventDefault();
$els.each(function(j){
$(this).css('--top',$(this)[0].getBoundingClientRect().top + ($(this).attr('data-group') * -15) - 20);
$(this).css('--delay-in',j*.1+'s');
$(this).css('--delay-out',(count-j)*.1+'s');
});
$('.menu').toggleClass('closed');
e.stopPropagation();
});
// run animation once at beginning for demo
setTimeout(function(){
$('.menu footer button').click();
setTimeout(function(){
}, (count * 100) + 500 );
}, 1000);
par
$('.menu footer button').on('click', function(e) {
e.preventDefault();
$('.menu').removeClass('initial');
$els.each(function(j) {
$(this).css('--top', $(this)[0].getBoundingClientRect().top + ($(this).attr('data-group') * -15) - 20);
$(this).css('--delay-in', j * .1 + 's');
$(this).css('--delay-out', (count - j) * .1 + 's');
});
$('.menu').toggleClass('closed');
e.stopPropagation();
});
if ($(window).width() < 600) {
$els.each(function(j) {
$(this).css('--top', $(this)[0].getBoundingClientRect().top + ($(this).attr('data-group') * -15) - 20);
});
$('.menu').addClass('closed');
}
Si ensuite, tu veux rajouter un effet d'apparition progressif du menu en fenêtre étroite dès l'affichage initial de la page (je ne l'ai pas mis par défaut parce que j'avais un doute et que je trouve ça pas génial parce que ça cache du contenu avant même qu'on ait eu le temps de bien lire ce qu'il y a dans la page), il suffit de rajouter en plus à la fin du javascript :
if ($(window).width() < 600) {
setTimeout(function() {
$('.menu footer button').click();
}, 2500);
}
Amicalement,