.width () retorna 4 pixels demais

Eu tenho um div:

<div class="frame" id="layer1"> ... </div>

com o estilo:

.frame {
    position: absolute;
    width: 380px;
    height: 280px;
    overflow: hidden;
    padding: 0;
    margin: 0;
    border: 0;
}
#layer1  { background-color: red; color: #fff; }

Mas estes são meus resultados:

$(".frame").filter(":first").width();//384
$(".frame").filter(":first").outerWidth(); //384
$(".frame").filter(":first").innerWidth(); //384

Eu entendo todos eles sendo o mesmo desde o meu preenchimento e margens são 0, mas onde é que este padrão 4px vem?

2
adicionado editado
Visualizações: 1
Qual é a largura relatada pelo inspetor de elemento FireBug/Chrome?
adicionado o autor Salman A, fonte
Tente isto: dimensionamento de caixa: caixa de borda para se certificar de que é exatamente 380px, mesmo com preenchimento.
adicionado o autor Derek 朕會功夫, fonte
É tudo culpa minha!! Obrigado pela ajuda. Eu tinha outra coisa executando uma adição de 4 à equação!
adicionado o autor JeroenEijkhof, fonte
Recebo 380 no Chrome, Firefox e IE: jsbin.com/isehud Observe também que não há necessidade de fazer o .filter (": first") , o jQuery getters sempre obtém apenas do primeiro elemento do conjunto. (E se você fez precisar fazê-lo, .first() em vez de .filter (": first") é provavelmente uma maneira melhor para ir, ou .eq (0) .)
adicionado o autor T.J. Crowder, fonte
adicionado o autor Fabrício Matté, fonte
Se todos os elementos .frame precisarem ter exatamente 380 pixels e você estiver CSS colidindo com outras regras de estilo, altere a regra para width: 380px! Important;
adicionado o autor nbrooks, fonte
para mim está retornando 380 em jsfiddle e Chrome. Que navegador (s) você está usando e esse fenômeno é exclusivo para esse (s) navegador (es), ou ele aparece em outros navegadores também?
adicionado o autor jakee, fonte

1 Respostas

Foi resolvido, obrigado por suas respostas - ajudou!

Tinha outra coisa realizando uma adição à equação. Sinta-se estúpido, mesmo perguntando isso, mas suas respostas e perguntas me ajudaram a chegar ao fundo dele! Eu deveria ter postado o script inteiro:

var layers = $(".frame");
console.log(layers);

var totalWidth = layers.size() + layers.filter(":first").innerWidth();
console.log(totalWidth);

Como você vê o problema está em layers.size() + , deveria ter sido multiplicação e não adição e eu deveria ter visto isso antes.

0
adicionado
"Por favor, leia a edição em questão para conclusão." Está perfeitamente bem > responda a sua própria pergunta . A maneira correta de fazer isso é deixar a pergunta como uma pergunta e postar a resposta em uma resposta. Ou, nesse caso, como foi apenas um erro, você pode sinalizar sua pergunta pedindo aos moderadores para removê-la totalmente, se desejar.
adicionado o autor T.J. Crowder, fonte