Rivisitare la proprietà di sfondo CSS

Scopri CSS: la guida completa

Abbiamo creato una guida completa per aiutarti a imparare i CSS, se hai appena iniziato con le nozioni di base o se vuoi esplorare CSS più avanzati.

In questo tutorial esamineremo una delle vecchie e più familiari proprietà CSS: sfondo. sfondo è una delle numerose proprietà CSS le cui funzionalità sono spesso trascurate. In effetti, ha visto un aggiornamento con CSS3, ricevendo nuove funzionalità oltre alla semplice aggiunta di un'immagine di sfondo o di un colore. Diamo un'occhiata ad alcuni di loro!

1. Offset posizione di sfondo

Posizionare un'immagine di sfondo è semplice e qualcosa che probabilmente conosci già. Se vogliamo posizionare lo sfondo in basso a destra dell'elemento, applichiamo in basso a destra a background-position. Per esempio:

#workspace width: 100%; larghezza massima: 668 px; altezza: 400 px; background-color: # 525d62; background-image: url (images / macbook.png); background-repeat: no-repeat; posizione di fondo: in basso a destra; 

O con la stenografia, sfondo, dopo la definizione dell'URL:

#workspace width: 100%; larghezza massima: 668 px; altezza: 400 px; background: # 525d62 url (images / macbook.png) no-repeat in basso a destra; 

Dall'avvento del CSS3 siamo stati in grado di specificare la posizione compensare; le distanze precise per le posizioni impostate. Prendendo il nostro esempio di in basso a destra, includiamo bottom 20px right 30px per posizionare il nostro background a 20px dal basso e 30px da sinistra.

#workspace width: 100%; larghezza massima: 668 px; altezza: 400 px; background-color: # 525d62; background-image: url (images / macbook.png); background-repeat: no-repeat; posizione di sfondo: destra 30px in basso 20px; 

Le posizioni (parte inferiore, superiore, destra, sinistra) può essere definito in qualsiasi ordine, ma la lunghezza di offset deve essere definita dopo ogni posizione di sfondo.

Il merito va a Metin Kazan per le illustrazioni.

2. Immagini di sfondo multiple

Il sfondo proprietà ci consente anche di aggiungere più immagini di sfondo. Pertanto, estendiamo il nostro esempio precedente con più materiale e gadget.

Aggiungiamo queste immagini a un singolo sfondo o immagine di sfondo dichiarazione separando ciascuno di essi con una virgola. Noi usiamo il background-position proprietà, che accetta anche più valori, per controllare ciascuna di quelle immagini di sfondo.

#workspace height: 400px; background-color: # 525d62; background-image: url (images / macbook.png), url (images / mouse.png), url (images / hdd.png), url (images / phone.png), url (images / ipad.png), url (images / coffee.png), url (images / camera.png); background-repeat: no-repeat; posizione di sfondo: 50% 50%, / * macbook.png * / 75% 295px, / * mouse.png * / 75% 230px, / * hdd.png * / 96% 240px, / * phone.png * / 20 % 250px, / * ipad.png * / 22% 190px, / * coffee.png * / 7% 280px; / * camera.png * /

Possiamo usare unità fisse (come i pixel), unità flessibili (come le percentuali) o una combinazione delle due.

Ogni coppia di valori rappresenta le coordinate dal in alto a sinistra dell'elemento contenitore, al in alto a sinistra dell'immagine. Ad esempio, la parte superiore sinistra dell'immagine della videocamera è 280 px dalla parte superiore del contenitore, quindi il 7% di a disposizione larghezza di fronte a sinistra.

Nota: Il a disposizione larghezza è la larghezza totale dell'elemento contenitore, meno la larghezza dell'immagine di sfondo. Pertanto un'immagine di sfondo posizionata al 50% lungo l'asse x appare esattamente centrata!

Movimento

Inoltre, dal momento che il background-position è una proprietà animabile, possiamo creare uno sfondo più vivace e avvincente:

#workspace width: 600px; altezza: 400 px; background-color: # 525d62; background-repeat: no-repeat; background-image: url (images / macbook.png), url (images / mouse.png), url (images / hdd.png), url (images / phone.png), url (images / ipad.png), url (images / coffee.png), url (images / camera.png); posizione di sfondo: 50% 50%, 430px 295px, 425px 230px, 480px 240px, 105px 250px, 120px 190px, 40px 280px; animazione: 3s facilità 0s in avanti in avanti;  @keyframes inView 0% background-position-y: 600%, 451px, -448px, 240px, 496px, -44px, 280px; background-position-x: 50%, 75%, 75%, 200%, 20%, 22%, -100%;  20% background-position-y: 50%, 451px, -448px, 240px, 496px, -44px, 280px; background-position-x: 50%, 75%, 75%, 200%, 20%, 22%, -100%;  30% background-position-y: 50%, 295px, -448px, 240px, 496px, -44px, 280px; background-position-x: 50%, 75%, 75%, 200%, 20%, 22%, -100%;  40% background-position-y: 50%, 295px, 230px, 240px, 250px, -44px, 280px; background-position-x: 50%, 75%, 75%, 200%, 0%, 22%, -100%;  50% background-position-y: 50%, 295px, 230px, 240px, 250px, 190px, 280px; background-position-x: 50%, 75%, 75%, 96%, 0%, 22%, -100%;  60% background-position-y: 50%, 295px, 230px, 240px, 250px, 190px, 280px; background-position-x: 50%, 75%, 75%, 96%, 0%, 22%, 7%;  100% background-position-y: 50%, 295px, 230px, 240px, 250px, 190px, 280px; 

