Responsive Nav

Un menu responsive dans vos squelettes

ATTENTION : ce plugin n’est plus maintenu, aucun support ne sera fourni par le développeur.
Voir la discussion à ce propos

Adaptation du plugin Responsive Nav pour SPIP.

Installation

Ce plugin s’installe comme tous les plugins. Voir http://www.spip.net/fr_article3396.html

Il fonctionne avec le squelette dist par défaut ainsi qu’avec ZPIP V1 + menu et ZPIP V2.

Personnalisation

Les principales variables du plugin sont configurables depuis l’espace privé :

Breakpoint
Accepte toute unité (px, em...) (par défaut 40em)
Taille de la fenêtre pour déclencher le menu.

Sélecteur
Accepte toute classe ou identifiant (par défaut : #nav)
Le sélecteur cible (celui qui contient le menu).
Note : le script n’accepte pas les syntaxes type « #nav .menu ».

Label
(par défaut : ☰ Menu)
Le texte du bouton déclenchant le menu.

Position du bouton
Position du bouton par rapport au menu.

Menu burger
Affiche le menu sous la forme d’un menu burger et masque le texte.
Note : pour une meilleure accessibilité, ne pas activer le menu burger.

Personnalisation avancée

Pour personnaliser les autres variables prévues par le plugin original, il suffit de créer un fichier mes_fonctions.php à la racine du dossier squelettes et d’y définir les valeurs des constantes PHP qui assurent la configuration du plugin.

_RESPONSIVENAV_ANIMATE
true ou false (par défaut : true)
Animation ou non du menu.

_RESPONSIVENAV_TRANSITION
Millisecondes (par défaut : 284)
Durée de l’animation en millisecondes.

_RESPONSIVENAV_CUSTOMTOGGLE
Identifiant du sélecteur du bouton personnalisé si ajouté dans le squelette.

_RESPONSIVENAV_CLOSEONNAVCLICK
true ou false (par défaut : false)
Referme le menu au clic sur une entrée.

_RESPONSIVENAV_OPENPOS
static, relative, fixed ou absolute (par défaut : relative)
Position du menu ouvert.

_RESPONSIVENAV_NAVCLASS
(par défaut : nav-collapse)
Classe du menu.
Note : à modifier également dans la css si changement.

_RESPONSIVENAV_NAVACTIVECLASS
(par défaut : js-nav-active)
Classe ajoutée à la balise html lorsque le menu est ouvert.

_RESPONSIVENAV_JSCLASS
(par défaut : js-responsivenav)
Classe ajoutée à la balise html par le script si javascript est activé.

Note : à la différence du fichier mes_options.php qui est rechargé à chaque hit, mes_fonctions.php n’est rechargé qu’au recalcule des squelettes. Attention donc à bien recalculer les pages lors de vos tests.

Exemple de fichier mes_fonctions.php

<?php

if (!defined('_ECRIRE_INC_VERSION')) return;

define('_RESPONSIVENAV_ANIMATE', 'true');
define('_RESPONSIVENAV_OPENPOS', 'static');
define('_RESPONSIVENAV_JSCLASS', 'js-perso');

Dépendances

Le plugin nécessite Saisies 2.4+.
Note : le script original est indépendant de jQuery

Plus d’infos

http://responsive-nav.com
https://github.com/viljamis/responsive-nav.js

Licence du script original : © 2013 Viljami Salminen, http://viljamis.com

V 0.1.0 (29/03/2016) : embarque la version 1.0.39 du script original.

Discussion

12 discussions

  • 2

    Bonjour bonjour,

    Le plugin Responsive Nav est indiqué compatible jusqu’à la version 4.0 de SPIP : Quelqu’un l’aurait-il déjà testé avec la version 4.1 ?

    Merci d’avance !

    Répondre à ce message

  • 2

    Bonjour
    Merci pour le menu, mais comment doit-on l’appeler dans un squelette ?
    Merci pour votre aide

    • Bonsoir,
      Dans la config de ce plugin il faut compléter le champ :
      « Sélecteur
      Indiquer le sélecteur cible. »
      avec la classe css qui englobe ton menu.

      Donc tu dois déjà avoir un menu et ensuite le menu « responsive nav » lui permet d’être responsive (au cas ou ton squelette ne le fait pas par défaut).
      dd

    • Bonjour
      Merci pour tes explications
      Bonne journée

    Répondre à ce message

  • 1

    Bonjour Jean-Marie,
    Je rencontre sur ce site un problème d’affichage du menu sur petits écrans :
    https://chambredhote-vivavilla.fr
    La hauteur du menu semble être contrainte (?). En effet, si on clique pour accéder aux items du menu, seuls les deux premiers éléments sont accessibles... Mais si on tripote un peu (sur Firefox), comme glisser un des deux premiers éléments, à ce moment le menu prend bien sa place, et lorsqu’on replie le menu et le réouvre, là ça marche !
    Je suppose un conflit mais lequel ?
    Merci de ton aide...

    • Dans l’urgence j’ai dû réduire la taille de typo de manière à ce que tous les items soient visibles.
      En parcourant d’autres forums, j’ai comme l’impression que ça pourrait venir du mode « transition » du menu qui est fixé avec un max-height peut-être un peu trop court... Mais ce n’est qu’une supposition...
      D’autres idées ?

    Répondre à ce message

  • 3

    Bonjour, et merci pour cette contribution :)

    J’ai un élément de mon menu qui a un sous-menu qui devrait apparaitre au hover sur le « li » ou sur le « li a » et je n’arrive pas à le faire fonctionner correctement (css ou js, ou les deux...).
    Est-ce lié au plugin ? C’est normal docteur ?

    • Oups ! Je me réponds, un « overflow : hidden » qui trainait...
      Désolé du bruit :)

    • Bonjour,

      Merci pour ce plug-in, il est très pratique mais, en effet, le « overflow : hidden » passé dans la balise html par le js semble poser pas mal de problèmes :
      1. le menu déroulants constituent quasiment la norme
      2. tlm ne maîtrise pas cette propriété (j’ai mis du temps à trouver !)
      3. il est passé dans la balise ce qui implique non pas de modifier le css mais les classes js (ce que je n’ai pas encore fait, je me demande d’ailleurs si je vais pas utiliser un autre plugin ou tout faire en css, ne connaissant rien au js).

      J’en viens donc au point suivant : qu’est-ce qui justifie le passage de cette propriété dans la balise ? J’ai l’impression que cela fait perdre au plugin son efficacité pratique (étant donné l’usage des webdev l’utilisant) sans bien comprendre ce que cela apport (sinon pas de scoll dans le menu — ce qui ne devrait pas arriver si le menu est correctement fait non ?)

      Cdlt, BD.

    • Je viens de comprendre que la classe js peut être modifié par le css en appelant la-dite classe. Ce n’est donc pas si compliqué à fixer. Reste mon interrogation concernant ce choix par défaut. Cdlt, BD.

    Répondre à ce message

  • 5

    Bonjour
    Je me permet de vous écrire pour demandé de l’aide sur un plugins que vous avez participer c’est responsive nav
    J’ai installer votre plugin sur mon site tout marche bien quand je suis sur les petits écran mais quand je suis sur mon grand écran il me change mon menu d’origine qui horizontal
    Est ce que c’est possible que je puisse affiche mon menu que j’ai fait sur les grands écrans
    Si vous pouvez me conseiller je vous remercie
    Cordialement

    • Bonjour,

      avez-vous une adresse pour qu’on puisse voir le problème ?

    • Bonjour voila l’adresse du site
      http://centre-lecture.org/_questions2/
      je souhaite afficher mon menu normal a l’ouverture du site et avoir le menu burger en haut a droite a la résolution du mobile je n’arrive pas a trouvé comment le faire ?

      merci

    • Bonjour,
      J’ai aussi opté pour 1 menu horizontal visible sur grand écran et replié pour petits écrans mais je n’ai pas utilisé responsive nav.
      Par défaut sur le squelette phantom le menu est réduit tout le temps. J’ai donc ajouté 2 classes css « mini » et « maxi » pour différencier le comportement :

      <nav class="menu-head">
          <ul class="maxi">
              <BOUCLE_rubriques(RUBRIQUES) {par num titre, titre}{racine}>
                  <li>
                      <a href="#URL_RUBRIQUE" [ class=" (#EXPOSE{on active})" ]>#TITRE</a>
                  </li>
                  </BOUCLE_rubriques>
          </ul>
          <ul class="mini">
              <li><small>Menu</small>
                  <a href="#menu"></a>
              </li>
          </ul>
      </nav>

      et donc dans la css :

      @media screen and (min-width: 736px) {
          #header nav ul.mini {
              display: none;
          }
      }
      
      @media screen and (max-width: 736px) {
          #header nav ul.maxi {
              display: none;
          }
      }

      Je ne sais pas si c’est la meilleure manière de le faire mais cela fonctionne.

    • Merci pour ta réponse possible de voir ton site ?
      1- mon menu j, ai installé avec plugin menu je ne sais si ça va mâche en même temp que menu du site lui même
      Cordialement

    • Alors, il semble y avoir plusieurs problèmes :

      -  vous utilisez le thème qui a sa propre gestion du menu https://contrib.spip.net/PHANTOM-HTML5UP

      -  dans ce menu, vous avez un <div class="farouk"> qui empêche le bon fonctionnement du menu

      Je pense qu’il ne faut pas utiliser Responsive Nav et garder le menu par défaut du thème Phantom et à voir, ensuite, comment rajouter des entrées si besoin.

    Répondre à ce message

  • Bonjour !
    Plugin intéressant, malheureusement, je perds mes sous-menu quand le plugin Responsive Nav est activé. Les menus sont bien là, car ils apparaissent en partie selon la largeur de l’écran. J’ai tenté de déactiver le « overflow:hidden », mais ça ne change rien. Auriez-vous une idée ?

    Voir : https://www.veganequebec.net/

    Merci !

    Répondre à ce message

  • 3

    Bravo pour ce plugin, qui dans mon cas fonctionne de paire avec le plugin Menuder !
    Je suis débutante en programmation avec SPIP, et suis vraiment ignorante en PHP...
    Je souhaite faire figurer l’icône du menu à droite de la navigation. J’ai beau changer la position du bouton dans les paramètres du plugin (gauche / droite), rien n’y fait ! Avez-vous une idée de la cause de ce non changement, ou bien savez-vous comment procéder ? En vous remerciant,
    Lucie

    • Bonjour Lucy,

      n’utilisant pas le plugin menuder, il me faudrait un lien pour pouvoir tenter de t’aider.

      jean marie

    • Je travaille encore en local, je ne peux donc pas envoyer de lien :-(
      Si vous avez une idée, je reste preneuse... Le cas échéant, je reviendrai vers vous une fois le site mis en ligne... Merci et bonne fin de journée.

    • Bonjour,

      Je souhaite réaliser un menu « rollover »multi-niveau mais aussi « responsive » compatible bootstrap (plugin Bootstrap3 SASS).
      Une des solutions serait de combiner le plugin Menuder et Responsiv nav. Apparemment Lucie aurait réussi à faire fonctionner les 2 (plus de précisions seraient bienvenues )....

      Chez moi Menuder fonctionne bien mais je n’arrive pas à faire fonctionner Responsiv nav.
      Si j’ai bien compris, pour tester son fonctionnement, il s’agit remplacer dans le fichier nav du « dist » le sélecteur id=« nav » par id=« dropdown-menu » (qui est le sélecteur cible noté par défaut dans le plugin). Est-ce bien cela ? Si c’est bien ça, ça ne fonctionne pas chez moi (Menuder est désactivé). Peut-être y a-t il un conflit avec Bootstrap3 SASS ?

      Y aurait-il une autre solution, par exemple, implanter « smartmenu jquery »dans spip ?
      J’ai essayé mais sans résultat.
      Merci pour votre aide.

    Répondre à ce message

  • 3

    Bonjour, et merci pour ce plugin !
    Je rencontre cependant un problème : lorsque je lui impose la position absolute (défini dans le fichier mes_fonctions.php, et dans ma css), il me cache le menu...
    Avec l’inspecteur, je m’aperçois qu’à la ligne 16 du fichier responsive-nav.css.html, la valeur est la suivante :

    .js-responsivenav .nav-collapse {
    	clip: rect(0 0 0 0);

    Si je modifie comme ceci ça fonctionne :

    .js-responsivenav .nav-collapse {
    	clip: auto;

    Le problème est que ces styles sont insérés APRES les miens, et que je ne peux donc pas les surcharger, sauf à les mettre en dur dans mon squelette...
    Une idée docteur ?
    Merci

    • Salut,

      tu aurais une URL ?

      jean marie

    • Bonjour, et merci de ton attention.
      Je développe en local donc pas d’url publique :-/
      Tu n’as jamais rencontré ce problème ?
      Je précise que SPIP est à jour en 3.2 ainsi que les plugins...

    • Salut,

      non, je n’ai jamais été confronté à ce souci et sans exemple en ligne, pas facile de voir ce qu’il se passe :(

      jean marie

    Répondre à ce message

  • 1

    Merci pour ce plugin. J’ai deux questions.

    Où est-ce qu’on indique les entrées du menu qu’affichera le bouton ? J’ai trois menus sur le site que je souhaite combiner, il faut donc que je puisse indiquer ce qui doit y figurer... sous forme de boucles ou de liste. Je n’ai trouvé aucun fichier à customiser dans les dossiers du plugin.

    J’ai renommé le sélecteur #responsive puisque j’utilise déjà #nav. Problème : rien ne s’affiche sur le site à l’endroit où j’ai placé #RESPONSIVE, l’icône n’apparaît pas.
    Comment doit-on intégrer le menu dans un squelette ?

    • Salut,

      le plugin ne gère pas le menu en tant que tel, il ne fait que gérer son affichage en fonction des tailles d’écran. C’est donc à toi de faire le nécessaire dans ton squelette.
      Par contre, il est prévu pour fonctionne avec un seul menu et non plusieurs.

      Pour ce qui est du sélecteur, c’est la classe ou l’identifiant de ton menu (généré par ton squelette) et non une balise spip pour insérer le menu.

      jean marie

    Répondre à ce message

  • 1
    Renee Picard

    Je n’arrive pas à faire afficher tous les items du menu (il y en a 5) sur ce site : www.coffretsforest.com

    • Salut !

      Là comme ça, pas facile à dire... il faudrait désactiver la compression css pour que les feuilles du styles soient lisibles.
      Aussi, le thème utilisé est déjà responsive et gère le menu (en tout cas, il le masque sur petit écran), il y peut être un conflit.

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom