Por que 150 + 150 é igual a 300 em navegadores?
Pergunta
Eu tenho o seguinte 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 tornou a segunda fileira de caixas de texto parecem ser cumulativamente mais do que o 1 na primeira linha. Isto apesar de definição explícita de larguras de via o atributo de estilo
Por que isso acontece e eu posso evitá-lo?
Nota: Este parece funcionar da mesma em ambos os FF3 e IE7
Solução
jhunter está correto, e eu gostaria de acrescentar que você precisa Firebug para o Firefox (é gratuito). Você poderia ter percebido isso se rapidamente com que instalou. Inspecione o elemento que você está interessado e olhar para o guia "layout".
Outras dicas
Há uma borda em uma caixa de texto que não está incluído na largura.
Na verdade, a largura de seus caixas são duas como uma fronteira em ambos à esquerda e à direita (que são 1px) significa que há 2 pixels extras por caixa. Assim, no total você está +6.
Eu sugiro a leitura CSS Mastery, explica um monte das diferenças com os diferentes modelos de caixa de navegador e como eles afetam o layout e de largura em diferentes navegadores.