2011-01-24 10 views
44

Ho tre problemi:di sfondo: come riempire tutta div se un'immagine è piccolo e viceversa

  1. Quando ho cercato di utilizzare un'immagine di sfondo in un div dimensione più piccola, il div mostra solo una parte Immagine. Come posso mostrare la parte intera o specifica dell'immagine?

  2. Ho un'immagine più piccola e desidero utilizzarla in un div più grande. Ma non voglio usare la funzione di ripetizione.

  3. C'è un modo in CSS per manipolare l'opacità di un'immagine?

+0

@ david-Cain è necessario aggiornare la più appropriata risposta come sottolineato dai commenti sotto – Ouadie

+0

@Ouadie - Non sono il poster originale - ho semplicemente modificato la domanda per chiarezza. –

+0

@ aakash-sahai potresti aggiornare la risposta accettata a quella più appropriata? – Ouadie

risposta

91

Ridimensionare l'immagine per adattarla alla dimensione div.
Con CSS3 si può fare questo:

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

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

Chi opacità

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

O guardare CSS Image Opacity/Transparency

+0

ma questo creerà un onere sul server per caricare più immagini (che è simile, come lo so) .. quindi invece usare più immagini, usare un'immagine e strechg n collare è un modo migliore..ma non so come farlo .. –

+0

grazie per il problema di opacità ... –

+0

I punti 1 e 2 non sono soluzioni a questo problema. Il primo punto è per mantenere l'aspect ratio su un'immagine, il secondo punto non sembra funzionare affatto. Con CSS3 la proprietà background-size risolverà questo problema, fino a quel momento non dovresti attaccare con qualche hack immagino .. – Sondre

0
  1. Sono d'accordo con l'esempio di Yossi, allungare il immagine per adattarsi al div ma io n un modo leggermente diverso (senza immagine di sfondo in quanto è poco flessibile in css 2.1). Mostra l'immagine:

    <div id="yourdiv"> 
        <img id="theimage" src="image.jpg" alt="" /> 
    </div> 
    
    #yourdiv img { 
        width:100%; 
        /*height will be automatic to remain aspect ratio*/ 
    } 
    
  2. Mostra parte dell'immagine usando background-position:

    #yourdiv 
    { 
        background-image: url(image.jpg); 
        background-repeat: no-repeat; 
        background-position: 10px 25px; 
    } 
    
  3. Idem come la prima parte di (1) l'immagine scalerà al div così grande o più piccolo funzioneranno entrambi

  4. Come quelli di yossi.

+0

err, la formattazione del mio post non ha funzionato? Ho usato l'icona della barra degli strumenti ... :( – Bazzz

+0

l'ho provato prima e nw anche ... se la dimensione dell'immagine è 100px 100px e div ha una dimensione 400px 400px, allora è fissata nell'angolo in alto. Non è strechg..background-size lavorando troppo..usando ie8, firefox, chrome, safari ultimi browser –

+0

Ecco un esempio: http://jsfiddle.net/9mawE/1/ Il div è largo 150 px. Il logo di Google è più largo di 150px ma è ridimensionato per adattarsi al div. L'icona di Google Earth è larga meno di 150px e viene ridimensionata per adattarsi al div 150px, Le dimensioni dello sfondo non funzionano in IE 8 perché è il CSS 3 che non è ancora supportato – Bazzz

48

Per ingrandire automaticamente l'immagine e coprire l'intera sezione div senza lasciare alcuna parte di esso non riempito , utilizzare:

background-size: cover; 
+2

Grazie –

+1

non funziona per me ma il mio div è all'interno di un all'interno di un all'interno di un

. non so se questo è il motivo per cui – user1709076

+0

potresti creare un jsfiddle per il tuo ex ampio? quindi possiamo aiutarti – Ouadie

1

Questo funzionerà come un fascino.

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

Grazie. Stavo cercando proprio questo. Ci sono anni fa e ho dimenticato. –

+0

contengono non copre l'intero div. Quindi la copertura sembra essere ciò che l'OP sta cercando. – user3629945

6

Prova sotto segmento di codice, ho provato io stesso prima:

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

Benvenuti in Stack Overflow! Anche se questa risposta è probabilmente corretta e utile, è preferibile includere alcune spiegazioni e spiegare come aiuta a risolvere il problema. Ciò diventa particolarmente utile in futuro, se c'è un cambiamento (possibilmente non correlato) che lo fa smettere di funzionare e gli utenti devono capire come funzionava una volta. –

0

Questo ha funzionato perfettamente per me

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