il suo dichiarato nel jQuery API:jQuery: altezza() per un bordo-box
noti che .height() restituirà sempre l'altezza del contenuto, a prescindere del valore del CSS box-sizing proprietà. A partire da jQuery 1.8, questo potrebbe richiedere il recupero dell'altezza CSS più la proprietà di ridimensionamento della casella e quindi sottrarre qualsiasi bordo e spaziatura potenziale su ciascun elemento quando l'elemento ha il ridimensionamento della casella: border-box. Per evitare questa penalità, usa .css ("altezza") piuttosto che .height().
Ho provato il seguente esempio
<div id='wrapper' class='boxA'>
<div class='boxB'>
Test
</div>
</div>
con il CSS
.boxA{
padding: 20px;
background-color: yellow;
box-sizing: border-box;
margin: 50px;
}
.boxB{
height: 50px;
background-color: red;
}
Secondo l'API jQuery ero sicuro che
$('#wrapper').height($('#wrapper').height());
sarebbe impostare l'altezza boxa a 50px (dal momento che l'altezza del contenuto è 50px) ma io fonda d che l'altezza era impostata su 90 px. Tuttavia se uso
$('#wrapper').css('height', $('#wrapper').height()+"px");
l'altezza del boxa ottiene 50px e quindi si restringe. Perché il primo metodo non produce anche un'altezza di 50px?
Inoltre, il comando
$('#wrapper').height($('#wrapper').css('height'));
sarà impostare l'altezza di boxa per 130px ma $('#wrapper').css('height')
rendimenti 90. Che cosa è successo qui?
È possibile trovare questi esempi in questo jFiddle.
_ "... A partire da jQuery 1.8, potrebbe essere necessario recuperare l'altezza CSS più la proprietà di ridimensionamento della casella e quindi ** sottrarre ** qualsiasi potenziale' bordo' e 'riempimento 'su ciascun elemento quando l'elemento ha casella- dimensionamento: border-box. "_ – Vucko
@Vucko Ho aggiunto il commento completo ora. Ancora non mi spiega il comportamento strano descritto nel mio post. – Adam