In breve
- Il gradient overlay più rapido in CSS è un secondo livello di sfondo: elenca il gradiente prima di url() in background-image così sta sopra.
- Per un elemento img, metti il gradiente su uno pseudo-elemento ::before o ::after di un contenitore posizionato.
- background-blend-mode e mix-blend-mode trasformano un overlay in un lavaggio di colore che tinge l'immagine invece di coprirla.
- Le immagini hero impostate come sfondi CSS vengono scoperte più tardi degli elementi img, quindi un img con overlay di solito si carica più in fretta nella parte visibile.
- Gli overlay che devono portare testo vanno più scuri dietro le parole e trasparenti altrove, non come un velo scuro uniforme su tutta la foto.
In questa pagina
Il più semplice gradient overlay CSS è uno sfondo a livelli: background-image: linear-gradient(rgb(2 6 23 / 0.6), rgb(2 6 23 / 0)), url(photo.jpg). I livelli elencati per primi sono disegnati sopra, quindi il gradiente sta sopra la foto. Quando l'immagine è un elemento <img>, metti invece il gradiente su uno pseudo-elemento, e quando vuoi che il colore tinga la foto invece di coprirla, aggiungi una blend mode. Ogni metodo si adatta a un lavoro diverso.
Metodo 1: uno sfondo a livelli
background-image accetta un elenco separato da virgole. Il primo valore è il livello superiore. Gradienti e immagini si mescolano liberamente, e ogni livello può avere la propria dimensione e posizione se elenchi quelle proprietà nello stesso ordine. È la scelta giusta per le immagini decorative che non richiedono testo alternativo.
.banner {
background-color: #0f172a; /* shows until the photo loads */
background-image:
linear-gradient(to right, rgb(15 23 42 / 0.9) 0%, rgb(15 23 42 / 0.6) 40%, rgb(15 23 42 / 0) 70%),
url("/images/workshop.jpg");
background-size: cover;
background-position: center;
color: #f8fafc;
}url() nel tuo background-image.Le barre in alto e in basso vanno bene per le gallerie in cui un titolo sta in alto e un credito in basso. La vignettatura porta lo sguardo verso l'interno senza reggere testo. La tinta del brand ha un grande effetto per pagine del team e banner di eventi; gli overlay a gradiente spiega quando ognuno funziona dal punto di vista del design.
Metodo 2: uno pseudo-elemento sopra un img
Le immagini di contenuto appartengono a elementi <img>: hanno testo alternativo, srcset responsivo, caricamento differito e scoperta anticipata da parte del browser. Un gradiente di sfondo non può stare sopra un <img>, quindi avvolgilo e metti il gradiente sullo pseudo-elemento del contenitore.
<figure class="overlay">
<img src="/images/harbour.jpg" alt="Fishing boats moored in a small harbour at dusk"
width="1920" height="1080" fetchpriority="high">
<figcaption>Harbour Days, 14 to 16 June</figcaption>
</figure>.overlay {
position: relative;
margin: 0;
isolation: isolate;
}
.overlay img {
display: block;
width: 100%;
height: 100%;
object-fit: cover;
}
.overlay::after {
content: "";
position: absolute;
inset: 0;
background: linear-gradient(to top, rgb(2 6 23 / 0.75), rgb(2 6 23 / 0) 60%);
pointer-events: none;
transition: opacity 250ms ease-out;
}
.overlay figcaption {
position: absolute;
inset: auto 1.5rem 1.5rem;
z-index: 1;
color: #f8fafc;
}
.overlay:hover::after { opacity: 0.6; }isolation: isolate mantiene la sovrapposizione dell'overlay dentro la figure. L'overlay può sfumare al passaggio del mouse perché è un livello a sé.Livello di sfondo
- Un elemento, una dichiarazione
- Nessun testo alternativo, quindi solo immagini decorative
- Scoperto tardi dal browser, il che può rallentare un hero
- L'overlay non può sfumare senza animare l'intero sfondo
img più pseudo-elemento
- Un contenitore e qualche riga in più
- Testo alternativo corretto e
srcsetresponsivo - Scoperto presto;
fetchpriority="high"aiuta l'immagine principale - L'opacità dell'overlay ha transizioni economiche
Per un'immagine hero che è l'elemento più grande sullo schermo, il secondo metodo di solito vince in velocità di caricamento. Ottimizzare le immagini per il web spiega perché il browser trova gli elementi <img> prima degli sfondi CSS.
Metodo 3: blend mode per i lavaggi di colore
Un overlay semplice sta sulla foto come un vetro colorato. Una blend mode fonde il gradiente con le luci e le ombre della foto stessa, e sembra più che la foto sia stata scattata in quel colore. Usa background-blend-mode per gli sfondi a livelli e mix-blend-mode su uno pseudo-elemento sopra un <img>.
multiplyCosa fa
Buon overlay per
screenSchiarisce; le aree nere prendono il coloreBuon overlay per
overlayCosa fa
Buon overlay per
colorMantiene la luce della foto, sostituisce il coloreBuon overlay per
soft-lightCosa fa
Buon overlay per
color con un gradiente a due colori è il duotone più rapido sul web./* Duotone wash on a layered background */
.duotone {
background-image:
linear-gradient(135deg, #1e1b4b 0%, #f472b6 100%),
url("/images/portrait.jpg");
background-size: cover;
background-blend-mode: color;
}
/* The same idea over an img element */
.overlay--wash::after {
background: linear-gradient(135deg, #1e1b4b, #f472b6);
mix-blend-mode: color;
}background-blend-mode fonde i livelli di un solo elemento. mix-blend-mode fonde un elemento con ciò che gli sta dietro, qui la foto.La tecnica completa, compreso come scegliere i due colori, è in l'effetto duotone.
Overlay che mantengono il testo leggibile
L'errore più comune è un velo scuro uniforme su tutta la foto, diciamo nero al 50 percento. Spegne l'immagine ovunque e può comunque non essere abbastanza scuro dietro le parole. Dai invece una forma all'overlay: più scuro sotto il testo, trasparente dove la foto conta.
- 1
Decidi dove vanno le parole
In basso a sinistra per le didascalie, nel terzo sinistro per il testo dell'hero, al centro per una sola riga.
- 2
Punta il gradiente verso di esse
Usa
to topper il testo in basso,to rightper il testo a sinistra, o un radiale centrato sulle parole. - 3
Fermati presto
Sfuma fino alla trasparenza totale entro il 60-70 percento così gran parte della foto resta intatta.
- 4
Controlla il caso peggiore
Misura il contrasto dove la foto è più luminosa dietro una lettera. Contrasto del colore e accessibilità elenca i rapporti.
Le sfumature morbide con molti punti appaiono più fluide di una dissolvenza a due punti; il metodo è in gradienti trasparenti in CSS.
Overlay senza tentativi
Su un sito web ogni overlay lo regoli a mano. Per post social, banner e slide, Gradiently salta il passaggio: un Mark sa dove sono le tue parole e approfondisce o alleggerisce i propri colori dietro di esse, e le foto possono essere tinte con i colori del Mark in mono, duotone o lavaggio, e con Pro il design si ridimensiona in ogni formato in un solo passaggio, senza overlay da rifare.
Un banner per un evento nella dimensione di un hero web, con lo sfondo che si calma dietro le parole invece di un overlay regolato a mano.
Le domande più frequenti
Come metto un gradiente sopra un'immagine di sfondo in CSS?
Elenca il gradiente prima dell'immagine in background-image: linear-gradient(rgb(0 0 0 / 0,5), transparent), url(photo.jpg). Il primo livello è disegnato sopra.
Come aggiungo un gradient overlay a un elemento img?
Avvolgi l'immagine in un elemento posizionato e metti il gradiente sul suo pseudo-elemento ::after con position: absolute e inset: 0.
Qual è la differenza tra background-blend-mode e mix-blend-mode?
background-blend-mode fonde i livelli di sfondo di un solo elemento. mix-blend-mode fonde un intero elemento con ciò che sta dietro.
Quanto deve essere scuro l'overlay di un'immagine per il testo?
Abbastanza da far superare al testo i controlli di contrasto nel punto più luminoso dietro di esso. Dai al gradiente una forma che sia più scura lì e trasparente altrove.
Posso animare un gradient overlay al passaggio del mouse?
Sì. Metti l'overlay su uno pseudo-elemento e applica una transizione alla sua opacity, che costa meno che animare lo sfondo stesso.
Scritto da Gradiently
Il team dietro Gradiently, uno strumento di design costruito attorno ai Mark: gradienti vivi che fanno sembrare tuo tutto ciò che progetti.
Vedi il nostro profilo