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 :

Figer l'entête - Position: fixed


Sujet :

Positionnement en CSS

  1. #1
    Membre régulier
    Inscrit en
    Mai 2008
    Messages
    195
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2008
    Messages : 195
    Points : 82
    Points
    82
    Par défaut Figer l'entête - Position: fixed
    Bonsoir à toutes et à tous,

    Je me posais une question par rapport à position: fixed;.

    Mon site est composé des blocs suivants:
    . Entête
    . Navigation
    . corps de la page
    . Pied de page

    Je souhaite figer l'entête ainsi que la navigation en haut de la page.
    Pour cela, j'utilise position: fixed;.
    Cela fonctionne mais j'ai quelques bugs avec cela...
    En fixant la position, j'ai l'impression qu'entête et navigation "flottent au dessus" du reste.
    De fait, Corps de page et pied de page remonte en haut de la page et sont masqués par entête + navigation.

    Je crée une marge supérieure au dessus de corps de page pour le décaler du haut de la page mais ce n'est pas très propre comme code... et surtout je ne suis pas certain que le rendu soit le même sur tous les navigateurs/ tous les supports de lecture.

    Y a t-il une manière plus propre de coder cela?

    D'avance merci pour vos retours

    Bonne soirée

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,

    Pour faire court :
    avec la position:fixed l’élément est retiré du flux du document donc effectivement les éléments suivants « prennent sa place », il remontent.
    Pour que l’élément suivant, dans la chronologie de la page et sauf indications contraires, soit visible il faut donc effectivement lui affecter une margin-top équivalent à la hauteur de l’élément en position fixed, c’est donc tout à fait normal et tout à fait propre.

    On notera que ce type de positionnement fait que l’élément n’occupe, sans plus d’indications, que la place nécessaire à son contenu.


    Y a t-il une manière plus propre de coder cela?
    Pas forcément plus propre, mais plus actuelle, est la solution d’utiliser un élément en position:sticky.
    L’élément se comporte comme un élément en position:relative, donc dans le flux du document, avec la particularité de se « scotcher » lorsque son conteneur atteint la position définie via les propriétés left et/ou top lors d’un scroll par exemple.

    L’avantage est que l’élément suivant reste bien à sa place tant que l’élément n’a pas atteint sa position « scotchée » auquel cas le comportement s’apparente à la position fixed.

    Un autre avantage est de ne pas avoir à déclarer une margin-top à l’élément suivant.

    Essaie avec ce code en modifiant le type de la position du <header> :
    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
    <!DOCTYPE html>
    <html lang="fr">
    <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Sticky vs fixed</title>
    <style>
    html,
    body {
      margin: 0;
      padding: 0;
    }
    header {
      position: sticky;
    /*  position: fixed; /*- a décommenter -*/
      top: 0;
      height: 10em;
      background-color: #DEF;
    }
    main {
      height: 100em;
      background-color: #FDE;
    }
    footer {
      height: 10em;
      background-color: #EFD;
    }
    </style>
    </head>
    <body>
      <header>&lt;header> </header>
      <main>&lt;main> </main>
      <footer>&lt;footer> </footer>
    </body>
    </html>

  3. #3
    Membre régulier
    Inscrit en
    Mai 2008
    Messages
    195
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2008
    Messages : 195
    Points : 82
    Points
    82
    Par défaut
    Bonjour,

    Merci pour ta réponse.
    Cela fonctionne super bien!

    J'ai adapté pour "coller" mon header + mon nav en haut de ma page.
    Cela donne cela (ton code légèrement modifié):
    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
    		<style>
                html,
                body 
                {
                  margin: 0;
                  padding: 0;
                }
                header
                {
                  position: sticky;
                  top: 0;
                  height: 11em;
                }
                nav
                {
                  position: sticky;
                  top: 12em;
                }
            </style>

    Pour l'instant j'ai juste fait mes petits modifs sans trop comprendre 100% de ce paramètre.
    Je dois désormais faire mes recherches dessus.
    Par exemple, je ne savais pas que l'on pouvait coller directement cela dans le code html entre des balises style (encore tant de choses à assimiler )

    Un grand merci à toi en tout cas, tu m'as vraiment beaucoup aider

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

Discussions similaires

  1. [RCP][IHM] Vue avec taille et position fixe
    Par barbu0055 dans le forum Eclipse Platform
    Réponses: 3
    Dernier message: 21/12/2007, 14h40
  2. Récupérer le top d'un élément en position: fixed
    Par Maximil ian dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 26/10/2007, 09h54
  3. [MFC] Creer une frame de position fixe
    Par ZaaN dans le forum MFC
    Réponses: 1
    Dernier message: 28/11/2005, 21h31
  4. Menu en position:fixed plus haut que la fenêtre
    Par Maximil ian dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 15/12/2004, 23h14
  5. Centrer une <div> en position fixe sous IE
    Par Jorus dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 23/09/2004, 15h29

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