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 :

Agrandir un DIV lorsqu'une page est très large


Sujet :

CSS

  1. #1
    Membre chevronné Avatar de Poulpynette
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 349
    Par défaut Agrandir un DIV lorsqu'une page est très large
    Bonjour,

    J'ai une page Web contenant une table qui est large (grand nombre de colonnes). Ce qui génère une scrollbar horizontale en bas de ma page.

    J'ai au-dessus de ma table un "div" coloré, dont la largeur n'est pas spécifiée (100% par défaut donc) et qui s'arrête au bord droit de l'écran.

    Ci-joint vous trouverez un schéma : en bleu l'écran, en vert la table et en noir le div.

    Je souhaiterais que, lorsque la page web s'élargit à cause de la table, le div en fasse autant.

    Existe-t-il une solution simple pour cela ou dois-je absolument connaître la largeur de la table ?

    Merci d'avance pour vos réponses ^^
    Images attachées Images attachées  

  2. #2
    Rédacteur
    Avatar de Macmillenium
    Homme Profil pro
    Développeur front-end
    Inscrit en
    Mars 2008
    Messages
    2 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur front-end
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 2 333
    Par défaut
    Bonjour,

    Essaye en englobant l'ensemble des blocs dans une div.

  3. #3
    Membre chevronné Avatar de Poulpynette
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 349
    Par défaut
    Oups, je viens de voir qu'un sujet similaire a déjà été posté.

    Si quelqu'un a une autre solution que l'imbrication des div (comme j'ai d'autres éléments entre mon div et ma table), je suis preneur.

    Sinon je vais faire avec :/

  4. #4
    Membre chevronné Avatar de Poulpynette
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 349
    Par défaut
    Citation Envoyé par Macmillenium Voir le message
    Bonjour,

    Essaye en englobant l'ensemble des blocs dans une div.
    Ok bah je vais essayer ça en attendant de voir s'il n'existe pas une astuce plus simple.

    Merci bien

  5. #5
    Rédacteur
    Avatar de Macmillenium
    Homme Profil pro
    Développeur front-end
    Inscrit en
    Mars 2008
    Messages
    2 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur front-end
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 2 333
    Par défaut
    Citation Envoyé par Poulpynette Voir le message
    Ok bah je vais essayer ça en attendant de voir s'il n'existe pas une astuce plus simple.
    C'est la solution la plus simple, si le tableau est plus large, il agrandit automatiquement la largeur de la div globale (bien entendu, si la valeur de width n'est pas renseigné).
    Quant aux autres blocs enfants, ils prennent dans tous les cas toute la largeur de leur conteneur parent.

  6. #6
    Membre chevronné Avatar de Poulpynette
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 349
    Par défaut
    Bizarre,

    Dans mon cas la valeur de "width" n'est jamais renseignée mais les div restent cantonnés à la taille du navigateur, et la table dépasse à droite du div englobant donc ça ne sert à rien.

    je vais quand même regarder si je n'ai pas fait une erreur quelque part.

  7. #7
    Membre Expert
    Avatar de Candygirl
    Femme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 912
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 912
    Par défaut
    Citation Envoyé par Macmillenium Voir le message
    C'est la solution la plus simple, si le tableau est plus large, il agrandit automatiquement la largeur de la div globale (bien entendu, si la valeur de width n'est pas renseigné).
    Le comportement par défaut d'un type block n'est pas de s'adapter à son contenu mais de prendre tous l'espace à disposition dans son parent. Le div principal s'arrêtera donc à la taille de le zone de visualisation même si le contenu dépasse.

    @Poulpynet

    Suivant le contexte, donner un position:absolute ou un float:left assorti d'un min-width de 100% à ton conteneur pourrait faire l'affaire puisqu'il adaptera alors sa largeur à son contenu.
    Les bons réflexes:
    • avant de poser une question:
      règles | faq | tutoriels | recherche
    • clarté, politesse, vocabulaire et orthographe soignés = efficacité
    • remercier ceux qui ont pris le temps d'aider et :resolu: si c'est le cas

  8. #8
    Membre chevronné Avatar de Poulpynette
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 349
    Par défaut
    Citation Envoyé par Candygirl Voir le message
    Suivant le contexte, donner un position:absolute ou un float:left assorti d'un min-width de 100% à ton conteneur pourrait faire l'affaire puisqu'il adaptera alors sa largeur à son contenu.
    Poulpynette au rapport !

    J'ai carrément mis un div conteneur de toute la page histoire de me faciliter la tâche dans mes recherches.

    - en ce qui concerne position: absolute; : j'obtiens le même comportement qu'avec un display: table;, c'est à dire que cela fonctionne sous FFX mais pas sous IE.
    - en ce qui concerne float: left; assorti d'un éventuel min-width: 100%;, cela n'a aucun effet. Peut-être en l'appliquant sur la table ...

    Sinon une remarque : j'ai coloré le fond de mon div conteneur ;
    - sous FFX il s'arrête au bord du navigateur, seule la table dépasse allègrement à droite
    - sous IE le div est aussi large que la table. Ce sont les div fils qui ne suivent pas

    Si ça peut aider ...

    Sinon merci pour vos suggestions, ça me fait avancer petit à petit

  9. #9
    Rédacteur
    Avatar de Macmillenium
    Homme Profil pro
    Développeur front-end
    Inscrit en
    Mars 2008
    Messages
    2 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur front-end
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 2 333
    Par défaut
    Citation Envoyé par Poulpynette Voir le message
    - en ce qui concerne position: absolute; : j'obtiens le même comportement qu'avec un display: table;, c'est à dire que cela fonctionne sous FFX mais pas sous IE.
    Pourtant cet exemple fonctionne sous IE7+ :
    Code xhtml : 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
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="fr">
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    	<title>Test</title>
    	<style type="text/css">
                    #bloc { position:absolute; background:red; }
            </style>
    </head>
     
    <body>
     
    	<div id="bloc">
    		<table>
    			<tr>
    				<td>
    					blablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablabla
    				</td>
    			</tr>
    		</table>
    	</div>
     
    </body>
     
    </html>

    Sous IE6- cela fonctionne même sans positionnement absolue vu qu'il ne respecte pas et dépasse la largeur par défaut d'un élément block, 100%.

  10. #10
    Membre chevronné Avatar de Poulpynette
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 349
    Par défaut
    Citation Envoyé par Macmillenium Voir le message
    Sous IE6- cela fonctionne même sans positionnement absolue vu qu'il ne respecte pas et dépasse la largeur par défaut d'un élément block, 100%.
    Oui, pardon, j'ai oublié de préciser que j'étais sous IE6.
    Mais chez moi cela ne fonctionne toujours pas (cf comportement décrit dans mon post précédent).

    Si je trouve comment débloquer ce cas, je vous fais signe ^^

  11. #11
    Membre Expert
    Avatar de Candygirl
    Femme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 912
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 912
    Par défaut
    Il est vrai que j'ai répondu sans tester

    Après test, il s'avère que le position absolute ou le float donnent le même résultat. A savoir le problème ne se pose que sur IE6 et quand les "div fils" sont dotés du layout. s'ils n'ont pas le layout ça donne le résultat souhaité me semble-t-il? :
    Code xhtml : 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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Document sans nom</title>
    	<style type="text/css">
            * {margin:0;padding:0;}
                    #bloc {
                            float:left; /* ou position:absolute; */
                            background:red;
                    }
                    .autre {
                            background:blue;
                            /* height:100px; donne le layout = la largeur ne s'adapte plus correctement */
                    }
            </style>
    </head>
     
    <body>
     
    	<div id="bloc">
    		<div class="autre">autre</div>
    		<table>
    			<tr>
    				<td>
    					blablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablabl
    				</td>
    			</tr>
    		</table>
    				<div class="autre">autre</div>
    	</div>
     
    </body>
     
    </html>
    Les bons réflexes:
    • avant de poser une question:
      règles | faq | tutoriels | recherche
    • clarté, politesse, vocabulaire et orthographe soignés = efficacité
    • remercier ceux qui ont pris le temps d'aider et :resolu: si c'est le cas

  12. #12
    Membre chevronné Avatar de Poulpynette
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 349
    Par défaut
    Bingo ! J'étais en train de tester en enlevant la hauteur au moment même où j'ai lu ton post. les grands esprits se rencontrent

    Maintenant l'ennui, c'est que j'ai plusieurs div dont la hauteur est spécifiée (pour corriger d'autres difficultés de centrage vertical dans chaque div).

    Bref, je corrige un problème mais j'en remets un autre sur le tapis.

    Pour la petite histoire :

    J'essaie de remettre un peu d'aplomb le HTML et le CSS d'une application que je reprends pour la faire évoluer.

    La mise en page ayant été faite avec des tables et le style un peu dans tout les sens, je m'efforce de remettre de l'ordre dans tout ça.
    Eh bien moi qui suis soucieuse d'utiliser au mieux les propriétés CSS et le HTML, j'en viens à me demander si mes prédécesseurs n'avaient pas fait le bon choix en optant pour le système de tables ^^
    Certes moins élégant, mais tellement plus simple. Cela fait plusieurs jours que j'essaie seulement de remplacer quelque tables par des div, et honnêtement, c'est la misère, je n'ai jamais autant galéré (pourtant ce n'est pas la première fois que je fais ça).

    Bref, désolée de raconter ma vie, mais ça fait du bien de s'exprimer des fois

    Merci à vous pour votre aide

  13. #13
    Membre chevronné Avatar de Poulpynette
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 349
    Par défaut
    NB : j'ai oublié de préciser, j'ai laissé le "position: absolute;" sur le div englobant, sinon cela ne fonctionne pas.

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

Discussions similaires

  1. Afficher une div lorsqu'une checkbox est cochée
    Par nicolas2603 dans le forum jQuery
    Réponses: 3
    Dernier message: 05/02/2010, 18h15
  2. Exécution d'une macro seulement lorsque la page est fini d'être affichée
    Par Dr_shaman dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/04/2009, 14h26
  3. Réponses: 1
    Dernier message: 22/12/2005, 18h28
  4. Tester si une page est ouverte
    Par Osmani dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/11/2005, 14h47
  5. Calcul Stock Actuel mm lorsqu'une valeur est null
    Par priest69 dans le forum Access
    Réponses: 3
    Dernier message: 12/09/2005, 19h58

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