Perché 150 + 150 non equivalgono a 300 nei browser?
Domanda
Ho il seguente HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<style>
.box {
border: solid black 1px;
padding: 0px;
margin: 0px;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<input class="box" style="width:300px;" /><br /><!--CRLF for clarity only-->
<input class="box" style="width:150px;" /><!--CRLF for clarity only-->
<input class="box" style="width:150px;" /><!--CRLF for clarity only-->
</form>
</body>
</html>
Quando viene visualizzato, la seconda riga di caselle di testo sembra essere cumulativamente più lunga di 1 sulla prima riga. Ciò nonostante l'impostazione esplicita delle larghezze tramite l'attributo style
Perché succede e posso evitarlo?
Nota: questo sembra funzionare allo stesso modo in FF3 e IE7
Soluzione
jhunter è corretto e aggiungerei che hai bisogno di Firebug per FireFox (è gratuito). Avresti potuto capirlo rapidamente con quello installato. Ispeziona l'elemento che ti interessa e guarda il "layout" scheda.
Altri suggerimenti
C'è un bordo in una casella di testo che non è incluso nella larghezza.
In effetti, la larghezza delle tue caselle è +2 come bordo sia a sinistra che a destra (che sono 1px) significa che ci sono 2 pixel extra per scatola. Quindi in totale sei +6.
Suggerirei di leggere CSS Mastery, spiega molte differenze con i diversi modelli di browser box e come influenzano il layout e la larghezza nei diversi browser.