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

JavaScript Discussion :

Largeur de cellule avec pourcentage


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2011
    Messages : 18
    Points : 13
    Points
    13
    Par défaut Largeur de cellule avec pourcentage
    Bonjour, j'ai un petit problème avec les pourcentages des largeurs de mes cellules. J'ai une table qui contient trois cellules, celle de gauche et celle de droite sont mises à 50% chacune de la largeur de la ligne, tandis que celle du centre à une largeur automatique. Le problème survient lorsque j'ajoute une image dans ma cellule de gauche, alors que la cellule s’élargit de 5 px étrangement... alors que sans la cellule de droite, tout fonctionne correctement. Le résultat voulu serait que la cellule conserve sa largeur initiale.

    Voici un exemple simplifié de ce à quoi je fais référence :

    Code : 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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    <html>
    <head>
        <style type="text/css">
            html
            {
                overflow: hidden;
            }
            body
            {
                padding: 0;
                margin: 0;
            }
            #taskbar
            {
                width: 100%;
                height: 150px;
                margin: 0;
                padding: 0;
            }
            #taskbar_left
            {
                width: 50%;
                background-color: black;
            }
            #taskbar_right
            {
                width: 50%;
            }
        </style>
        <script type="text/javascript">
            function AjouterImage() {
                alert("Largeur de la div avant l'ajout : " +
                document.getElementById("taskbar_left").offsetWidth);
     
                var img = new Image();
                img.id = "logoGoogle";
                img.src = "http://www.google.ca/intl/en_com/images/srpr/logo1w.png";
                img.alt = "logoGoogle";
     
                document.getElementById("taskbar_left").appendChild(img);
                alert("Largeur de la div après l'ajout : " +
                document.getElementById("taskbar_left").offsetWidth);
            }
        </script>
        </head>
        <body>
            <table id="taskbar" cellspacing="0" cellpadding="0">
                <tr>
                    <td id="taskbar_left"></td>
                    <td id="mainButton">
                        <img id="mainButtonImg" src="" alt="Main Button" />
                    </td>
                    <td id="taskbar_right"></td>
                </tr>
            </table>
            <input type="button" value="Ajouter" onclick="AjouterImage();">
        </body>
    </html>
    Merci d'avance,
    Francis

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

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    ’Soir.

    Trois colonnes, dont deux qui font 50%… Après un gros effort de calcul mental, j'en arrive à la conclusion que ça fait plus de 100%… Et dans ce genre de cas, surtout avec les tableaux dont le rendu est si capricieux, aucun comportement n'est défini.
    Donne à tes cellules des largeurs qui n'ont pas besoin de la quatrième dimension pour être cohérentes, et tu verras, le reste va s'arranger
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 057
    Points : 44 589
    Points
    44 589
    Par défaut
    Bonsoir,
    mes notions de math, qui datent un peu maintenant, m'ont fait retenir que 50% + 50% + x feront quoiqu'il arrive plus de 100%.
    Tout ceci pour dire pourquoi mettre en difficulté le moteur de rendu en l'obligeant à tout recalculer à l'insertion.

    Saches pour info que seul FireFox modifie la largeur de la cellule, Opera, Chrome, IE et Safari ne change rien...

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2011
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Le but de mettre 50% pour la colonne de gauche et de droite était justement de centrer ma colonne centrale. La colonne centrale contient une image qui fait 110px, et je veux que cette image soit centrée, mais ne pas perdre d'espace pour les deux autres colonnes...

  5. #5
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 057
    Points : 44 589
    Points
    44 589
    Par défaut
    tu peux toujours essayer ceci
    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
    #taskbar_left {
      width : 50%;
      min-width : 500px; /* a ajuster suivant besoin */
      background-color : black;
    }
    #taskbar_right {
      width : 50%;
      min-width : 500px; /* a ajuster suivant besoin */
      background-color: black;
    }
    #mainButton {
      text-align : center;
      min-width : 110px;
    }
    a bien y regarder, tu aurais sûrement du poster sur le forum HTML ou encore CSS

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2011
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Merci NoSmoking, ça fonctionne bien apparament ! Et puis c'était dur pour moi de savoir si le problème était dut au Javascript (lors du appendChild), j'ai cru qu'il ajoutait une marge ou un truc du genre, mais tu as bien raison après tout...

    Merci encore,
    Francis

  7. #7
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 057
    Points : 44 589
    Points
    44 589
    Par défaut
    visiblement il n'y a que FireFox qui fasse des caprices

    Concernant la partie script une façon courante de faire avec la méthode createElement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function AjouterImage() {
      // recup objet de destination, evite les rappels
      var oDest =  document.getElementById("taskbar_left");
      alert("Largeur de la div avant l'ajout : " +oDest.offsetWidth);
      // creation de l'image
      var oImg = document.createElement('IMG');
      // affectation des proprietes
      oImg.id  = "logoGoogle";
      oImg.src = "http://www.google.ca/intl/en_com/images/srpr/logo1w.png";
      oImg.alt = "logoGoogle";
      // ajout element
      oDest.appendChild( oImg);
      alert("Largeur de la div après l'ajout : " + +oDest.offsetWidth);
    }

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

Discussions similaires

  1. [XL-2003] largeur des cellules avec macro
    Par zangaloni dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/05/2011, 00h19
  2. [C#] atteindre le format de cellule avec le pilotage d'EXCEL
    Par cortex024 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 19/04/2006, 09h32
  3. Réponses: 1
    Dernier message: 08/03/2006, 20h07
  4. [html] insertion d 1 image dans une cellule avec taille en %
    Par hijodelanoche dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 19/01/2006, 00h50
  5. [JTable] Cellule avec deux boutons
    Par cherbox dans le forum Composants
    Réponses: 3
    Dernier message: 12/08/2004, 17h26

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