je me demande si c'est possible avec un simple css ou si je dois utiliser javascript pour cela?
j'ai une barre latérale sur mon site Web. une simple div # sidbar mesure normalement environ 1024px de haut, mais la hauteur change dynamiquement en raison de son contenu.
imaginons donc le cas suivant:
<div id="sidebar">
<div class="widget"></div> //has a height of 100px
<div class="widget"></div> //has a height of 100px
<div id="rest"></div> //this div should have the rest height till to the bottom of the sidebar
</div>
je veux que le repos div # remplisse le reste de la barre latérale jusqu'à ce qu'il atteigne le bas de la barre latérale div #.
est-ce possible avec du css pur?
Ce que vous voulez, c'est quelque chose comme 100% - 200px
mais CSS ne prend pas en charge les expressions telles que celles-ci. IE a une fonctionnalité "d'expressions" non standard, mais si vous voulez que votre page fonctionne sur tous les navigateurs, je ne vois pas comment faire cela sans JavaScript. Alternativement, vous pouvez faire tous les div
utilisent des hauteurs en pourcentage, vous pouvez donc avoir quelque chose comme 10% -10% -80%.
pdate: Voici une solution simple utilisant JavaScript. Chaque fois que le contenu de votre barre latérale change, appelez simplement cette fonction:
function resize() {
// 200 is the total height of the other 2 divs
var height = document.getElementById('sidebar').offsetHeight - 200;
document.getElementById('rest').style.height = height + 'px';
};
Si vous connaissez la hauteur exacte de #widget
(100px dans votre cas), vous pouvez éviter d'utiliser JavaScript en utilisant un positionnement absolu:
#sidebar
{
height: 100%;
width: ...;
position: relative;
}
.widget
{
height: 100px;
}
#rest
{
position: absolute;
left: 0;
width: 100%;
top: 200px;
bottom: 0;
}
Je propose l'élément table comme alternative:
Je suis tombé sur cette question en cherchant une réponse à une question similaire, et j'ai pensé illustrer calc
. À ce jour, calc
n'est pas encore pris en charge entre les navigateurs; cependant, vous pouvez vérifier ce lien ici pour voir si vos navigateurs cibles sont pris en charge. J'ai modifié le cas hypothétique de matt pour utiliser calc
dans n exemple sur jsFiddle . Il s'agit essentiellement d'une solution CSS pure qui fait ce que casablanca propose dans sa réponse. Par exemple, si un navigateur prend en charge calc
, alors height: calc(100% - 200px);
serait valide ainsi que pour des propriétés similaires.