¿Hay alguna API o método de JavaScript o jQuery para obtener las dimensiones de una imagen en la página?
javascript
jquery
image
jquery-plugins
Saneef
fuente
fuente
Respuestas:
Puede obtener la imagen mediante programación y verificar las dimensiones con Javascript ...
Esto puede ser útil si la imagen no forma parte del marcado.
fuente
clientWidth y clientHeight son propiedades DOM que muestran el tamaño actual en el navegador de las dimensiones internas de un elemento DOM (excluyendo margen y borde). Entonces, en el caso de un elemento IMG, esto obtendrá las dimensiones reales de la imagen visible.
fuente
$.fn.width
y$.fn.height
.document.getElementById
es más largo de escribir pero 10 veces más rápido que$('#...')[0]
.Además (además de las respuestas de Rex e Ian) hay:
y
Estos proporcionan la altura y el ancho del archivo de imagen en sí (en lugar de solo el elemento de imagen).
fuente
Si está utilizando jQuery y solicita tamaños de imagen, debe esperar hasta que se carguen o solo obtendrá ceros.
fuente
Creo que una actualización de estas respuestas es útil porque una de las respuestas mejor votadas sugiere usar
clientWidth
y clientHeight, que creo que ahora está obsoleto.He realizado algunos experimentos con HTML5 para ver qué valores se devuelven realmente.
En primer lugar, utilicé un programa llamado Dash para obtener una visión general de la API de imagen. Establece que
height
ywidth
son el alto / ancho renderizado de la imagen y esonaturalHeight
ynaturalWidth
son el alto / ancho intrínseco de la imagen (y son solo HTML5).Utilicé una imagen de una hermosa mariposa, de un archivo con altura 300 y ancho 400. Y este Javascript:
Luego usé este HTML, con CSS en línea para la altura y el ancho.
Resultados:
Luego cambié el HTML a lo siguiente:
es decir, usar atributos de alto y ancho en lugar de estilos en línea
Resultados:
Luego cambié el HTML a lo siguiente:
es decir, usando ambos atributos y CSS, para ver cuál tiene prioridad.
Resultados:
fuente
Usando JQuery haces esto:
fuente
width
yheight
delimg
elemento.Lo que todos los demás han olvidado es que no puede verificar el tamaño de la imagen antes de que se cargue. Cuando el autor verifique todos los métodos publicados, funcionará probablemente solo en localhost. Como jQuery podría usarse aquí, recuerde que el evento 'listo' se dispara antes de cargar las imágenes. $ ('# xxx'). width () y .height () deben activarse en el evento onload o posterior
fuente
Realmente solo puede hacer esto utilizando una devolución de llamada del evento de carga, ya que el tamaño de la imagen no se conoce hasta que realmente haya terminado de cargarse. Algo así como el código a continuación ...
fuente
Con la biblioteca jQuery
Uso
.width()
y.height()
.Más en jQuery ancho y jQuery heigth .
Código de ejemplo
fuente
ok chicos, creo que mejoré el código fuente para poder dejar que la imagen se cargue antes de intentar averiguar sus propiedades, de lo contrario, mostrará '0 * 0', porque la siguiente instrucción se habría llamado antes de que se cargara el archivo el navegador. Requiere jquery ...
fuente
Asumiendo, queremos obtener dimensiones de imagen de
<img id="an-img" src"...">
Dimensiones naturales
el.naturalWidth
yel.naturalHeight
nos dará las dimensiones naturales , las dimensiones del archivo de imagen.Dimensiones de diseño
el.offsetWidth
yel.offsetHeight
nos dará las dimensiones en las que se representa el elemento en el documento.fuente
Antes de usar el tamaño de imagen real, debe cargar la imagen de origen. Si usa el marco JQuery, puede obtener un tamaño de imagen real de manera simple.
fuente
Esta respuesta fue exactamente lo que estaba buscando (en jQuery):
fuente
Puede tener una función simple como la siguiente (
imageDimensions()
) si no teme usar promesas .fuente
Respuesta de JQuery:
fuente
Pensé que esto podría ser útil para algunos que usan Javascript y / o Typecript en 2019.
Descubrí que lo siguiente, como algunos han sugerido, es incorrecto:
Esto es correcto:
Conclusión:
Uso
img
, nothis
, enonload
función.fuente
Recientemente tuve el mismo problema por un error en el control deslizante flexible. La altura de la primera imagen se estableció más pequeña debido al retraso de carga. Intenté el siguiente método para resolver ese problema y funcionó.
Esto le dará la altura con respecto al ancho que configuró en lugar del ancho original o cero.
fuente
También puedes usar:
fuente
Nicky De Maeyer preguntó después de una foto de fondo; Simplemente lo obtengo del css y reemplazo el "url ()":
fuente
s.substr(4,s.length-5)
, al menos es más fácil para los ojos;)Puede aplicar la propiedad del controlador de carga cuando la página se carga en js o jquery de esta manera: -
fuente
Simplemente, puedes probar así.
fuente
fuente
Es importante eliminar la configuración interpretada por el navegador del div principal. Entonces, si desea el ancho y la altura de la imagen real, puede usar
Este es un ejemplo de proyecto TYPO3 de mí donde necesito las propiedades reales de la imagen para escalarla con la relación correcta.
fuente
Este es mi método, espero que sea útil. :)
fuente
esto funciona para la vista previa y carga de múltiples imágenes. si tiene que seleccionar para cada una de las imágenes una por una. A continuación, copie y pegue en todas las funciones de imagen de vista previa y valide !!!
fuente
Antes de adquirir los atributos del elemento, la página del documento debe estar cargada:
fuente
simplemente pase el objeto de archivo img que obtiene el elemento de entrada cuando seleccionamos el archivo correcto, dará la altura y el ancho de la imagen
fuente