Je voudrais mettre un footer au dessous du "contenu" si la hauteur du contenu dépasse celle de l'écran, et en bas de l'écran dans le cas contraire.

Actuellement j'ai du code javascript qui fait ce calcul et met le footer à la bonne position.

En essayant de faire cela par CSS, j'ai soit un texte en bas de l'écran qui se superpose au contenu si le contenu est plus grand que l'écran, soit un texte qui se met juste au dessous du contenu et laisse le bas de l'écran vide si le contenu est trop petit pour remplir l'écran.

Compte tenu de mes connaissances très limitées dans les arcanes de CSS, je n'exclus pas qu'il y ait une solution évidente à laquelle je n'ai pas pensé Smiley eek
Par contre, pour répondre à la question de base du fil de discussion :
PapyJP a écrit :
où est le VRAI bas de la page?

Cette question n'a pas tellement de sens sur le media web qui n'est, par nature, pas un media paginé.

Les deux éléments pouvant éventuellement correspondre à un "bas" sont :

– le "bas" de la fenêtre du navigateur.
Oui, mais il n'y a aucune raison pour que le contenu de la page ne couvre pas plus de place verticalement. Ce "bas" là ne correspond donc pas au contenu. Par ailleurs, il est totalement relatif à la hauteur de la fenêtre du navigateur du visiteur, et par extension à sa résolution, à son appareil, etc.

– le "bas" du conteneur principal de l'ensemble des éléments HTML visibles de la page.
Il s'agit donc a priori de l'élément body. Ok, mais alors il est impossible de déterminer avec précision une valeur absolue à laquelle ce "bas" là se situerait car tout dépend de la quantité de contenu de ce conteneur.

Pas simple. Je pense que le questionnement n'est pas très adapté au média web. Je crois surtout qu'il s'agit d'une envie de retranscrire le format papier (paginé) à l'écran qui ne fonctionne pas de la même façon.
audrasjb a écrit :
Je crois surtout qu'il s'agit d'une envie de retranscrire le format papier (paginé) à l'écran qui ne fonctionne pas de la même façon.

C'est exact, il s'agit bien d'un problème de migration esthétique d'un type de support à un autre.
Cela se complique en raison de la grande variété de formats d'écran qui sont maintenant disponibles, en particulier les tablettes et leur possibilité de format portrait et paysage.
Reste que c'est quelque chose qui correspond à une demande d'un public que nous (informaticiens) ne connaissions pas il y a 20 ans, et nos outils ne sont pas prévus pour y faire face.
Je clos cette question... il y en aura d'autres, mais je continue mon nettoyage de code. J'ai déjà gagné pas mal de choses inutiles dans la lancée de ce matin.
Modifié par PapyJP (03 Dec 2014 - 13:30)
Je renchéris tout de même avec une petite citation du taulier, récupérée sur un vieux sujet du forum…
Raphael a écrit :
le Web n'étant pas un média paginé contrairement au média d'impression, il n'est pas logique de "restreindre" un affichage à 100%… C'est au concepteur d'adapter ses besoins au média et non l'inverse.

Smiley cligne
Modifié par audrasjb (03 Dec 2014 - 13:58)
Zelalsan a écrit :
Un truc presque aussi vieux que le web

À titre personnel, malgré mes réticences de principe énoncées ci-dessus je préférerais nettement une alternative JS que d'utliiser (notamment) des marges négatives pour répondre à ce besoin. Mais la question principale reste selon moi celle de l'opportunité de restituer une page web sous forme de media paginé…
Modifié par audrasjb (03 Dec 2014 - 21:45)
audrasjb a écrit :

À titre personnel, malgré mes réticences de principe énoncées ci-dessus je préférerais nettement une alternative JS que d'utliiser (notamment) des marges négatives pour répondre à ce besoin. Mais la question principale reste selon moi celle de l'opportunité de restituer une page web sous forme de media paginé…

À titre personnel, je considère que le travail du développeur est de satisfaire les utilisateurs en mettant en œuvre toute technologie permettant de le faire. Pour les gens de ma génération, le CSS est une techno relativement récente, nous nous étions débrouillés sans elle, mais ce n'est pas une raison pour l'ignorer, pour autant qu'elle soit correctement supportée par la plupart des navigateurs. Je suis donc désireux d'en tirer le meilleur parti et simplifier autant que possible le code des sites que je gère.

Pour le reste, il n'est pas question de "restituer une page web sous forme de média paginé" -- concept que j'ai du mal à comprendre --, mais plus simplement de présenter au mieux une page en fonction de l'écran sur lequel il s'affiche. Cela dépend des pages, bien entendu, sachant qu'il convient de garder cependant une certaine unité entre les différentes pages d'un même site.

