2011-01-24 19 views
44

Tengo tres problemas:Antecedentes: cómo llenar div todo si la imagen es pequeño y viceversa

  1. Cuando traté de usar una imagen de fondo en un div tamaño más pequeño, el div muestra sólo una parte de imagen. ¿Cómo puedo mostrar la parte completa o una parte específica de la imagen?

  2. Tengo una imagen más pequeña y quiero usar en una div más grande. Pero no quiero usar la función de repetición.

  3. ¿Hay algún modo en CSS para manipular la opacidad de una imagen?

+0

@ David-Caín se debe actualizar la más adecuada responda como se señala en los comentarios a continuación – Ouadie

+0

@Ouadie - No soy el póster original - Simplemente edité la pregunta para mayor claridad. –

+0

@ aakash-sahai ¿podría actualizar la respuesta aceptada a la más adecuada? – Ouadie

Respuesta

91

Cambie el tamaño de la imagen para que se ajuste al tamaño div.
Con CSS3 se puede hacer esto:

/* with CSS 3 */ 
#yourdiv { 
    background: url('bgimage.jpg') no-repeat; 
    background-size: 100%; 
} 

How Do you Stretch a Background Image in a Web Page:

Sobre la opacidad

#yourdiv { 
    opacity: 0.4; 
    filter: alpha(opacity=40); /* For IE8 and earlier */ 
} 

O mirar a CSS Image Opacity/Transparency

+0

pero esto creará una carga sobre el servidor para cargar múltiples imágenes (lo cual es similar, como v sabe) ... así que en vez de usar múltiples imágenes, usar una imagen y strechg n collasping es una mejor manera ... pero no sé cómo hacerlo ... –

+0

gracias por el problema de opacidad ... –

+0

Los puntos 1 y 2 no son soluciones a este problema. El primer punto es para mantener la relación de aspecto en una imagen; el segundo punto parece no funcionar en absoluto. Con CSS3, la propiedad de tamaño de fondo solucionará este problema, hasta entonces tienes que quedarte con algún truco, supongo. – Sondre

0
  1. Estoy de acuerdo con el ejemplo de Yossi, estirar la imagen para adaptarse a la div pero yo n de una manera ligeramente diferente (sin imagen de fondo ya que esto es un poco inflexible en css 2.1). Mostrar la imagen completa:

    <div id="yourdiv"> 
        <img id="theimage" src="image.jpg" alt="" /> 
    </div> 
    
    #yourdiv img { 
        width:100%; 
        /*height will be automatic to remain aspect ratio*/ 
    } 
    
  2. Mostrar parte de la imagen con background-position:

    #yourdiv 
    { 
        background-image: url(image.jpg); 
        background-repeat: no-repeat; 
        background-position: 10px 25px; 
    } 
    
  3. Igual que la primera parte de (1) la imagen se escala a la div tan grande o más pequeña ambos funcionarán

  4. Igual que yossi's.

+0

err, el formateo de mi publicación no funcionó? Utilicé el icono de la barra de herramientas ... :( – Bazzz

+0

intenté antes y también ... si el tamaño de la imagen es 100px 100px y div tiene 400px tamaño 400px, entonces está fijo en la esquina superior. No es strechg ... tamaño del fondo no también funciona ... usando ie8, firefox, chrome, safari, los últimos navegadores –

+0

Aquí hay un ejemplo: http://jsfiddle.net/9mawE/1/ El div tiene 150 px de ancho. El logo de Google tiene más de 150 px de ancho pero está reducido para caber en el div. El ícono de Google Earth tiene menos de 150px de ancho y se escala para ajustarse al divisor de 150px de ancho, el tamaño de fondo no funciona en IE 8 porque es CSS 3 que aún no está soportado. – Bazzz

48

Para ampliar automáticamente la imagen y cubrir toda la sección div sin dejar ninguna parte de ella sin llenar , use:

background-size: cover; 
+2

esta página y el mayor beneficio en mi caso. Gracias –

+1

no funciona para mí, pero mi div está dentro de un dentro de un dentro de un

. No sé si es por eso que – user1709076

+0

podría crear un jsfiddle para su ex amplio? para que podamos ayudarte – Ouadie

1

Esto funcionará como un encanto.

background-image:url("http://assets.toptal.io/uploads/blog/category/logo/4/php.png"); 
background-repeat: no-repeat; 
background-size: contain; 
+0

Gracias. Estaba buscando específicamente eso. Lo hizo hace años y se olvidó. –

+0

contiene no está cubriendo todo div. Entonces parece que cubrir es lo que está buscando. – user3629945

6

Try a continuación segmento de código, he probado a mí mismo antes:

#your-div { 
    background: url("your-image-link") no-repeat; 
    background-size: cover; 
    background-clip: border-box; 
} 
+0

¡Bienvenido a Stack Overflow! Si bien esta respuesta es probablemente correcta y útil, es preferible incluir alguna explicación junto con ella para explicar cómo ayuda a resolver el problema. Esto se vuelve especialmente útil en el futuro, si hay un cambio (posiblemente no relacionado) que hace que deje de funcionar y los usuarios deben comprender cómo funcionó. –

0

Esto funcionó perfectamente para mí

background-repeat: no-repeat; 
background-size: 100% 100%; 
Cuestiones relacionadas