background-size nella proprietà dello sfondo abbreviato (CSS3)


112

Sto cercando di mescolare background-imagee background-sizeproprietà in una backgroundproprietà shorthanded . In base alla documentazione W3C, background-size dovrebbe venire dopo la background-positionproprietà separata da una barra ( /).

Esempio W3C:

p { background: url("chess.png") 40% / 10em gray
       round fixed border-box; } 

è equivalente a:

p {
    background-color: gray;
    background-position: 40% 50%;
    background-size: 10em 10em;
    background-repeat: round round;
    background-clip: border-box;
    background-origin: border-box;
    background-attachment: fixed;
    background-image: url(chess.png) }

MDN dice la stessa cosa. Ho anche trovato questo e questo articolo sulla proprietà di sfondo CSS3 abbreviata che spiega questo.

Ma questo non funziona! Inoltre non è chiaro come creare una backgroundproprietà abbreviata quando background-sizee background-positionavere due valori diversi per background-position-xe background-position-yo per la stessa cosa background-size. Non è chiaro come /si svolge lo slash ( )? Questo esempio non funziona nel mio Chrome 15.

L'esempio che ho provato a fare una scorciatoia è questo codice CSS:

div {  
    background: url(http://www.placedog.com/125/125) 
        0 0 /  150px 100px 
        repeat no-repeat 
        fixed border-box padding-box blue;      
    height: 300px;
    width:360px;    
    border: 10px dashed magenta;  
}

Un esempio più chiaro

Questo è il lavoro ( JSFiddle )

 body{
        background-image:url(http://www.google.com/intl/en_com/images/srpr/logo3w.png);
        background-position:200px 100px;
        background-size:600px 400px;
        background-repeat:no-repeat;
    }

Questo non funziona ( jsfiddle )

body{
    background:url(http://www.google.com/intl/en_com/images/srpr/logo3w.png) 200px 100px/600px 400px no-repeat;
}

Anche questo non funziona ( jsfiddle )

body{
    background:url(http://www.google.com/intl/en_com/images/srpr/logo3w.png) 200px/400px 100px/600px no-repeat;
}

3
Fai attenzione a Safari che non supporta la stenografia a dimensione di sfondo! Safari non lo supporta! Metti le dimensioni dello sfondo separate dallo sfondo per impedire a Safari di soffocarlo!
Jeff

Risposte:


63
  1. Il tuo jsfiddle usa background-imageinvece dibackground
  2. Sembra essere un caso di "non ancora supportato da questo browser".

Funziona in Opera: http://jsfiddle.net/ZNsbU/5/
Ma non funziona in FF5 né in IE8. (sì per i browser obsoleti: D)

Codice :

body {
  background:url(http://www.google.com/intl/en_com/images/srpr/logo3w.png) 400px 200px / 600px 400px no-repeat;
}

Potresti farlo in questo modo:

body {
    background:url(http://www.google.com/intl/en_com/images/srpr/logo3w.png) 400px 400px no-repeat;
    background-size:20px 20px
}

Che funziona in FF5 e Opera ma non in IE8.


Pensi che non sia un problema di supporto del browser?
Kraz

1
Mi chiedevo solo qual è la specifica giusta per CSS3 background?
Mohsen

È ciò che il W3C ha definito, esattamente come hai nella tua domanda o nel mio esempio di codice. Semplicemente non è ancora implementato in tutti i browser.
Kraz

Non funziona in Chrome Canary. Non posso credere che non sia ancora implementato.
Mohsen

Selezionato come risposta per questa parte: sembra essere un caso "non ancora supportato da questo browser".
Mohsen

14

Puoi fare come

 body{
        background:url('equote.png'),url('equote.png');
        background-size:400px 100px,50px 50px;
    }

Questo è ciò che mi ha aiutato di più; Non sapevo che potessi dividere le dichiarazioni delle dimensioni dello sfondo con una virgola, una per ogni URL sopra di essa.
Nathaniel Flick il

9

Solo una nota per riferimento: stavo cercando di fare stenografia in questo modo:

background: url('../images/sprite.png') -312px -234px / 355px auto no-repeat;

ma i browser iPhone Safari non mostravano l'immagine correttamente con un elemento di posizione fissa. Non ho controllato con un non fisso, perché sono pigro. Ho dovuto cambiare il css in quello che c'è sotto, facendo attenzione a mettere background-size dopo la proprietà background. Se le esegui al contrario, la dimensione dello sfondo ripristina la dimensione originale dell'immagine. Quindi in genere eviterei di usare la scorciatoia per impostare la dimensione dello sfondo.

background: url('../images/sprite.png') -312px -234px no-repeat;
background-size: 355px auto;

Lo stesso qui su Android 4.1.2 Stock Browser
depoulo

1

prova in questo modo

body {
   background: #fff url("!--MIZO-PRO--!") no-repeat center 15px top 15px/100px;
     }


/* 100px is the background size */

-5

Dovrai utilizzare i prefissi del fornitore per supportare diversi browser e quindi non puoi usarlo in forma abbreviata.

body { 
        background: url(images/bg.jpg) no-repeat center center fixed; 
        -webkit-background-size: cover;
        -moz-background-size: cover;
        -o-background-size: cover;
        background-size: cover;
}

1
Questo non è corretto. Non devo usare il prefisso del fornitore se non voglio supportare i vecchi browser
Mohsen

Questi prefissi del fornitore funzionano ancora e alcuni browser potrebbero averlo abbandonato solo di recente.
Moin Zaman
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.