Plier / déplier du texte

Bonjour,
Je cherche une solution pour pouvoir afficher dans un weblog une partie de texte sur 3 à 4 lignes d'un texte en contenant une dizaine. L'utilisateur aura qu'à cliquez sur "lire la suite" pour voir tout et une fois lu cliquez sur "replier".

3 réponses

  1. Bonjour, voila un petit exemple basique en JavaScript: http://jsfiddle.net/vqgudgmy/
    Deuxième alternative si tu ne veux pas t'embêter à séparer le début et la fin:
    http://jsfiddle.net/r1erjqfy/1/
    0
    1. bonjour et merci de ta réponse. J'ai oublié de préciser quelque chose d'important. Je suis nouveau né dans ce domaine. Je crois comprendre que le html je le met dans mon weblock qui contien mon texte. Le css je crois devoir le mettre dans ma feuille de style css, mais le javascript je vois pas ou le mettre.
      0
    2. Pour le JavaScript tu as deux options, tu peux le mettre dans ton HTML entre les balises
      <script></script>

      ou sinon tu peux le mettre dans un fichier .js et l'appeler avec le code suivant:
      <script type="text/javascript" src="emplacementduscript.js"></script>
      1
    3. voilà ce que j'ai mis dans mon html. Mais ca marche pas. J'ai remplacé pour mieux identifié "texte" pas "textePliDepli" idem dans le CSS.

      <div id="textePliDepli">Test<br />
      Test<br />
      Test<br />
      Test<br />
      Test<br />
      Test<br />
      Test<br />
      Test<br />
      Test<br />
      Test<br />
      Test<br />
      Test<br />
      </div> <a href="#" onclick="voirsuite();" id="voirsuite">Voir la suite...<br />
      </a><a href="#" onclick="replier();" style="display:none;" id="replier">Replier...</a>
      <script>
      function voirsuite()
      {
      document.getElementById('voirsuite').style.display = 'none';
      document.getElementById('textePliDepli').style.height='100%';
      document.getElementById('replier').style.display='block';
      }
      function replier()
      {
      document.getElementById('voirsuite').style.display='block';
      document.getElementById('textePliDepli').style.height='75px';
      document.getElementById('replier').style.display='none';
      }
      </script>
      0
  2. Qu'est-ce qui ne marche pas ? J'ai remplacé le 100% par "auto" dans le JavaScript, pour éviter que la div ne prenne tout la largeur de l'écran vu que j'ai placé le code directement dans mon <body>, autrement tout fonctionne bien si je place ça dans un document HTML:
    <div id="textePliDepli">Test<br /> 
    Test<br /> 
    Test<br /> 
    Test<br /> 
    Test<br /> 
    Test<br /> 
    Test<br /> 
    Test<br /> 
    Test<br /> 
    Test<br /> 
    Test<br /> 
    Test<br /> 
    </div>
    <a href="#" onclick="voirsuite();" id="voirsuite">Voir la suite...<br /></a>
    <a href="#" onclick="replier();" style="display:none;" id="replier">Replier...</a>
    <script> 
    function voirsuite() 
    { 
    document.getElementById('voirsuite').style.display = 'none'; 
    document.getElementById('textePliDepli').style.height='auto'; 
    document.getElementById('replier').style.display='block'; 
    } 
    function replier() 
    { 
    document.getElementById('voirsuite').style.display='block'; 
    document.getElementById('textePliDepli').style.height='75px'; 
    document.getElementById('replier').style.display='none'; 
    } 
    </script>
    <style>
    #textePliDepli
    {
        height:75px;
        overflow-y:hidden;
    }
    </style>
    0
    1. Modérateur
      Bonjour,

      Et le "même" code simpifié
      - 1 Seul bouton
      - 1 Seule fonction

      <html> 
       <head> 
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />	
       <title>test</title>
       </head>
        <body>
      <style>
      #textePliDepli
      {
          height:75px;
          overflow-y:hidden;
      }
      </style>
      
      <div id="textePliDepli">Test<br /> 
      	Test<br /> 
      	Test<br /> 
      	Test<br /> 
      	Test<br /> 
      	Test<br /> 
      	Test<br /> 
      	Test<br /> 
      	Test<br /> 
      	Test<br /> 
      	Test<br /> 
      	Test<br /> 
      </div>
      <a href="#" onclick="plierreplier();" id="voirsuite">Voir la suite...<br /></a>
       
        </body>
       </html>
       
       <script type="text/javascript">
      function plierreplier() { 
        var voirsuite = document.getElementById('voirsuite');
        var textePliDepli = document.getElementById('textePliDepli');
       
        if( textePliDepli.style.height != 'auto'){
         //On déplie
         voirsuite.innerHTML = 'Replier...';
         textePliDepli.style.height='auto'; 
        }else{
         //on masque
         voirsuite.innerHTML = 'Voir la suite...<br>';
         textePliDepli.style.height='75px'; 
        }
       }
      </script>
      


      0
      1. Merci ça fonctionne. Juste un petit problème. Quand je clique sur "voir la suite" l'affichage ne reste pas sur la zone mais remonte automatiquement en haut de page. Il faut donc revenir sur la zone de lecture. C'est pareil pour "replier".
        0
      2. Salut,
        Remplace le lien a par un bouton :
        <button onclick="plierreplier();" id="voirsuite">Voir la suite...</button>
        

        Bonne journée
        0
      3. Modérateur
        Ou enlève le href ça devrait suffir
        <a  onclick="plierreplier();" id="voirsuite">Voir la suite...<br /></a>
        
        0
      4. Bonsoir et merci. Cela fonctionne avec le bouton mais pas en supprimant le href... à moins que j'ai fait une boulette
        0
      5. Mets un return false après l'appel de la fonction, comme ça tu gardes le style d'un lien:
        <a href="#" onclick="plierreplier();return false;" id="voirsuite">Voir la suite...<br /></a>
        
        0