¿Cómo se redimensiona automáticamente una imagen grande para que quepa en un contenedor div de menor ancho manteniendo su relación ancho: alto?
Ejemplo: stackoverflow.com: cuando se inserta una imagen en el panel del editor y la imagen es demasiado grande para caber en la página, la imagen cambia de tamaño automáticamente.
html
css
image
autoresize
001
fuente
fuente
Respuestas:
No aplique un ancho o alto explícito a la etiqueta de la imagen. En cambio, dale:
Además,
height: auto;
si desea especificar solo un ancho.Ejemplo: http://jsfiddle.net/xwrvxser/1/
fuente
<a>
etiqueta adjunta , la imagen no cambió de tamaño. La aplicación de las reglas a la etiqueta A resolvió este problema.ajuste de objeto
Resulta que hay otra forma de hacer esto.
Hará el trabajo. Es CSS 3 cosas.
Violín: http://jsfiddle.net/mbHB4/7364/
fuente
object-fit: cover
Actualmente no hay forma de hacer esto correctamente de una manera determinista, con imágenes de tamaño fijo como archivos JPEG o PNG.
Para cambiar el tamaño de una imagen proporcionalmente, usted tiene que fijar bien la altura o anchura a "100%", pero no ambos. Si establece ambos en "100%", su imagen se estirará.
La elección de la altura o el ancho depende de la imagen y las dimensiones del contenedor:
height="100%"
en la imagen.width="100%"
en la imagen.Si su imagen es un SVG, que es un formato de imagen vectorial de tamaño variable, puede hacer que la expansión se ajuste automáticamente al contenedor.
Solo tiene que asegurarse de que el archivo SVG no tenga ninguna de estas propiedades establecidas en la
<svg>
etiqueta:La mayoría de los programas de dibujo vectorial establecerán estas propiedades al exportar un archivo SVG, por lo que tendrá que editar manualmente su archivo cada vez que exporte, o escribir un script para hacerlo.
fuente
background-size: contain
.Aquí hay una solución que alineará vertical y horizontalmente su img dentro de un div sin ningún estiramiento, incluso si la imagen suministrada es demasiado pequeña o demasiado grande para caber en el div.
El contenido HTML:
El contenido CSS:
La parte de jQuery:
fuente
¡Hazlo simple!
Dale al contenedor un fijo
height
y luego, por laimg
etiqueta dentro de él, establecewidth
ymax-height
.La diferencia es que establece el
width
100%, no elmax-width
.fuente
Un hermoso truco.
Tiene dos formas de hacer que la imagen responda.
Ejecútalo aquí
Pero uno debe usar la
img
etiqueta para poner imágenes, ya que es mejor quebackground-image
en términos de SEO, ya que puede escribir palabras clave enalt
laimg
etiqueta. Así que aquí puede hacer que la imagen responda.Ejecútalo aquí
fuente
Puede establecer la imagen como fondo en un div y luego usar la propiedad de tamaño de fondo CSS :
Será "Escala la imagen de fondo a ser tan grande como sea posible para que el área de fondo se cubre totalmente la imagen de fondo de algunas partes de la imagen de fondo pueden no estar a la vista dentro de la zona de fondo de posicionamiento." - W3Schools
fuente
alt
valores y cosas similares (aunque también puede agregar una imagen ficticia que es invisible para las tecnologías que no son asistentes), o puede que necesite hacer clic en ella.background-size: contain
y creo que personalmente seguiría la ruta de la imagen ficticia solo porque no hay una manera fácil de hacer lo que se describe aquí sin JavaScriptMira mi solución: http://codepen.io/petethepig/pen/dvFsA
Está escrito en CSS puro, sin ningún código JavaScript. Puede manejar imágenes de cualquier tamaño y orientación.
Dado tal HTML:
el código CSS sería:
fuente
Acabo de publicar un complemento jQuery que hace exactamente lo que necesita con muchas opciones:
https://github.com/GestiXi/image-scale
Uso:
HTML
JavaScript
fuente
Esta solución no estira la imagen y llena todo el contenedor, pero corta parte de la imagen.
HTML:
CSS:
fuente
Veo que muchas personas han sugerido el ajuste de objetos, que es una buena opción. Pero si también quiere que funcione en navegadores antiguos , hay otra forma de hacerlo fácilmente.
Es bastante simple. El enfoque que tomé fue colocar la imagen dentro del contenedor con absoluta y luego colocarla justo en el centro usando la combinación:
Una vez que está en el centro, le doy a la imagen,
Esto hace que la imagen tenga el efecto de Object-fit: cover.
Aquí hay una demostración de la lógica anterior.
https://jsfiddle.net/furqan_694/s3xLe1gp/
Esta lógica funciona en todos los navegadores.
fuente
Lo siguiente funciona perfectamente para mí:
fuente
Tengo una solución mucho mejor sin necesidad de JavaScript. Es totalmente sensible y lo uso mucho. A menudo necesita ajustar una imagen de cualquier relación de aspecto a un elemento contenedor con una relación de aspecto especificada. Y tener todo esto completamente receptivo es imprescindible.
Puede establecer max-width y max height independientemente; la imagen respetará la más pequeña (según los valores y la relación de aspecto de la imagen). También puede configurar la imagen para que se alinee como desee (por ejemplo, para una imagen del producto sobre un fondo blanco infinito, puede colocarla en el centro de la parte inferior fácilmente).
fuente
Dé el alto y el ancho que necesita para su imagen al div que contiene la etiqueta <img>. No olvide dar la altura / anchura en la etiqueta de estilo adecuada.
En la etiqueta <img>, ingrese
max-height
ymax-width
como 100%.Puede agregar los detalles en las clases apropiadas después de hacerlo correctamente.
fuente
El siguiente código está adaptado de respuestas anteriores y lo probé usando una imagen llamada
storm.jpg
.Este es el código HTML completo para una página simple que muestra la imagen. Esto funciona perfecto y lo probé con www.resizemybrowser.com. Coloque el código CSS en la parte superior de su código HTML, debajo de la sección de la cabeza. Ponga el código de la imagen donde desee la imagen.
fuente
fuente
Tienes que decirle al navegador la altura de dónde lo estás colocando:
fuente
Editar: el posicionamiento de imágenes basado en tablas anterior tenía problemas en Internet Explorer 11 (
max-height
no funciona endisplay:table
elementos). Lo he reemplazado con un posicionamiento basado en línea que no solo funciona bien tanto en Internet Explorer 7 como en Internet Explorer 11, sino que también requiere menos código.Aquí está mi opinión sobre el tema. Solo funcionará si el contenedor tiene un tamaño específico (
max-width
ymax-height
no parece llevarse bien con los contenedores que no tienen un tamaño concreto), pero escribí el contenido CSS de una manera que permite su reutilización (agregarpicture-frame
clase ypx125
clase de tamaño a su contenedor existente).En CSS:
Y en HTML:
MANIFESTACIÓN
Mostrar fragmento de código
Editar: Posible mejora adicional usando JavaScript (imágenes de aumento de escala):
fuente
line-height
. Si el texto alternativo tiene más de una línea, que comenzará a buscar muy mal ...Solucioné este problema usando el siguiente código:
fuente
Como se respondió aquí , también puede usar
vh
unidades en lugar demax-height: 100%
si no funciona en su navegador (como Chrome):fuente
vh
? y que no funciona en Chromemax-height: xx%
(unidad de porcentaje) no funciona en Chrome con algunos elementos comoimg
, pero lavh
unidad sí. Sin embargo, los porcentajes trabajan conheight
,width
,max-width
, etc.Centré y escalé proporcionalmente una imagen dentro de un hipervínculo tanto horizontal como verticalmente de esta manera:
Fue probado en Internet Explorer, Firefox y Safari.
Más información sobre el centrado está aquí .
fuente
La respuesta aceptada de Thorn007 no funciona cuando la imagen es demasiado pequeña .
Para resolver esto, agregué un factor de escala . De esta manera, aumenta la imagen y llena el contenedor div.
Ejemplo:
Notas:
-webkit-transform:scale(4); -webkit-transform-origin:left top;
el estilo.fuente
Si está utilizando Bootstrap, solo necesita agregar la
img-responsive
clase a laimg
etiqueta:Imágenes de Bootstrap
fuente
A continuación, se encuentra una solución simple (¡solución de 4 pasos!) Que parece funcionar para mí. El ejemplo usa el ancho para determinar el tamaño general, pero también puede voltearlo para usar la altura.
%
para tamaño relativo o autoescalado (según el contenedor o la pantalla de la imagen)px
(u otro) para una dimensión estática o establecidaPor ejemplo,
fuente
Todas las respuestas proporcionadas, incluida la aceptada, funcionan solo bajo el supuesto de que el
div
contenedor es de un tamaño fijo. Así es como se hace, sea cual sea el tamaño deldiv
contenedor, y esto es muy útil si desarrolla una página receptiva:Escriba estas declaraciones dentro de su
DIV
selector:Luego ponga estas declaraciones dentro de su
IMG
selector:MUY IMPORTANTE:
El valor de
maxHeight
debe ser el mismo para los selectoresDIV
yIMG
.fuente
Una solución simple es usar flexbox. Defina el CSS del contenedor para:
Ajuste el ancho de la imagen contenida al 100% y debería obtener una buena imagen centrada en el contenedor con las dimensiones preservadas.
fuente
La solución es fácil con un poco de matemática ...
Simplemente coloque la imagen en un div y luego en el archivo HTML donde especifique la imagen. Establezca los valores de ancho y alto en porcentajes utilizando los valores de píxeles de la imagen para calcular la relación exacta de ancho a alto.
Por ejemplo, supongamos que tiene una imagen que tiene un ancho de 200 píxeles y una altura de 160 píxeles. Puede decir con seguridad que el valor del ancho será del 100%, porque es el valor más grande. Para calcular el valor de la altura, simplemente divida la altura por el ancho, lo que da el valor porcentual del 80%. En el código se verá más o menos así ...
fuente
La forma más sencilla de hacer esto es mediante el uso de
object-fit
:Si está utilizando Bootstrap, simplemente agregue la
img-responsive
clase y cambie afuente
Comprobar mi respuesta, hacer una imagen sensible - forma más sencilla -
fuente
O simplemente puede usar:
Ahora la imagen ocupará todo el espacio del div.
fuente