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

Mise en page CSS Discussion :

[XHTML/CSS]Débordement et marges [Trucs & Astuces]


Sujet :

CSS

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 24
    Par défaut [XHTML/CSS]Débordement et marges
    Bonjour à tous...
    Après une bonne heure de recherches infructeuses sur le sujet, je me permets de poster ici. Mon problème est simplissime il me semble, et pourtant je patauge dans la semoule:

    J'ai besoin d'un conteneur pour plusieurs informations très sémantiquement liées. L'un des éléments est un tableau de résultats, qui doit impérativement prendre le maximum de largeur possible. Les normes en vigueur sont d'avoir des marges autour de mon bloc d'information, qui fassent 20 pixels à chaque bord. La structure, extrêmement simple est exprimée en version basique ici dessous.
    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
     
    <html>
      <head>
      </head>
      <body>
        <div style="width:100%;margin: 20px">
          quelques infos de base<br />
          <table style="width: 100%;background-color: #f0f">
            <tr>
              <td>Hello</td>
            </tr>
          </table>
        </div>
      </body>
    </html>
    Le tableau dépasse de la fenêtre à droite de 20 pixels! En somme il calcule la largeur du tableau comme étant 100% de la fenêtre au lieu d'être 100% de la surface à disposition!
    L'effet est identique sous les navigateurs courants.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
         effet escompté               effet obtenu
    ------------------------    ------------------------   
    |                      |    |                      |
    |  XXXXXXXXXXXXXXXXXX  |    |  XXXXXXXXXXXXXXXXXXXXXXX
    |                      |    |                      |
    ------------------------    ------------------------
    Sauriez-vous m'expliquer le pourquoi du comment de ce comportement, et le moyen de régler cela? (j'ai bien sûr tenté de mettre un padding plutôt qu'un margin, mais rien n'y fait)

    Merci mille fois d'avance,

    Greg

    EDIT

    J'ai supprimé le width: 100% dans le conteneur, qui n'est pas très utile. Résultat: Sous Firefox et Safari, le résultat est parfait, mais sous MSIE 6.0, toujours le même problème...

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    position relative ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 24
    Par défaut
    Merci pour ta réponse.
    Alors j'ai placé un width=100% sur mon div, j'ai essayé toutes les variantes de position:relative (sur le div et sur le tableau).
    Résultat: ça marche sur MSIE, très bien, mais plus du tout sur Firefox ou safari, ce qui m'embête au plus haut point.

    Je n'ai aucun amour pour MSIE, et c'est pas prêt de s'améliorer ;-)

    Si quelqu'un a une explicaition...

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Par défaut
    Salut !!

    Pour moi IE à encore une fois tort, puisque tu mets 100% + marges de 20px soit 100% + 40px de large, donc normal que ce soit plus large que ta page.

    Pour le padding, idem, il se rajoute à la largeur.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 24
    Par défaut
    Je suis d'accord sur le fait qu'IE se comporte faussement. Pour le padding, il devrait être calculé à l'intérieur du premier div, puis le tableau devrait prendre 100% de la largeur restante.

    ça me tue de ne pas arriver à faire un truc aussi simple quand même...

    SI quelqu'un a une solution efficace sur tous les navigateurs, je serai vraiment très heureux... Ah, bien entendu, mon employeur interdit le Javascript, et la structure en tableau est à proscire dans cet environnemnt (la structure est passablement plus compliquée que l'exemple que je donne...)

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 24
    Par défaut
    J'ai trouvé une solution (à l'aide d'autres personnes, il est vrai!!)
    COmme cette solution peut intéresser d'autres, je vous la mets ici. Ce n'est pas très élégant, mais ça marche (et sur tous les navigateurs)...

    Il s'agit en fait de rajouter un DIV absolument inutile entre la table et le conteneur. Celui-ci va pour une raison qui m'échappe encore casser le tableau. J'imagine qu'il doit avoir un principe d'héritage un peu foireux...

    Testé: MSIE 6.0, Firefox 1.0, Safari 2.0.2, Konqueror 3.3.2, Lynx (!) 2.8.5. Je suppose donc que c'est fiable
    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
     
    <!-- DO NOT EDIT THIS FILE! IT WAS AUTOMATICALLY GENERATED FROM CDSware SOURCES. LOOK THERE FOR THE COPYRIGHT INFO. -->
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    </head>
    <body>
      <div style="margin: 20px; background-color:red; height: 100px;">
        <div style="margin:0px; background-color:green; height: 50px;">
          quelques infos de base<br />
          <table style="width: 100%; background-color: #f0f;">
            <tr>
              <td>Hello</td>
            </tr>
          </table>
        </div>
      </div>
    </body>
    </html>

  7. #7
    Expert confirmé

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    Après étude de la solution de plus près, il semble que ce soit la hauteur de la div qui soit la solution!!!!

    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
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    </head>
    <body>
       <div style="margin: 20px; background-color:red; height: 1px;">
          <table style="width: 100%; background-color: #f0f;">
            <tr>
              <td>Hello</td>
            </tr>
          </table>
        </div>
    </body>
    </html>
    Ca fonctionne très bien comme ça dans IE/FFx/Opera. C'est à n'y rien comprendre

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 24
    Par défaut
    effectivement, je viens de me faire la même remarque...
    mais, en améliorant encore, je me suis rendu compte que totu ce qu'il veut c'est la précision d'une dimension. un width à 100% pour le div inutile règle l'affaire également. (je me voyais mal avoir un height:1pxjuste pour le fun ;-))

    et donc voici le code final qui fonctionne sur tous les navigateurs (et même opéra)

    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
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    </head>
    <body style="margin:0px;padding:0px;">
      <div style="margin: 20px; background-color:red;">
        <div style="margin:0px; background-color:green; width: 100%;">
          quelques infos de base<br />
          <table style="width: 100%; background-color: #f0f;">
            <tr>
              <td>Hello</td>
            </tr>
          </table>
        </div>
      </div>
    </body>
    </html>
    Jamais je comprendrais MSIE!!!

    m'enfin...

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

Discussions similaires

  1. [xhtml][css] bouton du form ne marche pas avec IE6
    Par chinouk dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 14/06/2005, 14h00
  2. css class et marge
    Par francis m dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 16/05/2005, 11h52
  3. Probleme pour centrer un bloque xhtml/Css
    Par tooms2028 dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 20/01/2005, 22h08
  4. Probleme xhtml/css
    Par tooms2028 dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 19/01/2005, 09h41

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