Kortversionen
- CSS-egenskapen background kan rymma flera kommaseparerade lager, och det första lagret i listan målas överst.
- En bakgrundsfärg kan bara anges en gång, i det sista lagret, och syns under varje bild och gradient.
- I kortformen background måste background-size följa efter background-position med ett snedstreck, som i center / cover.
- Att lägga ett gradientlager ovanför ett bildlager i en och samma deklaration är det enklaste sättet att tona ett foto för läsbar text.
- Bilder som anges i CSS upptäcks senare än img-element, så en viktig herobild kan behöva en preload-ledtråd.
På den här sidan
En CSS-bakgrund är en stapel lager på ett element. Egenskapen background tar en kommaseparerad lista med bilder och gradienter, målade med den första överst, plus en enda färg längst ned. Det är allt du behöver för ett tonat herofoto, ett mjukt ljus över en gradient eller en textur över en varumärkesfärg, utan extra element eller omslag. Resten är att veta hur kortformen läser sina värden.
Kortformen background, värde för värde
Kortformen sätter upp till åtta långformsegenskaper på en gång. Alla du utelämnar återställs till sina standardvärden, vilket är den vanligaste källan till felen ”varför försvann min bakgrundsstorlek”.
background-colorVad den styr
Vanliga värden
#0f0b1e, oklch(20% 0.05 290)background-imageVad den styr
Vanliga värden
url(photo.webp), linear-gradient(…)background-positionVad den styr
Vanliga värden
center, top right, 50% 30%background-sizeVad den styr
Vanliga värden
cover, contain, 200px autobackground-repeatVad den styr
Vanliga värden
no-repeat, repeat, repeat-xbackground-attachmentVad den styr
Vanliga värden
scroll, fixed, localbackground-origin och background-clipVad den styr
Vanliga värden
padding-box, border-box, text.hero {
/* image | position / size | repeat | colour */
background: url("harbour.webp") center 30% / cover no-repeat #0f172a;
}Hur bakgrundslager staplas
Lista lagren uppifrån och ned, åtskilda med kommatecken. Varje lager kan ha sin egen position, storlek och upprepning, angivna i samma ordning i varje långform. Bara det sista lagret får innehålla en färg. Tänk på det som att läsa ned genom en hög kalkerpapper.
.section {
background:
radial-gradient(circle at 80% 20%, #f472b6 0%, transparent 45%),
radial-gradient(circle at 15% 85%, #38bdf8 0%, transparent 50%),
linear-gradient(160deg, #1e1b4b 0%, #0f0b1e 100%)
#0f0b1e;
}Använd transparent i de yttre stoppen så att ljusen blandas in i det som ligger under. För själva formerna, se CSS radial gradient och CSS mesh gradient.
En gradient över en bakgrundsbild
Den mest användbara lagerbakgrunden tonar ett foto så att orden ovanpå går att läsa. Lägg ett gradientlager först och bilden som andra. En gradient som är mörk där texten sitter och klar på andra ställen behåller mycket mer av fotot än ett platt mörkt överlägg.
.hero {
background:
linear-gradient(90deg, rgb(10 12 24 / 0.85) 0%, rgb(10 12 24 / 0.4) 45%, transparent 70%),
url("terrace.webp") center / cover no-repeat
#0a0c18;
color: #f8fafc;
}Ett platt överlägg gör texten läsbar genom att dämpa allt lika mycket.
Ett riktat lager mörknar bara där orden finns och lämnar resten av scenen ljus.
Gradientöverlägg har fler överläggsrecept, och text över bild tar upp när du ska flytta orden i stället för att mörkna bilden.
background-size, position och upprepning
coverfyller rutan och beskär det som flödar över. Rätt för foton och herobilder som går ut i kanten.containrymmer hela bilden inuti och lämnar luckor. Rätt för logotyper och illustrationer som inte får beskäras.- Para
covermed en medvetenbackground-positionsom50% 30%så att beskärningen behåller motivets ansikte eller produkten i bild. - Texturkakel vill ha
repeatoch en fast storlek, till exempel200px 200px, så att kornet förblir detsamma i varje skärmbredd. background-attachment: fixedger ett parallaxutseende på datorer, men många mobilwebbläsare ignorerar det, så förlita dig aldrig på det.
.card {
background:
url("grain.png") 0 0 / 200px 200px repeat,
linear-gradient(135deg, #7c2d12 0%, #ea580c 55%, #fdba74 100%);
}En långform till förtjänar sin plats: background-clip: text skär bakgrunden till bokstävernas form, vilket är så gradientbokstäver görs i CSS. Spara den till stora displayord, sätt en enfärgad color som reserv och se CSS-gradienttext för hela mönstret.
Misstag att undvika
Undvik
- Att sätta
background-sizeoch sedan kortformen efter den, vilket återställer den - En färg i något annat lager än det sista
- Ingen reservfärg, så texten är oläslig medan bilden laddas
- Ett enormt foto för en ruta som är 400 pixlar bred
- Viktigt innehåll bara i en bakgrundsbild, osynligt för skärmläsare
Gör
- Skriv kortformen först, sedan eventuella långformsöverstyrningar
- En färg, sist i listan
- En reservfärg nära bildens medelton
- Bilder anpassade till rutan, levererade som WebP eller AVIF
- Meningsfulla bilder som
imgmed alt-text; dekoration som bakgrunder
Responsiva och snabba bakgrundsbilder
image-set() låter webbläsaren välja mellan format eller upplösningar, ungefär som srcset på en img. Och eftersom bakgrundsbilder först upptäcks när CSS:en tolkats kan en herobakgrund komma sent; en preload-ledtråd i head löser det.
<link rel="preload" as="image" href="/hero-1920.avif" type="image/avif" fetchpriority="high">
<style>
.hero {
background: image-set(
url("/hero-1920.avif") type("image/avif"),
url("/hero-1920.webp") type("image/webp"),
url("/hero-1920.jpg") type("image/jpeg")
) center / cover no-repeat #0f172a;
}
</style>Ofta är den snabbaste bakgrunden ingen bild alls. Lagrade gradienter kostar ingen nedladdning, och en liten kornkakel ger textur för några kilobyte. CSS-gradienters prestanda och WebP mot PNG och JPG tar upp avvägningarna. Vill du hellre slippa finjustera ljus och korn ger en Gradiently-Mark dig en färdig, särpräglad bakgrund i webbplatsens herostorlek 1920×1080, med samma look som dina sociala inlägg.
Vanliga frågor
Hur lägger jag till en bakgrundsbild i CSS?
Använd background: url("image.webp") center / cover no-repeat; på elementet, med en reservfärg sist ifall bilden är långsam att ladda.
Hur lägger jag en gradient över en bakgrundsbild?
Lista gradienten först och bilden som andra i en och samma background-deklaration, åtskilda med ett kommatecken. Det första lagret målas överst.
Kan jag använda flera bakgrunder i CSS?
Ja. Avgränsa lager med kommatecken; varje kan ha egen position, storlek och upprepning, och bara det sista lagret får innehålla en färg.
Vad är skillnaden mellan background-size cover och contain?
cover fyller hela elementet och beskär det som flödar över; contain visar hela bilden och kan lämna tomt utrymme runt den.
Varför slutar min background-size fungera?
Kortformen background återställer varje långform den inte nämner. Sätt background-size efter kortformen, eller ta med den i kortformen efter positionen med ett snedstreck.
Skriven av Gradiently
Teamet bakom Gradiently, ett designverktyg byggt kring Marks: levande gradienter som får allt du gör att kännas som ditt.
Se vår profil