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 :

Superposition de div


Sujet :

CSS

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 77
    Par défaut Superposition de div
    Bonjour, je sais que le sujet est connu mais je galère ...

    Voici ce que je désire obtenir :


    Les div A et B se suivent dans le flux.
    A1 et A2 sont respectivement en float left et right dans la div A.
    La hauteur de la div A dépend de celle de la div A1.

    J'aimerais que lorsque A2 est plus grande que A, elle chevauche la div du dessous (B).

    Voilà voilà ... si quelqu'un à une piste. Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Par défaut
    Bonsoir

    Je pense avoir compris ce que tu veux, tu aura une réponse dans ces deux tutoriels : http://css.developpez.com/tutoriels/...issement-flux/ et http://css4design.developpez.com/tut...flux-partie-2/.

    Bonne lecture

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 77
    Par défaut
    Merci beaucoup, je consulte et je posterai la solution.
    Si je trouve !

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 77
    Par défaut
    Alors ... j'ai l'impression que les méthodes proposées ne correspondent pas à ce que je veux :

    la propriété overflow permet à la div A de prendre en compte la hauteur de A1 et A2 or c'est justement ce que je ne veux pas :

    j'aimerais qu'elle s'adapte seulement à la hauteur de A1 mais que A2 dépasse ET chevauche B.

    Ce doit être une question de z-index et position mais je ne trouve pas le bon mélange

    EDIT :

    Voici un exemple qui fonctionne sous Firefox et pas sous IE :
    http://fayanet.ovh.org/test/

    En cliquant sur les titres, la div B ne bouge pas et c'est bien ce que je veux.
    Reste à dompter IE ...
    (le lien du CSS est dans la div B)

  5. #5
    Expert confirmé
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Par défaut
    Ok j'avais compris l'inverse...

    En réfléchissant rapidement je dirais si tu peut donner une hauteur fixe à la div A ce serait un plus :

    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
    37
    <!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" xml:lang="fr" lang="fr-FR">
    <head>
    <title>Page d'accueil</title>
    <meta http-equiv="Content-Style-Type" content="text/css" />
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <style type="text/css">
    div { margin:10px;padding:10px; }
    body { width:500px; }
    </style>
    </head>
     
    <body>
     
    <div style="border:1px solid black;height:400px;background:white;">
    A
      <div style="border:1px solid black;float:left;width:40%;">
    A1
    "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
      </div>
     
      <div style="border:1px solid black;float:right;width:40%;background:purple;">
    A2
    "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
    "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
      </div>
    </div>
     
    <div style="border:1px solid black;background:yellow;">
    B
    "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
    "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
    </div>
     
    </body>
    </html>

    Sinon je verrais la position relative :
    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
    <!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" xml:lang="fr" lang="fr-FR">
    <head>
    <title>Page d'accueil</title>
    <meta http-equiv="Content-Style-Type" content="text/css" />
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <style type="text/css">
    div { margin:10px;padding:10px; }
    body { width:500px; }
    </style>
    </head>
     
    <body>
     
    <div style="border:1px solid black;background:white;">
    A
      <div style="border:1px solid black;width:180px;float:left;">
    A1
    "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
      </div>
     
      <div style="border:1px solid black;position:relative;left:0px;top:0px;width:180px;background:purple;overflow:hidden;">
    A2
    "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
    "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
      </div>
    </div>
     
    <div style="border:1px solid black;background:yellow;">
    B
    "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
    "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
    </div>
    </body>
    </html>

    Cette dernière solution me parrait beaucoup plus bancale, je n'ai testé qu'avec firefox 3. Le css se trouve dans le html, désolé, mais ça va plus vite comme ça, faut pas le refaire...

    Sinon quelqu'un d'autre trouvera peut être une autre solution...

  6. #6
    Membre Expert Avatar de Erwan31
    Profil pro
    Inscrit en
    Février 2008
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 2 177
    Par défaut
    Bonsoir,
    c'est faisable sans trop de difficultés en positionnant le bloc A2 en absolute, c-a-d retiré du flux.
    Mais autant se passer de positionnement absolue et utiliser une solution à base de flottants et de blocs en flux normal:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <div>A
    	<div style="float:right; height: 500px; width: 500px; ">A2</div>
    	<div>A1</div>
    </div>
    <div>B</div>
    L'astuce consiste à exploiter justement le flottement pour retirer partiellement le bloc A2 du flux normal vis à vis de son bloc parent (A ici)
    donc sans qu'il puisse influer sur la hauteur de A.
    Ce bloc doit se trouver AVANT le bloc A1 dans le code pour s'afficher au même niveau.

    Attention, pour que cette méthode fonctionne sous IE7- (au passage ne pas oublier de tester sous IE8 qui vient de sortir en version finale) les blocs A et B ne doivent pas avoir le layout, c-a-d qu'il se doivent pas être dotés de largeur ou hauteur (principalement).
    Le layout provoque ici un comportement non standard sous IE7- > le bloc englobe ses enfants flottant alors que ça ne devrait pas.

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

Discussions similaires

  1. superposition des div
    Par steinfield dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 16/01/2008, 11h27
  2. Superposition de div dans un tableau
    Par fitz182 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 24/10/2007, 22h22
  3. Superposition de div
    Par Ministar dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 11/09/2007, 15h45
  4. Problème de superposition de divs
    Par sylsau dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 21/10/2006, 12h41
  5. [CSS] superposition de div
    Par julien.63 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 27/06/2006, 15h32

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