Cómo estirar la imagen de fondo para completar un div

Quiero establecer una imagen de fondo para diferentes divs, pero mis problemas son:

  1. El tamaño de la imagen es fijo (60px).
  2. Variando el tamaño de div

¿Cómo puedo estirar la imagen de fondo para llenar todo el fondo del div?

#div2{ background-image:url(http://sofes.miximages.com/css/message-gradient.png); height:180px; width:200px; border: 1px solid red; } 

Verifica el código aquí.

Añadir

 background-size:100%; 

a su CSS debajo de la imagen de fondo.

También puede especificar dimensiones exactas, es decir:

 background-size: 30px 40px; 

Aquí: JSFiddle

Puedes usar:

 background-size: cover; 

O simplemente usa una gran imagen de fondo con:

 background: url('../images/teaser.jpg') no-repeat center #eee; 

CSS3 moderno (recomendado para el futuro y la mejor solución)

 .selector{ background-size: cover; /* streches background WITHOUT deformation so it would fill the background space, it may crop the image if the image's dimensions are in different ratio, than the element dimensions. */ } 

Max. estirar sin recorte ni deformación (puede no rellenar el background-size: contain; ) : background-size: contain;
Fuerza el estiramiento absoluto (puede causar deformación, pero no cosecha) : background-size: 100% 100%;

“Viejo” CSS “siempre funciona”

Imagen de posicionamiento absoluto como primer hijo del padre (en posición relativa) y estirándolo al tamaño principal.

HTML

 
alt text

Equivalente de background-size: cover; de CSS3 background-size: cover; :

Para lograr esto dinámicamente, debería usar la alternativa al método contrario de contener (ver a continuación) y si necesita centrar la imagen recortada, necesitaría un JavaScript para hacerlo de forma dinámica, por ejemplo, usando jQuery:

 $('.selector img').each(function(){ $(this).css({ "left": "50%", "margin-left": "-"+( $(this).width()/2 )+"px", "top": "50%", "margin-top": "-"+( $(this).height()/2 )+"px" }); }); 

Ejemplo práctico:
css crop como ejemplo

Equivalente de background-size: contain; de CSS3 background-size: contain; :

Éste puede ser un poco complicado: la dimensión de su fondo que desborda al padre tendrá CSS configurado en 100% y el otro en automático. Ejemplo práctico: Fondo de estiramiento css como imagen

 .selector img{ position: absolute; top:0; left: 0; width: 100%; height: auto; /* -- OR -- */ /* width: auto; height: 100%; */ } 

Equivalente de background-size: 100% 100%; de CSS3 background-size: 100% 100%; :

 .selector img{ position: absolute; top:0; left: 0; width: 100%; height: 100%; } 

PD: Para hacer los equivalentes de cubrir / contener de la manera “antigua” completamente de forma dinámica (para que no tenga que preocuparse por los desbordamientos / proporciones) tendría que usar javascript para detectar las proporciones y establecer las dimensiones como se describen. ..

Para esto puede usar la propiedad de background-size CSS3. Escribe así:

 #div2{ background-image:url(http://s7.static.hootsuite.com/3-0-48/images/themes/classic/streams/message-gradient.png); -moz-background-size:100% 100%; -webkit-background-size:100% 100%; background-size:100% 100%; height:180px; width:200px; border: 1px solid red; } 

Mira esto: http://jsfiddle.net/qdzaw/1/

Puedes añadir:

 #div2{ background-image:url(http://s7.static.hootsuite.com/3-0-48/images/themes/classic/streams/message-gradient.png); background-size: 100% 100%; height:180px; width:200px; border: 1px solid red; } 

Puedes leer más sobre esto aquí: css3 background-size

mediante el uso de la propiedad CSS:

 background-size: cover; 
 body{ margin:0; background:url('image.png') no-repeat 50% 50% fixed; background-size: cover; } 

Para mantener la relación de aspecto, use background-size: 100% auto;

 div { background-image: url('image.jpg'); background-size: 100% auto; width: 150px; height: 300px; } 

Pruebe algo como esto:

 div { background-image: url(../img/picture1.jpg); height: 30em; background-repeat: no-repeat; width: 100%; background-position: center; } 

Uso: fondo tamaño: 100% 100%; Para hacer que la imagen de fondo se ajuste al tamaño de div.