IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Slide horizontal avec texte à l'intérieur


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 226
    Par défaut Slide horizontal avec texte à l'intérieur
    Bonjour,
    Je souhaiterais, lors d'un clic sur l'entête d'une colone de mon tableau, afficher les colones qui suivent de façon progressive.
    J'obtiens plus ou moins l'effet que je souhaite : un slide horizontale.
    http://jsfiddle.net/7ZBQa/1392/
    Le probléme, c'est qu'au lieu de partir d'une largeur de 0 pour aller jusqu'à sa largeur maximale, la colone apparait directement avec la largeur du texte à l'interieur et s'étend jusqu'à la largeur max.
    Quelqu'un aurait une solution?

  2. #2
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par défaut
    Le problème c'est les cellules de tableau qui ne gèrent pas leur width de la même façon que les autres éléments HTML.
    Tu peux corriger ça facilement en intercalant une couche de <div> entre tes cellules et leur contenu, et en leur donnant un overflow: hidden.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 226
    Par défaut
    Bonjour.

    Merci pour ta réponse et désolé pour ce délai de réponse, je n'était pas chez moi le reste de la semaine et n'avais pas accés à un ordinateur.
    J'ai essayé d'intercaler un div dans mes cellules et en leur mettant un overflow:hidden mais sans succés...
    Est-ce que j'ai procédé de la bonne façon? http://jsfiddle.net/7ZBQa/1395/

  4. #4
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Exemple avec une structure de table correcte et fadeToggle() :

    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    td, th {
      width: 100px;
      height: 20px;
    }

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    <table id="id_of_table">
      <thead>
        <tr>
          <th></th>
          <th>E</th>
          <th>F</th>
          <th>D</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>2</td>
          <td>two</td>
          <td>deux</td>
          <td>zwei</td>
        </tr>
        <tr>
          <td>3</td>
          <td>three</td>
          <td>trois</td>
          <td>drei</td>
        </tr>
        <tr>
          <td>4</td>
          <td>four</td>
          <td>quattre</td>
          <td>vier</td>
        </tr>
        <tr>
          <td>5</td>
          <td>five</td>
          <td>cinq</td>
          <td>f&uuml;nf</td>
        </tr>
      </tbody>
    </table>

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function toggleColumn( n = 0 ){
      let rows = document.querySelectorAll( 'tr', '#id_of_table' );
     
      for ( let i = 0; i < rows.length; i++ ){
        let cols = rows[i].children;
     
        if ( n >= 0 && n < cols.length) {
          $( cols[ n ] ).fadeToggle( 3000 );
        }
      }
    }
     
    toggleColumn( 2 ); // base 0

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 226
    Par défaut
    Bonjour et merci ton aide.

    J'ai essayé ton code mais je n'arrive pas à le faire fonctionner.
    Si j'ai bien compris, on fait un tableau avec toutes les lignes. A partir de ce tableau, on en fait un autre avec les cellules de chaques colones.
    Puis on fait apparaitre ou disparaitre la colone?

    http://jsfiddle.net/7ZBQa/1397/

    Dans ce cas
    Il ne devrait y avoir que la 1ere colone qui reste non?
    J'ai regardé la fonction fadeToggle(). Elle permet de faire apparaitre ou disparaitre mais ne permet pas d'avoir un effet "tiroir" non?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    ceci devrait faire l'affaire : http://codepen.io/jreaux62/pen/wMLxxX

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    <table id='tableau'>
      <thead>
        <tr>
          <th class="colAtete">A</th>
          <th class="col notDisplayed"><div>B</div></th>
          <th class="col notDisplayed"><div>C</div></th>
          <th class="col notDisplayed"><div>D</div></th>
          <th class="col notDisplayed"><div>E</div></th>
          <th class="col notDisplayed"><div>F</div></th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td class="colA">123123</td>
          <td class="col notDisplayed"><div>123123 sdfsdf sdf sdf sdf sdf df dfsdfs sd</div></td>
          <td class="col notDisplayed"><div>123123</div></td>
          <td class="col notDisplayed"><div>123123</div></td>
          <td class="col notDisplayed"><div>123123sd fgsdfg sdfgdfs d</div></td>
          <td class="col notDisplayed"><div>123123</div></td>
        </tr>
        <tr>
          <td class="colA">123123</td>
          <td class="col notDisplayed"><div>123123</div></td>
          <td class="col notDisplayed"><div>123123s dgsdfgsdgf</div></td>
          <td class="col notDisplayed"><div>123123</div></td>
          <td class="col notDisplayed"><div>123123</div></td>
          <td class="col notDisplayed"><div>123123 sdfg</div></td>
        </tr>
      </tbody>
    </table>
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     $("#tableau").on('click', '.colAtete', function() {
     	if( $('.col div').css('display') == 'block' )
      {
           $('.col div').hide(0);
           $('.col').animate({
          width: 'toggle'
        }, 500, function() {
          // Animation complete.
          // (rien ici)
         });
      } else {
           $('.col').animate({
          width: 'toggle'
        }, 500, function() {
          // Animation complete.
           $('.col div').fadeIn();
         });
      }
     });
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    table {	
    	margin-top:40px;
    	margin-left:20px;
     
    	border-collapse:collapse;
    	}
    td, th {
      width:100px;
    	padding:3px;
    	border: 1px solid gray;
    	}
    .colAtete{
      cursor:pointer;
    }
    thead {
    	border:3px solid black;
    	}
    tbody {
    	border:3px solid black;
    	}
    .notDisplayed {
        display: none;
        }
    .notDisplayed div {
        display: none;
      }

    N.B. Pour info :
    • on met des <th> dans le <thead>
    • et des <td> dans le <tbody>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PPT-2007] Comment renvoyer à un slide précis avec zone de texte + bouton de commande
    Par misterzeropointun dans le forum Contribuez
    Réponses: 0
    Dernier message: 06/08/2015, 08h28
  2. [AJAX] Slide horizontal avec masque
    Par timpisteur dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 04/06/2008, 09h04
  3. Afficher un cadre(avec texte) à coté de la souris
    Par frechy dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 24/01/2006, 11h05
  4. [XML + XSL] petite confusion avec text()
    Par DidRocks dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 12/07/2005, 09h08
  5. Image avec texte à droite puis en dessous
    Par StarNab dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 16/05/2005, 17h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo