La bonne solution est "flex". Cela fait 3 ans depuis le post original donc je vais supposer que nous pouvons ignorer le support de IE8 en faveur des navigateurs plus modernes qui supportent cette solution.
Comme beaucoup l'ont noté, chaque solution proposée rencontre des problèmes. Si le premier élément de la zone de contenu est masqué par rapport à l'en-tête absolu, ou si la zone de contenu occupe toute la hauteur du parent, le bas de la zone de contenu risque d'être tronqué sauf si l'en-tête (ex: height: calc (100% - "hauteur de l'en-tête" px) ce qui signifie que vous avez des valeurs codées en dur dans votre CSS ... pas bien, ou la barre de défilement étant placée au niveau parent immobilier.
afin d'éviter ces solutions hack utiliser la solution « flex » ci-dessous.
<div style="width: 200px; float: right; border: 1px solid black;
display: flex; flex-direction: column;">
<div style="width: 100%;">
<div style="width: 100%;">
I'm a header
</div>
</div>
<div style="width: 100%; height: 100%; overflow:auto;">
<div style="height:900px; background-color:lavender;">content area</div>
</div>
</div>
la défintion de fixe est qu'il est positionné par rapport à la fenêtre du navigateur. – joakimdahlstrom
Quelle version de IE? IE6 et inférieur ne supportent pas la position: fixe, donc ça ne va pas fonctionner. La page StickyScroll le prévient: "Nous utilisons la position: style fixe sur l'élément collant, donc IE6 n'est pas supporté" –
J'ai seulement besoin de ça dans IE 8, mais ma page et les démos StickyScroll ne fonctionnent pas dans IE. – Sbml