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 :

Une box fixe qui suit du contenu


Sujet :

CSS

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 116
    Points : 62
    Points
    62
    Par défaut Une box fixe qui suit du contenu
    Bonjour à tous,

    Je suis confronté à un problème basic mais je ne sais plus comment le régler.
    J'ai une box verte (cf pièce jointe) d'une hauteur conséquente et je voudrais que la boxe rouge suive la box verte en hauteur. Je sais que c'est la propriété position:fixed qui me le permet hors lorsque j'ai toujours un bout de ma box rouge qui va aller chevaucher soit le header soit le footer celon si je spécifie le top ou le bottom. Comment faire pour qu'elle ne chevauge aucun des deux (je connais toutes les hauteurs des box sauf celle de la verte).

    Le code actuel de ma boxe rouge :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #box_rouge{
    background-color: #FFFFFF;
        left: 800px;
        position: fixed;
        top: 205px;
        width: 316px;
    }
    Merci de votre aide.
    Images attachées Images attachées  

  2. #2
    Membre expert
    Avatar de Muchos
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    1 700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 700
    Points : 3 849
    Points
    3 849
    Billets dans le blog
    6
    Par défaut
    Voici ma proposition :
    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
    38
    39
    40
    41
    42
    43
     
    <!doctype html>
    <html lang="fr-FR">
    <head>
    	<meta charset="UTF-8" >
    	<title>La box suit le contenu</title>
     
    <style type="text/css">
            body {margin: 0;}
            header {width: 100%; height: 5em; background-color: blue;}
            footer {width: 100%; height: 5em; background-color: yellow;}
            article {}              /*SI JAMAIS PAS DE TEXTE: FIXER HAUTEUR DANS ARTICLE ET METTRE 'HEIGHT: INHERIT;' DANS #LEFT ET #BOX*/
            #left {margin-right: 50%; padding: 1ex; text-align: justify; background-color: green;}  /*HAUTEUR VARIABLE SELON TEXTE*/
            #box {
                    position: fixed; top: 5em; right: 0; width: 250px;              /*POSITIONNEMENT EN RAPPORT AVEC HAUTEUR HEADER*/
                    z-index: -1;    /*LE FOOTER PASSE SUR LA #BOX*/
                    padding: 1ex; text-align: left; background-color: red;
            }
    </style>
     
    </head>
    <body>
    	<header>HEADER</header>
     
    	<article>
    		<section id="left">
    <p>
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec consectetur ante hendrerit. Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ut gravida lorem. Ut turpis felis, pulvinar a semper sed, adipiscing id dolor. Pellentesque auctor nisi id magna consequat sagittis. Curabitur dapibus enim sit amet elit pharetra tincidunt feugiat nisl imperdiet. Ut convallis libero in urna ultrices accumsan. Donec sed odio eros. Donec viverra mi quis quam pulvinar at malesuada arcu rhoncus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In rutrum accumsan ultricies. Mauris vitae nisi at sem facilisis semper ac in est.
     
    Vivamus fermentum semper porta. Nunc diam velit, adipiscing ut tristique vitae, sagittis vel odio. Maecenas convallis ullamcorper ultricies. Curabitur ornare, ligula semper consectetur sagittis, nisi diam iaculis velit, id fringilla sem nunc vel mi. Nam dictum, odio nec pretium volutpat, arcu ante placerat erat, non tristique elit urna et turpis. Quisque mi metus, ornare sit amet fermentum et, tincidunt et orci. Fusce eget orci a orci congue vestibulum. Ut dolor diam, elementum et vestibulum eu, porttitor vel elit. Curabitur venenatis pulvinar tellus gravida ornare. Sed et erat faucibus nunc euismod ultricies ut id justo. Nullam cursus suscipit nisi, et ultrices justo sodales nec. Fusce venenatis facilisis lectus ac semper. Aliquam at massa ipsum. Quisque bibendum purus convallis nulla ultrices ultricies. Nullam aliquam, mi eu aliquam tincidunt, purus velit laoreet tortor, viverra pretium nisi quam vitae mi. Fusce vel volutpat elit. Nam sagittis nisi dui.
    </p>
     
    		</section>
    		<aside id="box">
    <p>
    Suspendisse lectus leo, consectetur in tempor sit amet, placerat quis neque. Etiam luctus porttitor lorem, sed suscipit est rutrum non. Curabitur lobortis nisl a enim congue semper. Aenean commodo ultrices imperdiet. Vestibulum ut justo vel sapien venenatis tincidunt. Phasellus eget dolor sit amet ipsum dapibus condimentum vitae quis lectus. Aliquam ut massa in turpis dapibus convallis. Praesent elit lacus, vestibulum at malesuada et, ornare et est. Ut augue nunc, sodales ut euismod non, adipiscing vitae orci. Mauris ut placerat justo. Mauris in ultricies enim. Quisque nec est eleifend nulla ultrices egestas quis ut quam. Donec sollicitudin lectus a mauris pulvinar id aliquam urna cursus. Cras quis ligula sem, vel elementum mi. Phasellus non ullamcorper urna.
    </p>
    		</aside>
    	</article>
     
    	<footer>FOOTER</footer>
    </body>
    </html>

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 116
    Points : 62
    Points
    62
    Par défaut
    Merci pour cette tentative mais chez moi sa ne marche pas, la box rouge est au dessus de la box jaune alors qu'elle ne doit jamais être au dessus de la bleu et de la jaune.

    Une autre astuce ?

  4. #4
    Membre émérite
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Points : 2 778
    Points
    2 778
    Par défaut
    une première solution serait d'utiliser display:table pour le conteneur et display:table-cell pour les colonnes. Ainsi, elles auraient la même hauteur, mais comme ça imite le comportement des cellules d'un tableau, c'est moins libre pour "jouer" avec les largeurs selon moi.
    Une autre solution : display : inline-block. Contrairement à display:table-cell, c'est plus simple de le rendre compatible inter-navigateur.
    Cependant, cette solution requiert pas mal de "hack CSS" pour que ça soit compatible IE7 et moins (qui ne supporte pas le inline-block), on encore pour simuler la même hauteur des blocks inline (en jouant avec un overflow:hidden au niveau du conteneur et des marges du bas illimitées au niveau des cellules.)

    Bref, je te laisse découvrir le code que j'ai commenté :

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    <!DOCTYPE html>
    <html lang="fr-FR">
    <head>
      <meta charset="UTF-8" >
      <title>display: inline-block</title>
      <style type="text/css">
        body {
          margin: 0;
        }
        #header, #footer {
          width: 100%; 
          height: 5em; 
        }
        #header { background-color: blue; }
        #footer { background-color: yellow; }
        #article {
          overflow: hidden; /* même hauteur de colonne : pour cacher ce qui dépasse */
        }
        #left, #right {
          display: inline-block;
          display: -moz-inline-stack; /* FF 2- : équivaut à display:inline-block */
          vertical-align: top;
          padding-bottom: 9999px; /* même hauteur de colonne : pour combler le blanc du bas de la div*/
          margin-bottom: -9999px; /* même hauteur de colonne : pour combler le blanc du bas de la div*/
        }
        #left {
          width:700px;
          text-align: justify; 
          background-color: green;
        }   
        #right {
          width: 250px;
          text-align: left; 
          background-color: red;
        }
      </style>
      <!--[if lte IE 7.0]>
      <style type="text/css">
        /* hack IE 7 et moins pour l'équivalence display:inline-block*/
        #article {
          height:1%; 
        }
        #left, #right {
          zoom: 1; 
          display: inline; 
          height:100%; 
        }
      </style> 
      <![endif]-->
    </head>
    <body>
    <div id="header">HEADER</div>
    <div id="article">
      <div id="left">
        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec consectetur ante hendrerit. Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ut gravida lorem. Ut turpis felis, pulvinar a semper sed, adipiscing id dolor. Pellentesque auctor nisi id magna consequat sagittis. Curabitur dapibus enim sit amet elit pharetra tincidunt feugiat nisl imperdiet. Ut convallis libero in urna ultrices accumsan. Donec sed odio eros. Donec viverra mi quis quam pulvinar at malesuada arcu rhoncus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In rutrum accumsan ultricies. Mauris vitae nisi at sem facilisis semper ac in est.
        Vivamus fermentum semper porta. Nunc diam velit, adipiscing ut tristique vitae, sagittis vel odio. Maecenas convallis ullamcorper ultricies. Curabitur ornare, ligula semper consectetur sagittis, nisi diam iaculis velit, id fringilla sem nunc vel mi. Nam dictum, odio nec pretium volutpat, arcu ante placerat erat, non tristique elit urna et turpis. Quisque mi metus, ornare sit amet fermentum et, tincidunt et orci. Fusce eget orci a orci congue vestibulum. Ut dolor diam, elementum et vestibulum eu, porttitor vel elit. Curabitur venenatis pulvinar tellus gravida ornare. Sed et erat faucibus nunc euismod ultricies ut id justo. Nullam cursus suscipit nisi, et ultrices justo sodales nec. Fusce venenatis facilisis lectus ac semper. Aliquam at massa ipsum. Quisque bibendum purus convallis nulla ultrices ultricies. Nullam aliquam, mi eu aliquam tincidunt, purus velit laoreet tortor, viverra pretium nisi quam vitae mi. Fusce vel volutpat elit. Nam sagittis nisi dui.
        <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
      </div>
      <div id="right">
        Suspendisse lectus leo, consectetur in tempor sit amet, placerat quis neque. Etiam luctus porttitor lorem, sed suscipit est rutrum non. Curabitur lobortis nisl a enim congue semper. Aenean commodo ultrices imperdiet. Vestibulum ut justo vel sapien venenatis tincidunt. Phasellus eget dolor sit amet ipsum dapibus condimentum vitae quis lectus. Aliquam ut massa in turpis dapibus convallis. Praesent elit lacus, vestibulum at malesuada et, ornare et est. Ut augue nunc, sodales ut euismod non, adipiscing vitae orci. Mauris ut placerat justo. Mauris in ultricies enim. Quisque nec est eleifend nulla ultrices egestas quis ut quam. Donec sollicitudin lectus a mauris pulvinar id aliquam urna cursus. Cras quis ligula sem, vel elementum mi. Phasellus non ullamcorper urna.
      </div>
    </div>
    <div id="footer">FOOTER</div>
    </body>
    </html>

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 116
    Points : 62
    Points
    62
    Par défaut
    Merci pour ton aide mais je ne crois pas que tu avais saisie mon soucis. Je ne veux pas que les deux div aient la même hauteur (alignement) mais que la plus petite suive latéralement la plus grande.

    Sinon j'ai trouvé la solution grâce à un ami si cela peut aider quelqu'un il faut passer par Jquery et notament ce plugin :

    http://www.vertstudios.com/blog/jque...-fixed-plugin/

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

Discussions similaires

  1. Code source d'une page web qui change de contenu
    Par Eclipso-Free dans le forum Débuter
    Réponses: 1
    Dernier message: 16/09/2014, 14h32
  2. Réponses: 3
    Dernier message: 28/11/2012, 13h45
  3. une page php qui enregistre son propre contenu
    Par sami_c dans le forum Langage
    Réponses: 10
    Dernier message: 24/03/2006, 17h08
  4. [VBA-E]Erreur avec une combobox qui liste le contenu de cell
    Par Tartenpion dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/03/2006, 12h01
  5. texte qui suit le contour d'une image
    Par Rocket666 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 12
    Dernier message: 07/02/2006, 11h45

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