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 :

Layout avec header et contenu full-height


Sujet :

CSS

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Layout avec header et contenu full-height
    Bonjour à tous.

    Dans une page web, je veux mettre en place, de préférence en CSS2, une mise en page qui ressemble à ceci :



    - en haut : un bandeau, fixe, dont la hauteur est connue en absolu (n pixels),
    - sous le bandeau : un corps de page qui, s'il dépasse de la fenêtre du navigateur, se voit doter d'une barre de défilement verticale
    - cette barre de défilement n'apparaît qu'à droite du corps de la page, pas à droite du bandeau

    Dans sa nouvelle interface, la messagerie Gmail de Google ressemble à cela.

    Mon problème réside dans le fait de donner une taille (height) à #content afin que, à l'aide de la propriété overflow:auto, la barre de défilement apparaisse quand cette taille est dépassée. La valeur de height (ou max-height) doit être égale à 100% moins les n pixels de #header.

    Sans Javascript, je n'arrive pas à faire quelque chose de propre.
    Auriez-vous une solution ?

    Merci.
    Dernière modification par Invité ; 04/02/2012 à 16h51.

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Sans Javascript, je n'arrive pas à faire quelque chose de propre.
    Manifestement, tu n'as jamais essayé d'utiliser GMail en désactivant JavaScript
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Invité
    Invité(e)
    Par défaut
    Si, je sais bien que c'est bourré de Javascript.
    Je parlais seulement du rendu.
    J'ai un cahier des charges qui me contraint fortement à m'orienter vers le moins de Javascript possible, voire pas du tout.
    Si quelqu'un a une solution en CSS, je suis preneur.
    Merci.

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    A ma connaissance, la détection de la hauteur de l'espace d'affichage ne peut pas se faire en CSS.
    Tu n'auras donc pas le choix au niveau de l'utilisation de JavaScript.

    J'ai un cahier des charges qui me contraint fortement à m'orienter vers le moins de Javascript possible, voire pas du tout.
    La bonne question à se poser est de savoir pourquoi cette contrainte ?
    Très sincèrement, ce genre de contrainte me semble aberrante aujourd'hui (et encore plus lorsqu'en plus, on demande des fonctionnalités reposant sur l'utilisation de JavaScript ) et est à mon sens plus suscité par une réminiscence de "certitudes" irrationnelles liée au Web des années 90 qu'à une réflexion sérieuse.

    Bien entendu, cela ne veut pas dire qu'il ne faut pas prévoir des fallbacks en cas de désactivation de JavaScript pour une raison ou une autre
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 212
    Par défaut
    Bonjour,
    Citation Envoyé par Bovino
    Tu n'auras donc pas le choix au niveau de l'utilisation de JavaScript.
    il existe très souvent des astuces en CSS et il en existe aussi une dans ce cas que je ne qualifierais quand même pas de layout à la Gmail.

    Base du HTML
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <div id="page">
      <div id="header">
      </div>
      <div id="content">
        <div id="contenu">
        </div>
      </div>
    </div>
    Base du CSS
    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
    20
    21
    22
    23
    24
    25
    html, body{
      width: 100%;
      height: 100%;
      margin: 0;
      padding: 0;
      overflow: hidden; /* evite la double barre de scroll sous certains navigateurs */
    }
    #page{
      position: relative;
      height:100%;
    }
    #header{
      height: 90px;
      overflow: hidden; /* evite le chevauchement sur #content */
    }
    #content{
      position: absolute;
      width: 100%;
      top: 90px;       /* hauteur header + border header eventuelle */
      bottom: 0;       /* position basse */
      overflow: auto;
    }
    #contenu{
      margin: 10px;
    }
    Un fichier de Test
    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
    66
    67
    68
    69
    70
    71
    72
    <!DOCTYPE html>
    <html lang="fr">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>[CSS] Hauteur Content 100% restant...]</title>
    <meta name="Author" content="NoSmoking">
    <style type="text/css">
    html, body{
      width: 100%;
      height: 100%;
      margin: 0;
      padding: 0;
      overflow: hidden;
      font-family: Verdana;
      font-size: 1em;
    }
    h1 {
      margin: 0;
      color: #6699CC;
      font-size: 2.0em;
    }
    h1 img{
      vertical-align : middle;
    }
    #page{
      position: relative;
      height:100%;
    }
    #header{
      height: 90px;
      background-color: #e0e0e0;
      overflow: hidden;
    }
    #content{
      position: absolute;
      width: 100%;
      top: 90px; /* hauteur header + border header eventuelle */
      bottom: 0;
      background-color: #fafafa;
      overflow: auto;
    }
    #contenu{
      margin: 10px;
    }
    </style>
    </head>
    <body>
    <div id="page">
      <div id="header">
        <h1><img src="http://www.developpez.net/template/images/logo.png" alt="www.developpez.net">
        CSS Hauteur #Content 100% restant...</h1>
      </div>
      <div id="content">
        <div id="contenu">
          <h2>Un Titre</h2>
          <p>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.</p>
          <p>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.</p>
          <p>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.</p>
          <p>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.</p>
          <p>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.</p>
          <p>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.</p>
          <p>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.</p>
          <p>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.</p>
          <p>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.</p>
          <p>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.</p>
          <p>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.</p>
          <p>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.</p>
        </div>
      </div>
    </div>
    </body>
    </html>

    Citation Envoyé par Bovino
    La bonne question à se poser est de savoir pourquoi cette contrainte ?
    Très sincèrement, ce genre de contrainte me semble aberrante aujourd'hui (et encore plus lorsqu'en plus, on demande des fonctionnalités reposant sur l'utilisation de JavaScript ) et est à mon sens plus suscité par une réminiscence de "certitudes" irrationnelles liée au Web des années 90 qu'à une réflexion sérieuse.
    je partage tout à fait cet avis...

    edit
    trouvé dans la galerie CSS http://css.developpez.com/tutoriels/...ers/exemple_1/

  6. #6
    Invité
    Invité(e)
    Par défaut
    Merci à vous deux pour vos réponses.

    Je suis également d'accord avec la remarque de Bovino sur l'allergie aux scripts dans les pages web.

    Merci beaucoup NoSmoking pour ta solution. Je me rends compte finalement que ce n'était pas si complexe... et ça m'agace.^^ D'autant plus que j'avais fini par le faire en Javascript. Mais puisqu'une solution élégante existe en CSS, allons-y.

    J'ai renommé le sujet en "Layout avec header et contenu full-height". N'hésitez pas à suggérer un meilleur titre.

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

Discussions similaires

  1. Layout avec header s'ajustant au contenu
    Par Erakis dans le forum Mise en page CSS
    Réponses: 10
    Dernier message: 01/02/2010, 17h14
  2. Contenu central adaptable avec header et footer fixes
    Par kayoum dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 29/09/2009, 18h39
  3. [JpGraph] problème avec header
    Par ciesco dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 08/01/2006, 17h02
  4. [Système] Problème avec header() ...
    Par tom06440 dans le forum Langage
    Réponses: 15
    Dernier message: 27/10/2005, 21h33
  5. Probleme avec le signe & contenu dans un parametre d'une
    Par Ludo_xml dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 22/08/2005, 15h45

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