Quindi, prima un po 'di carne per impostare la scena:Perché le proprietà della larghezza e dell'altezza CSS non si adattano al riempimento?
HTML
<div id="container">
<div id="inner">test</div>
</div>
CSS
#container {
width:300px;
height:150px;
background-color:#d7ebff;
}
#inner {
width:100%;
height:100%;
padding:5px;
background-color:#4c0015;
opacity:.3;
}
Questo produrrà qualcosa che assomiglia a questo in tutti i browser moderni:
Ora so che questo è il comportamento conforme agli standard (come sapevo prima, ma riconfermata nel this post, e so anche che se includo questo codice nella dichiarazione CSS interno:
box-sizing:border-box;
-moz-box-sizing:border-box;
-webkit-box-sizing:border-box
.. . Adotterò il modello "border-box" e otterrò il comportamento che mi sembra più intuitivo, ma mi sono appena trovato a cercare di giustificare logicamente il ragionamento dietro al perché questo è il modo in cui è e non sono stato in grado di farlo.
Sembra (sulla superficie delle cose) più logico per me che la scatola interna riempia sempre il contenitore esattamente al 100% della larghezza del contenitore, indipendentemente dal riempimento o dal bordo della scatola interna. Mi imbatto in questo problema tutto il tempo in cui sto cercando di impostare la larghezza di una textarea al 100% con un bordo o qualcosa di simile a un padding interno di 4px ... la textarea riempirà sempre il contenitore.
Quindi la mia domanda è ... qual è la logica dietro l'impostazione del comportamento predefinito per ignorare il bordo e il riempimento di un elemento quando si imposta la larghezza?
"in tutti i browser moderni" - tranne IE 8 che produce un quadrato sostanzialmente rosso. – NotMe
IE è l'esploratore del cavernicolo. – JCOC611
@ JCOC611: Anch'io ci pensavo. Tuttavia, ho notato che tutti i browser hanno a volte problemi criptanti. Almeno con un rigoroso doctype, posso almeno fare in modo che IE8, Chrome e Firefox visualizzino almeno tutto in modo identico. Ora, se Firefox risolvesse i loro articoli di stampa e Chrome potesse semplicemente caricare le pagine, mi piacerebbe molto fuggire da IE. – NotMe