Escribí un ejemplo para ver cuál es la diferencia, pero me muestran los mismos resultados para ancho y alto.
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var div = $('.test');
var width = div.width(); // 200 px
var innerWidth = div.innerWidth(); // 200px
var outerWidth = div.outerWidth(); // 200px
var height = div.height(); // 150 px
var innerHeight = div.innerHeight(); // 150 px
var outerHeight = div.outerHeight(); // 150 px
});
</script>
<style type="text/css">
.test
{
width: 200px;
height: 150px;
background: black;
}
</style>
</head>
<body>
<div class="test"></div>
</body>
</html>
En este ejemplo, puede ver que generan los mismos resultados. Si alguien sabe cuál es la diferencia, muéstrame la respuesta adecuada.
Gracias.
<div>
, y vea si eso da resultados diferentes;)Respuestas:
¿Viste estos ejemplos? Se parece a tu pregunta.
Trabajando con anchos y alturas
jQuery - Dimensiones
jQuery: altura, ancho, interior y exterior
fuente
Como se menciona en un comentario, la documentación le dice exactamente cuáles son las diferencias. Pero en resumen:
fuente
ancho = obtener el ancho,
innerWidth = obtener ancho + relleno,
externalWidth = obtener ancho + relleno + borde y opcionalmente el margen
Si desea probar, agregue un poco de relleno, márgenes, bordes a sus clases .test e intente nuevamente.
También lea en los documentos de jQuery ... Todo lo que necesita está prácticamente allí
fuente
Parece necesario contar sobre las asignaciones de valores y comparar sobre el significado del parámetro "ancho" en jq: (suponga que new_value se define en la unidad px)
Las tres instrucciones no dan el mismo efecto: porque la primera instrucción jquery define el ancho interno del elemento y no el "ancho". Esto es complicado
Para obtener el mismo efecto, debe calcular los rellenos antes (supongamos que var es pads), la instrucción correcta para que jquery obtenga el mismo resultado que js puro (o 'ancho' del parámetro css) es:
También podemos señalar que para:
w1 es el ancho interno, mientras que w2 es la diferencia de ancho (significado del atributo css) que no está documentada en la documentación de la API JQ.
Atentamente
Triplemente
Nota: en mi opinión, esto puede considerarse como un error JQ 1.12.4, la forma de salir debería ser introducir definitivamente una lista de parámetros aceptados para .css ('parámetro', valor) porque hay varios significados detrás de los 'parámetros' aceptado, que tiene interés pero debe ser siempre claro. Para este caso: "ancho interno" no significará lo mismo que "ancho". Podemos encontrar una pista de este problema en la documentación de .width (valor) con la frase: "Tenga en cuenta que en los navegadores modernos, la propiedad de ancho CSS no incluye relleno"
fuente
.css('width')
es lo mismo que.outerWidth()
(es decir, incluye el borde y el relleno) cuandobox-sizing: border-box;
.De acuerdo con todas las respuestas dadas anteriormente. Solo agregar en términos de perspectivas de ventana o navegador
innerWidth/ innerheight
incluye solo el área de contenido de la ventana, nada más, peroouterWidth/ outerHeight
incluye el área de contenido de Windows y además de esto también incluye cosas como barras de herramientas, barras de desplazamiento, etc. y estos valores siempre serán iguales o mayores que los valores innerWidth / innerHeight.Espero que ayude más ...
fuente
Lo que estoy viendo ahora es que
innerWidth
incluye todo el contenido.Esto es, si la ventana es
900px
y el contenido es1200px
(y hay un desplazamiento)innerWidth
me da1200px
outerWidth
me da900px
Totalmente inesperado en mis ojos
* En mi caso, el contenido está contenido en un
<iframe>
fuente