J'ai une page avec des divs comme ci-dessous
<div id="container">
<div id="A">
</div>
<div id="B">
<div id="B1"></div>
<div id="B2">B2</div>
</div>
<div id="C"></div>
<div id="D">
</div>
</div>
avec style comme;
html, body {
margin: 0;
padding: 0;
border: 0;
}
#B, #C, #D {
position: absolute;
}
#A{
top: 0;
width: 100%;
height: 35px;
background-color: #99CC00;
}
#B {
top: 35px;
width: 200px;
bottom: 35px;
background-color: #999999;
z-index:100;
}
#B2 {
margin-top: -35px;
bottom: 0;
background-color: #FFFFFF;
width: 200px;
overflow: scroll;
}
#B1 {
height: 35px;
width: 35px;
margin-left: 200px;
background-color: #CC0066;
}
#C {
top: 35px;
left: 200px;
right: 0;
bottom: 35px;
background-color: #CCCCCC;
}
#D {
bottom: 0;
width: 100%;
height: 35px;
background-color: #3399FF;
}
Je veux ajuster la hauteur de div B2
pour remplir (ou étirer) tout le div B
(marqué d'une bordure verte) et je ne veux pas croiser le pied de page div D. Voici un violon qui fonctionne démo (mis à jour). Comment puis-je résoudre ça??
Ajoutez simplement height: 100%;
sur le style #B2
. min-height
ne devrait pas être nécessaire.
Supposons que vous ayez
<body>
<div id="root" />
</body>
Avec CSS normal, vous pouvez faire ce qui suit. Voir une application qui fonctionne https://github.com/onmyway133/Lyrics/blob/master/index.html
#root {
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%;
}
Avec flexbox, vous pouvez
html, body {
height: 100%
}
body {
display: flex;
align-items: stretch;
}
#root {
width: 100%
}
Utilisez la propriété "min-height"
Méfiez-vous des rembourrages, des marges et des bordures :)
html, body {
margin: 0;
padding: 0;
border: 0;
}
#B, #C, #D {
position: absolute;
}
#A{
top: 0;
width: 100%;
height: 35px;
background-color: #99CC00;
}
#B {
top: 35px;
width: 200px;
bottom: 35px;
background-color: #999999;
z-index:100;
}
#B2 {
min-height:100%;
height:100%
margin-top: -35px;
bottom: 0;
background-color: red;
width: 200px;
overflow: scroll;
}
#B1 {
height: 35px;
width: 35px;
margin-left: 200px;
background-color: #CC0066;
}
#C {
top: 35px;
left: 200px;
right: 0;
bottom: 35px;
background-color: #CCCCCC;
}
#D {
bottom: 0;
width: 100%;
height: 35px;
background-color: #3399FF;
}
Si vous allez utiliser B2 à des fins de style, vous pouvez essayer ce "bidouillage"
#B { overflow: hidden;}
#B2 {padding-bottom: 9999px; margin-bottom: -9999px}
Ce qui me convenait le mieux était de créer une div toujours limitée dans la fenêtre du navigateur par un montant fixe.
Ce qui a fonctionné, du moins sur Firefox, est-ce
<div style="position: absolute; top: 127px; left: 75px;right: 75px; bottom: 50px;">
Dans la mesure où la fenêtre elle-même n'est pas forcée à faire défiler, le div conserve ses limites avec la fenêtre Edge pendant tout le redimensionnement.
J'espère que cela sauve du temps à quelqu'un.
Conteneur B2 position relative
Position haute B2 + de la hauteur restante
Hauteur de B2 + hauteur B1 ou hauteur restante