Com HTML / CSS, como criar um elemento com largura e / ou altura que seja 100% do elemento pai e ainda ter margens ou preenchimento adequados?
Por "apropriado", quero dizer que, se meu elemento pai for 200px
alto e eu especificar height = 100%
com, padding = 5px
eu esperaria que eu recebesse um 190px
elemento alto border = 5px
de todos os lados, bem centralizado no elemento pai.
Agora, eu sei que não é assim que o modelo de caixa padrão especifica que ele funcione (embora eu queira saber exatamente o porquê ...), portanto a resposta óbvia não funciona:
#myDiv {
width: 100%
height: 100%;
padding: 5px;
}
Mas parece-me que deve haver ALGUM modo de produzir esse efeito de maneira confiável para um pai de tamanho arbitrário. Alguém sabe como realizar essa tarefa (aparentemente simples)?
Ah, e para constar, não estou muito interessado na compatibilidade com o IE, de modo que (espero) torne as coisas um pouco mais fáceis.
EDIT: Como um exemplo foi solicitado, aqui está o mais simples que consigo pensar:
<html style="height: 100%">
<body style="height: 100%">
<div style="background-color: black; height: 100%; padding: 25px"></div>
</body>
</html>
O desafio é fazer com que a caixa preta apareça com um preenchimento de 25 pixels em todas as bordas, sem que a página fique grande o suficiente para exigir barras de rolagem.