En théorie, une page web fait appel à trois concepts: structure (HTML), présentation (CSS) et actions (Javascript). Utiliser le Javascript pour améliorer la présentation ne me choque pas, si CSS ne sait pas faire.
Il me semble que l'argument selon lequel il ne faudrait pas faire des choses dans la presentation que CSS ne fait pas relèverait d'une forme de sectarisme.

Ayant découvert au cours de discussions récentes qu'on pouvait facilement faire en CSS des choses pour lesquelles j'avais développé de nombreuses lignes de code dans le passé, je juge intéressant de progresser dans cette technologie, point barre. Je me permets de faire appel aux personnes compétentes de ce forum pour m'aider dans cette tâche. Ayant laissé passer la capacité de mettre des div côte à côte et centrées, je pose simplement les questions qui m'ont conduit à des développements similaires peut être inutiles.

Je vous remercie tous pour votre bonne volonté et l'aide que vous apportez, à moi et à d'autres.
audrasjb a écrit :

À titre personnel, malgré mes réticences de principe énoncées ci-dessus je préférerais nettement une alternative JS que d'utliiser (notamment) des marges négatives pour répondre à ce besoin. Mais la question principale reste selon moi celle de l'opportunité de restituer une page web sous forme de media paginé…

Je ne vois pas trop où est la logique et le bon sens dans le fait de passer par JavScript pour éviter l'utilisation de marges négatives. C'est assez disproportionné. Les marges négatives existent et n'ont jamais fait débat sur leur présence.
De plus, JavaScript n'est pas un langage de mise en page, surtout que ce qui a été énoncé est entièrement réalisable en CSS.
J'ai cité cet exemple pour une réponse rapide mais on peut très bien le faire avec un "display:table-row".

<div id="Wrapper">
 
	<div>

	</div>
 
	<footer>
		...
	</footer>
 
</div>



html, body {
	height: 100%;
	margin: 0;
}
 
#Wrapper {
	display: table;
	width: 100%;
	height: 100%;
}
 
#Wrapper>div {
	display: table-row;
	height: 100%;
}
 
#Wrapper>footer {
	display: table-row;
	background: #3f3f3f;
} 

On pourrait même imaginer faire ça avec "flex".
Zelalsan a écrit :
On pourrait même imaginer faire ça avec "flex".

Je crois même que c'est tout à fait ce dont j'ai besoin!
Mais quel est actuellement le support des flexboxes par les navigateurs? J'ai l'impression que Safari/iPad les ignore purement et simplement.
Modifié par PapyJP (04 Dec 2014 - 09:46)
Zelalsan a écrit :

J'ai cité cet exemple pour une réponse rapide mais on peut très bien le faire avec un "display:table-row"....

J'ai essayé cet exemple. Assez amusant de voir que l'on en revienne aux "tables", même indirectement, mais ça semble marcher super!
Mille merci!
Modérateur
Sinon une solution que j'utilise souvent, sur la base de la position absolute!


<body>
  <div id="page">
    …des trucs…
  </div>
  <footer id="footer">Kustolovic rules!</footer>
</body>



html {
  height: 100%;
}
body {
  min-height: 100%;
  position: relative;
}
#page {
  padding-bottom: 2.2em;
}
#footer {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  padding: 0.4em 20px;
}


Le padding-bottom sur #page étant là pour assurer que le contenu ne disparaisse pas sous le footer
Modifié par kustolovic (04 Dec 2014 - 11:12)
kustolovic a écrit :
Sinon une solution que j'utilise souvent, sur la base de la position absolute!...

Le padding-bottom sur #page étant là pour assurer que le contenu ne disparaisse pas sous le footer

Désolé, ça se met en bas d'écran même si le contenu dépasse la hauteur de l'écran.
Au cas où c'est moi qui aurais semé le cheni voici la page in-extenso:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
    <head>
        <!--[if lt IE 9]>    <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width" />
        <title>Test de pied de page</title>
        <style type="text/css">
            body{
                 min-height:100%;
                 margin:0;
            }
            div{
                 margin:10px 0;
                 text-align:justify;
            }
            #Page { padding-bottom: 2.2em;}
            footer {position: absolute;
                  bottom: 0;
                  left: 0;
                  right: 0;
                  padding: 0.4em 20px;
                  background:#3f3f3f;
                  font-size:2em;
                  color:white;
                  font-weight:bold;
                  text-align:center;
                  }
            </style>
        
    </head>
    <body>
        <div id="Page">
            <div>
                <div>Lorem Elsass ipsum météor risus, vulputate quam, turpis, hopla auctor, Yo
                    dû.</div>
                <div>non Spätzle tellus sagittis tristique ornare hopla Gal. suspendisse schneck
                    réchime rhoncus lotto-owe schpeck condimentum ornare nüdle porta et mollis sed
                    Oberschaeffolsheim und Miss Dahlias aliquam so pellentesque in, commodo munster
                    adipiscing Coopé de Truchtersheim libero. bissame blottkopf, flammekueche lacus
                    Huguette ac Kabinetpapier amet, s'guelt Salut bisamme consectetur chambon messti
                    de Bischheim Oberschaeffolsheim Pellentesque tellus turpis quam. jetz gehts los
                    dolor yeuh. amet baeckeoffe knepfle mänele Racing. barapli Salu bissame id,
                    Christkindelsmärik gal ante ch'ai geïz geht's Pfourtz !</div>
                <div>ullamcorper gravida hop Richard Schirmeck rucksack merci vielmols Gal !
                    rossbolla sit knack amet Verdammi leo gewurztraminer id mamsell elit varius
                    bredele leo DNA, dui morbi Morbi leverwurscht sit nullam Chulien salu eleifend
                    semper wie hopla placerat picon bière senectus habitant Mauris libero, schnaps
                    vielmols, eget elementum libero, non sit Wurschtsalad purus tchao bissame hopla
                    Hans ac wurscht Carola ftomi!</div>
                <div>Chulia Roberstau sed Strasbourg kougelhopf Heineken kuglopf dignissim
                    kartoffelsalad hoplageiss .Nam fermentum ipsum at felis imperdiet
                    imperdiet.</div>
                <div>Ut nec pulvinar metus, id maximus dui. Sed augue justo, mattis eu vulputate ac,
                    tincidunt non enim. Suspendisse id nibh lectus.</div>
                
                <div>Suspendisse mattis commodo auctor. Fusce tempor felis eu pretium imperdiet.
                    Morbi tortor dui, vulputate ut eleifend sit amet, rutrum eu ex. Quisque finibus
                    vitae tellus sit amet luctus. Donec vel neque lobortis, sodales lacus varius,
                    suscipit augue. Fusce hendrerit tempor quam, sed posuere nunc cursus sed. Fusce
                    nunc ex, interdum at ligula ut, molestie porttitor lectus. Proin vitae est vitae
                    libero aliquet imperdiet vehicula sit amet enim. Quisque gravida neque sed arcu
                    sollicitudin, quis scelerisque mi pulvinar.</div>

                <div>Lorem Elsass ipsum Richard Schirmeck barapli Oberschaeffolsheim hop libero.
                    purus hopla sit quam, tristique commodo Spätzle Salut bisamme gewurztraminer
                    turpis Coopé de Truchtersheim schnaps tchao bissame Morbi tellus DNA,
                    Christkindelsmärik geïz messti de Bischheim dignissim ornare Pfourtz ! habitant
                    Chulia Roberstau hopla et dui vielmols, leo id, suspendisse eget sed jetz gehts
                    los s'guelt merci vielmols amet chambon sit Miss Dahlias turpis, baeckeoffe
                    schneck so bissame pellentesque picon bière lacus Oberschaeffolsheim salu quam.
                    ante ullamcorper auctor, blottkopf, vulputate und consectetur Gal. in, geht's
                    flammekueche ftomi! leverwurscht schpeck hoplageiss mamsell leo wurscht eleifend
                    météor Chulien id dolor Carola réchime Wurschtsalad amet, ch'ai mollis rucksack
                    tellus adipiscing nüdle kuglopf porta Kabinetpapier nullam knepfle gravida
                    Verdammi varius Heineken hopla non Racing. wie Yo dû. hopla libero, elit Hans
                    sagittis bredele yeuh. Huguette Salu bissame Gal ! Strasbourg non ac semper
                    risus, senectus ornare lotto-owe elementum morbi knack placerat Mauris gal amet
                    libero, munster rhoncus condimentum kougelhopf aliquam mänele sed rossbolla
                    Pellentesque sit ac kartoffelsalad .</div>
                <div>Lorem Elsass ipsum ac kuglopf knepfle quam, Oberschaeffolsheim schnaps turpis, 
                    rhoncus dui Richard Schirmeck chambon ante Mauris ch'ai wie id, Pellentesque gal 
                    mamsell auctor, ornare knack DNA, leo nullam barapli varius turpis rossbolla météor 
                    tellus condimentum suspendisse s'guelt hopla gewurztraminer morbi tristique geht's 
                    réchime ornare habitant sit schneck purus kartoffelsalad baeckeoffe sit so Salu bissame libero, 
                    hopla porta eget quam.</div>
                <div>Spätzle Heineken wurscht hoplageiss sed pellentesque consectetur tellus messti de Bischheim 
                    flammekueche placerat non dignissim Miss Dahlias vulputate Pfourtz ! risus, Hans semper 
                    Salut bisamme elit commodo lotto-owe gravida Kabinetpapier munster ac Morbi sed Chulia Roberstau amet und Gal.</div>
                <div>in, elementum Racing. geïz leverwurscht ullamcorper et picon bière Gal !</div>
                <div>adipiscing Coopé de Truchtersheim Strasbourg merci vielmols rucksack hopla Oberschaeffolsheim Yo dû.
                    tchao bissame hop Chulien yeuh. lacus non Carola schpeck hopla bredele amet Verdammi nüdle bissame ftomi!
                    dolor salu libero. blottkopf, sagittis libero, jetz gehts los amet, kougelhopf id vielmols,
                    mänele eleifend sit Christkindelsmärik aliquam Wurschtsalad mollis Huguette leo senectus .</div>
                <div>Lorem Elsass ipsum mamsell ftomi! Wurschtsalad knepfle vulputate non yeuh. wurscht leo 
                    morbi Carola Miss Dahlias condimentum nullam Chulien leo lacus purus 
                    Salut bisamme sit Salu bissame elementum chambon placerat knack libero, consectetur 
                    wie messti de Bischheim Racing. kougelhopf Huguette Pellentesque leverwurscht porta 
                    Spätzle barapli quam, baeckeoffe hopla et nüdle dignissim bredele non salu Heineken turpis, 
                    in, sed hopla merci vielmols munster auctor, rucksack elit libero, bissame Coopé de Truchtersheim schnaps Gal ! 
                    Kabinetpapier Verdammi Oberschaeffolsheim so tellus sagittis adipiscing quam. libero. gewurztraminer hoplageiss hop geht's amet, 
                    eget eleifend Gal. rossbolla blottkopf, Pfourtz !</div>
                <div>turpis ac vielmols, id météor sit schpeck amet commodo aliquam hopla geïz tellus Mauris dolor Yo dû. 
                    hopla ante ornare habitant varius senectus kuglopf ac sit ch'ai ornare jetz gehts los s'guelt und amet dui DNA, 
                    mänele picon bière risus, Oberschaeffolsheim flammekueche pellentesque id, ullamcorper schneck 
                    kartoffelsalad Richard Schirmeck gal lotto-owe Chulia Roberstau tchao bissame semper tristique 
                    Christkindelsmärik Morbi Hans Strasbourg sed suspendisse réchime mollis gravida rhoncus .</div>
                <div>Lorem Elsass ipsum bissame Spätzle flammekueche baeckeoffe ornare rucksack risus, 
                    hopla barapli kougelhopf leo Carola amet semper purus dolor hopla turpis, sit Pfourtz ! turpis Gal. m
                    étéor Strasbourg ac hoplageiss Heineken Salu bissame s'guelt sagittis ullamcorper Yo dû. 
                    morbi ante ornare nüdle hopla et elementum libero. condimentum habitant lotto-owe libero, 
                    kuglopf gal varius eleifend schnaps auctor, messti de Bischheim Morbi rossbolla chambon Kabinetpapier 
                    wurscht leverwurscht amet, gravida libero, Miss Dahlias réchime Wurschtsalad amet Coopé de Truchtersheim Gal ! 
                    id, Chulien tchao bissame adipiscing picon bière Huguette kartoffelsalad non ftomi! gewurztraminer lacus aliquam DNA, 
                    rhoncus schneck vulputate dignissim porta pellentesque nullam ac wie placerat sed dui 
                    Oberschaeffolsheim senectus Racing. elit commodo vielmols, Salut bisamme eget Pellentesque 
                    Hans Chulia Roberstau Mauris in, hop suspendisse sit mollis Oberschaeffolsheim Verdammi geïz knack so quam. 
                    mamsell quam, Richard Schirmeck non yeuh. hopla schpeck ch'ai Christkindelsmärik tristique geht's id 
                    jetz gehts los leo salu knepfle tellus consectetur bredele blottkopf, sed sit und mänele munster tellus merci vielmols .</div>
                <!--                -->
            </div>
        </div>
        <footer> CECI EST LE PIED DE PAGE </footer>
        
    </body>
</html>


Vous remarquerez l'utilisation judicieuse des outils proposés par le site! Smiley cligne
kustolovic a écrit :
Il manque «height: 100%» sur le html, et, très important, «position: relative» sur le body:

http://codepen.io/anon/pen/raOExr

Je me disais bien que j'avais dû louper quelque chose
Merci vielmols!
Modifié par PapyJP (04 Dec 2014 - 18:44)