Qui abbiamo impostato un numero di fotogrammi chiave lungo una sequenza temporale. Ad ogni keyframe abbiamo modificato il background-position-x e background-position-y di ogni immagine di sfondo. L'animazione è certamente rudimentale, quindi per favore batti il ​​CodePen e miglioralo!

Nota: Clic Rerun in basso a destra della penna per vedere l'animazione

Ulteriori informazioni su Animazione CSS

Un paio di punti degni di nota

Gli sfondi che abbiamo usato sono ordinati sequenzialmente; il primissimo elenco appare in cima alla pila, mentre l'ultimo elencato apparirà in fondo alla pila dello sfondo.

#workspace width: 600px; altezza: 400 px; background-color: # 525d62; background-image: url (images / macbook.png), url (images / mouse.png), url (images / hdd.png), url (images / phone.png), url (images / ipad.png), url (images / coffee.png), url (images / camera.png); / * impilato in basso * / background-repeat: no-repeat; 

Tutte le sotto-proprietà dello sfondo (background-repeat, background-size, background-position ecc.) può essere definito più volte, tranne colore di sfondo. Se applichiamo sfondi multipli usando la stenografia sfondo proprietà, definire il colore di sfondo come l'ultimo valore che ha effetto. Per esempio:

#workspace height: 400px; background: url (images / macbook.png) 50% 50% no-repeat, url (images / mouse.png) 430px 295px no-repeat, url (images / camera.png) 425px 230px no-repeat # 525d62; 

In alternativa, aggiungi un altro colore di sfondo, successivo alla proprietà di mano breve:

#workspace width: 600px; altezza: 400 px; background: url (images / macbook.png) 50% 50% no-repeat, url (images / mouse.png) 430px 295px no-repeat, url (images / camera.png) 425px 230px senza ripetizione; background-color: # 525d62; 

Entrambi questi codici fanno lo stesso, ma trovo che quest'ultimo sia più intuitivo e leggibile.

3. Mescolare l'immagine di sfondo

Il background-blend-mode fa lo stesso che troverai in applicazioni grafiche come Photoshop o Gimp; mescola le immagini di sfondo l'una all'altra, così come a qualsiasi cosa si trovi al di sotto.

Il background-blend-mode prende valori familiari come copertura e moltiplicare tra alcuni altri che Jonathan Cutrell fa un fantastico lavoro di spiegazione nel suo tutorial sull'argomento. Vi raccomando caldamente di leggerlo in modo da poter fare alcuni esempi pratici.

Esistono diversi modi per utilizzare la modalità di fusione CSS per creare disegni sorprendenti, come ad esempio miscelare un gradiente con un'immagine, che Ian Yates sottolinea nel suo riepilogo di ispirazione:

Per creare questo effetto, aggiungiamo un'immagine di sfondo e una sfumatura, e applichiamo il copertura modalità di fusione.

#blend background-repeat: no-repeat; background-image: url ('img / people-15.jpg'), gradiente lineare (135 gradi, rgba (175,0,79,1) 0%, rgba (255,114,187,1) 100%); background-blend-mode: overlay;  

La sovrapposizione influisce su entrambi gli sfondi elencati qui, quindi potrebbe essere necessario essere cauti se non si desidera che tutto si fonda insieme. Se vogliamo evitare tutto che si fonde con il colore di sfondo, imposta il secondo valore su normale che si applicherà alla nostra seconda immagine di sfondo.

#blend background-repeat: no-repeat; background-image: url ('/img/people-15.jpg'), gradiente lineare (135deg, rgba (175,0,79,1) 0%, rgba (255,114,187,1) 100%); colore di sfondo: giallo; background-blend-mode: overlay, normale; 

4. Ritaglio sullo sfondo

Il background-clip di property è un'utilità che controlla il modo in cui il colore di sfondo e l'estensione dell'immagine all'interno del modello di riquadro del contenuto CSS. Simile al box-sizing proprietà, il background-clip di proprietà prende tre valori validi, vale a dire:

  • border-box è il valore predefinito che copre l'immagine di sfondo o il colore fino al bordo esterno dell'elemento.
  • padding-box coprirà lo sfondo fino al bordo esterno del padding, o in altre parole; il bordo interno del confine.
  • contenuti-box conserverà lo sfondo all'interno del contenuto dell'elemento come mostrato di seguito:

Un esempio pratico in cui ho trovato background-clip di essere a portata di mano è quando devo creare un pulsante con un'icona, usando un singolo elemento. Nella demo seguente, la nostra immagine si estende dal lato sinistro a quello destro dell'elemento, anche se aggiungiamo il padding su ciascun lato, poiché si applica ancora border-box.

Se vogliamo circondare l'icona con un po 'di spazio bianco, dovremmo tradizionalmente avvolgerlo con un altro elemento e applicare il riempimento su quell'elemento in più. Usando il background-clip di proprietà, siamo in grado di farlo elegantemente impostandolo contenuti-box, e sostituire l'imbottitura con bordi dello stesso colore del colore di sfondo.

Avvolgendo

Il sfondo la proprietà è quella che utilizziamo frequentemente nei nostri progetti. Speriamo che questo articolo ti abbia ricordato i suoi usi ampi e vari, e non vedo l'ora di sentire altre idee nei commenti.

Un'ultima nota: supporto del browser per queste proprietà (ad eccezione di background-blend-mode) sono grandi. Secondo CanIUse, più sfondi sono supportati da Internet Explorer 9 in poi, con solo un paio di problemi banali. Opzioni di immagine di sfondo, come ad esempio background-clip di proprietà, è quasi altrettanto buono.

Le modalità di fusione, al momento della scrittura, funzionano meglio in Chrome, Opera, sono parzialmente applicabili in Safari a causa di alcuni bug, ma purtroppo non sembrano aver fatto alcun segno di progresso con Microsoft Edge.