CTRL+D pour ajouter
ce blog à vos Favoris
Bienvenu sur cet espace     -     Merci tu es le ième à venir aujourd'hui     -      Cliquer sur l'Index pour avoir un apercu de l'ensemble des billets     -     Des dizaines de jeux sont acessibles dans la Salle de Jeux et jouables directement sur cet espace     -     Retrouve dans la Vidéothèque, ma selection de films disponibles sur la mule     -     

mardi, août 09, 2005

Afficher masquer un paragraphe, un menu

BasIndexAccueil




Présentation


Voici l'exemple de l'astuce proposée

[+/-] Afficher/Masquer le bloc1

Bloc1
  • ligne 1

  • ligne 2

  • ligne 3

  • ligne 4

  • ligne 5

  • [+/-] Afficher/Masquer le bloc2

    Bloc2
  • ligne 2_1

  • ligne 2_2

  • ligne 2_3

  • ligne 2_4

  • ligne 2_5


  • C'est une fois de plus une astuce trouvée dans l'aide Google, par contre cette fois si elle a été entièrement francisée...

    Je vais commencer par donner le code puis y apporter quelques explications
    C'est de nouveau une astuce où il faudra ajouter un bout de code dans le Css de la page, entre les balises de style, un code javascript, entre les balises head et une partie dans le corps de la page, entre les balises body selon l'endroit ou l'on veut utiliser cette astuce, dans le cas présent, le code est mis directement dans le billet
    Je vais colorer les balises de mise en forme (html, style, head et body), je précise qu'elles ne sont là qu'à titre indicatif dans un soucis d'identification et qu'elles ne font pas partie du code à copier/coller...


    Voici le code


    <html>
    <head>

    <style>
    .masquer {display:none}
    .afficher {display:inline}
    </style>

    <script type="text/Javascript">

    function afficher_masquer (postid) {

    whichpost = document.getElementById(postid);

    if (whichpost.className=="afficher") {
    whichpost.className="masquer";
    }
    else {
    whichpost.className="afficher";
    }
    }
    </script>

    </head>

    <body>

    <a href="javascript:afficher_masquer('bloc1')">
    [+/-] Afficher/Masquer le bloc1</a>
    <span class="afficher" id="bloc1">
    Bloc1
    ligne 1
    ligne 2
    ligne 3
    ligne 4
    ligne 5
    </span>

    <a href="javascript:afficher_masquer('bloc2')">
    [+/-] Afficher/Masquer le bloc2</a>
    <span class="masquer" id="bloc2">
    Bloc2
    ligne 2_1
    ligne 2_2
    ligne 2_3
    ligne 2_4
    ligne 2_5
    </span>
    </body>
    </html>


    Les Explications


    Bon c'est assez simple
      Css
    • pour le Css, on crée deux balises,
      • une que l'on appel "masquer" qui quand elle sera active masquera le contenu de la balise qui lui fait référence

      • une que l'on appel "afficher" qui quand elle sera active, affichera le contenu de la balise qui lui fait rréférence

    Avec ce procedé, on peut travailler sur son thème sans afficher à l'écran les modifications, ou alors certains l'utilisent pour masquer des compteurs


      javascript
    • Pour le javascript, on crée une fonction que l'on appel "afficher_masquer" qui aura en gros comme fonction quand le script sera appelé
      • de changer la balise Css masquer en afficher

      • ou de changer la balise Css afficher en masquer

      selon l'état ou elle se trouve

    En gros affiches si c'est masqué, masques si c'est affiché...;)


    pour que cela fonctionne, ces deux premiers codes doivent être placés dans le thème de l'espace (template)


      code
    • Passons maintenant au code contenu entre les balises Body.
      A l'origine le code est fait pour pouvoir afficher ou masquer le contenu des billets, mais j'en fais une explication sur un fonctionnement plus large, par exemple
      • on peut décider d'utiliser ce code pour afficher/masquer le contenu d'un menu latéral en cliquant sur son titre

      • ou alors directement à l'interieur d'un billet, pour par exemple masquer la réponse d'une charade jusqu'à ce que le visiteur décide d'en voir la chute

      • ou alors donner une explication qui n'a pas toujours besoin d'être affichée, enfin tout un tas de possibilités...

      Il faut cependant savoir que même masqué, le contenu est chargé à l'initialisation de la page: si vous décidez de masquer une vidéo de 10Mo jusqu'à ce que le visiteur clic sur "voir la video", la page sera aussi longue à afficher que si la vidéo est présente d'entrée...

      Isolons maintenant le code
      <a href="javascript:afficher_masquer('bloc1')">
      [+/-] Afficher/Masquer le bloc1</a>
      <span class="afficher" id="bloc1">
      Bloc1
      ligne 1
      ligne 2
      ligne 3
      ligne 4
      ligne 5
      </span>


      Les 2 blocs sont identiques à ceci près: leur état initial
      l'un est masqué, l'autre est affiché, ceci est définit par la ligne de code de la
        balise
      • <span class="afficher" id="bloc1">

        (pour ceux qui voudraient plus d'explications sur le liens entre les balises html et les balises Css, je propose de (re)lire ce billet)

        • Id est utilisé pour donner un nom à la balise, pour la différencier de la seconde, elle est nommée "bloc1", j'aurais pu lui donner le nom "paragraphe1" "rebus1" ou tout autre nom (attention cependant, ce nom sera pris en référence dans le lien)

        • <span class="afficher"> est utilisé pour définir le style Css du contenu de la balise span ici cela nous renvoit a la balise .afficher {display:inline}

      • lien
      • <a href="javascript:afficher_masquer('bloc1')">[+/-] Afficher/Masquer le bloc1</a>
        • <a href="">[+/-] Afficher/Masquer le bloc1</a> nous indique qu'un lien hypertexte est appliqué sur le texte [+/-] Afficher/Masquer le bloc qui pourrait tout aussi bien être une image ou un bouton

        • la valeur du lien est javascript:afficher_masquer('bloc1') qui nous indique d'executer le javascript nommé "afficher_masquer" sur la balise nommée "bloc1" (attention donc si vous renommez la balise)



    Voila, une fois encore je suis entré très dans le detail, afin que ce code puisse être amélioré par exemple en n'utilisant pas une seule phrase pour afficher/masquer le contenu, mais afficher ou masquer selon le cas...
    Pour les plus observateurs j'utilise cette astuce sur les commentaires comme expliqué sur ce billet




    HautIndexAccueil

    Ajouter un commentaire


    Le mardi, janvier 09, 2007 10:56:00 AM, Anonymous Anonyme a dit...

    Bonjour, Vous m'avez déjà pas mal aidé à fignoler mon blog, et je viens d'utiliser votre astuce pour les listes "masquer/afficher". Toutefois, au lieu du [+/-] j'aurais aimé utiliser le signe ► quand la sous-liste est cachée, et le signe ▼ quand la liste est déroulée. Pourriez-vous m'aider s'il vous plaît ? Au fait, bonne année, et tous mes voeux de santé et de bonheur pour 2007 ! "

     

    Le jeudi, janvier 11, 2007 8:28:00 PM, Blogger Krom a dit...

    Salut,
    si c'est pour mettre dans un blog ou un site exclusivement en html, je ne sais pas le faire, faudrait chercher la reponse sur des forum de sites d'astuces de javascript, en fait le probleme est de stocker dans une variable l'etat deroulée ou non du menu "

     

    Ajouter un commentaire

    << Masquer les Commentaires

    HautIndexAccueil
    uk flag