Revidering av CSS-bakgrundsegenskapen

Lär CSS: Den kompletta guiden

Vi har byggt en komplett guide för att hjälpa dig att lära dig CSS, oavsett om du bara har börjat med grunderna eller vill utforska mer avancerad CSS.

I denna handledning ska vi undersöka en av de äldre, mer välbekanta CSS-egenskaperna: bakgrund. bakgrund är en av flera CSS-egenskaper vars egenskaper ofta förbises. Det såg faktiskt upp en uppgradering med CSS3, som fick nya möjligheter bortom att bara lägga till en bakgrundsbild eller färg. Låt oss titta på några av dem!

1. Bakgrundsställning Offset

Att placera en bakgrunds grafik är okomplicerad och något du är troligt bekant med redan. Om vi ​​vill placera bakgrunden längst ner till höger om elementet tillämpar vi nere till höger till bakgrund-positionen. Till exempel:

#workspace width: 100%; max bredd: 668px; höjd: 400px; bakgrundsfärg: # 525d62; bakgrundsbild: url (bilder / macbook.png); background-repeat: no-repeat; Bakgrundsposition: högerbotten; 

Eller med stenografi, bakgrund, efter url definitionen:

#workspace width: 100%; max bredd: 668px; höjd: 400px; bakgrund: # 525d62 url (bilder / macbook.png) no-repeat right bottom; 

Sedan tillkomsten av CSS3 har vi kunnat ange positionen offset; De exakta avstånden till de inställda positionerna. Med vårt exempel på nere till höger, vi inkluderar botten 20px höger 30px att positionera vår bakgrund på 20px från botten och 30px från vänster.

#workspace width: 100%; max bredd: 668px; höjd: 400px; bakgrundsfärg: # 525d62; bakgrundsbild: url (bilder / macbook.png); background-repeat: no-repeat; Bakgrundsposition: Höger 30px Botten 20px; 

Positionerna (botten, topp, höger, vänster) kan definieras i vilken ordning som helst, men förskjutlängden måste definieras efter varje bakgrundsställning.

Kredit går till Metin Kazan för illustrationerna.

2. Flera bakgrundsbilder

De bakgrund egendom tillåter oss också att lägga till flera bakgrundsbilder. Låt oss därför utöka vårt tidigare exempel med fler saker och prylar.

Vi lägger till dessa bilder i en enda bakgrund eller bakgrundsbild deklaration genom att skilja varje med ett komma. Vi använder bakgrund-positionen egenskap, som också accepterar flera värden, för att styra varje av dessa bakgrundsbilder.

#workspace height: 400px; bakgrundsfärg: # 525d62; bakgrundsbild: url (bilder / macbook.png), url (bilder / mus.png), url (bilder / hdd.png), url (bilder / phone.png), url (bilder / ipad.png), url (bilder / coffee.png), url (images / camera.png); background-repeat: no-repeat; bakgrundsposition: 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 * /

Vi kan använda fasta enheter (som pixlar), flexibla enheter (som procentandelar) eller en kombination av de två.

Varje par värden representerar koordinater från övre vänstra av behållarelementet, till övre vänstra av bilden. Till exempel är den övre vänstra delen av kamerabilden 280px från toppen av behållaren, då är 7% av tillgängliga bredd över från vänster.

Notera: The tillgängliga Bredden är den totala bredden av behållarelementet, minus bredden på bakgrundsbilden. Därför visas en bakgrundsbild placerad 50% längs x-axeln exakt centrerad!

Rörelse

Dessutom, sedan bakgrund-positionen är en animerbar egendom, vi kan skapa en mer livlig, övertygande bakgrund:

#workspace width: 600px; höjd: 400px; bakgrundsfärg: # 525d62; background-repeat: no-repeat; bakgrundsbild: url (bilder / macbook.png), url (bilder / mus.png), url (bilder / hdd.png), url (bilder / phone.png), url (bilder / ipad.png), url (bilder / coffee.png), url (images / camera.png); bakgrundsställning: 50% 50%, 430px 295px, 425px 230px, 480px 240px, 105px 250px, 120px 190px, 40px 280px; animering: 3s lätthet 0s inView framåt;  @keyframes inView 0% bakgrundsposition-y: 600%, 451px, -448px, 240px, 496px, -44px, 280px; bakgrundsställning-x: 50%, 75%, 75%, 200%, 20%, 22%, -100%;  20% bakgrundsposition-y: 50%, 451px, -448px, 240px, 496px, -44px, 280px; bakgrundsställning-x: 50%, 75%, 75%, 200%, 20%, 22%, -100%;  30% bakgrundsposition-y: 50%, 295px, -448px, 240px, 496px, -44px, 280px; bakgrundsställning-x: 50%, 75%, 75%, 200%, 20%, 22%, -100%;  40% bakgrundsposition-y: 50%, 295px, 230px, 240px, 250px, -44px, 280px; bakgrundsställning-x: 50%, 75%, 75%, 200%, 0%, 22%, -100%;  50% bakgrundsposition-y: 50%, 295px, 230px, 240px, 250px, 190px, 280px; bakgrundsställning-x: 50%, 75%, 75%, 96%, 0%, 22%, -100%;  60% bakgrundsposition-y: 50%, 295px, 230px, 240px, 250px, 190px, 280px; bakgrundsställning-x: 50%, 75%, 75%, 96%, 0%, 22%, 7%;  100% bakgrundsposition-y: 50%, 295px, 230px, 240px, 250px, 190px, 280px; 

Här har vi satt upp ett antal keyframes längs en tidslinje. Vid varje keyframe har vi ändrat bakgrund-ställning-x och bakgrund-ställning-y av varje bakgrundsbild. Animeringen är visserligen rudimentär, så snäll gaffel CodePen och förbättra den!

Notera: Klick Repris längst ned till höger om pennan för att se animationen

Läs mer om CSS Animation

Ett par anmärkningsvärda poäng

Bakgrunden vi använde beställs i följd; den allra första listan visas överst i stapeln, medan den sistnämnda kommer att visas längst ner i bakgrundsbunten.

#workspace width: 600px; höjd: 400px; bakgrundsfärg: # 525d62; bakgrundsbild: url (bilder / macbook.png), url (bilder / mus.png), url (bilder / hdd.png), url (bilder / phone.png), url (bilder / ipad.png), url (bilder / coffee.png), url (images / camera.png); / * staplade längst ner * / bakgrundsrepetition: nej-repetera; 

Alla bakgrundsunderegenskaper (bakgrund-repeat, background-storlek, bakgrund-positionen etc.) kan definieras flera gånger, förutom bakgrundsfärg. Om vi ​​tillämpar flera bakgrunder med hjälp av stenografi bakgrund egenskap, definiera bakgrundsfärgen som det senaste värdet för att träda i kraft. Till exempel:

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

Alternativt, lägg till en separat bakgrundsfärg, efter den korta egendomen:

#workspace width: 600px; höjd: 400px; bakgrund: url (bilder / macbook.png) 50% 50% ingen upprepa, url (bilder / mus.png) 430px 295px no-repeat, url (images / camera.png) 425px 230px no-repeat; bakgrundsfärg: # 525d62; 

Båda dessa koder gör detsamma, men jag tycker att den senare är mer intuitiv och läsbar.

3. Blend bakgrundsbild

De bakgrund-blandning-mode gör detsamma som i grafikapplikationer som Photoshop eller Gimp; det blandar bakgrundsbilder till varandra, liksom vad som helst under.

De bakgrund-blandning-mode tar kända värden som täcka över och multiplicera bland några andra som Jonathan Cutrell gör ett fantastiskt jobb att förklara i sin handledning om ämnet. Jag rekommenderar dig att läsa igenom det så att vi kan hoppa in i några praktiska exempel.

Det finns flera sätt att använda CSS-blandningsläge för att skapa slående design, till exempel att blanda en lutning med en bild, som Ian Yates påpekar i sin inspiration:

För att skapa denna effekt lägger vi till en bakgrundsbild och en gradient och tillämpar täcka över blandningsläge.

#blend background-repeat: no-repeat; bakgrundsbild: url ('img / people-15.jpg'), linjär gradient (135deg, rgba (175,0,79,1) 0%, rgba (255,114,187,1) 100%); Bakgrundsblandningsläge: Överlagring;  

Överlagret påverkar både bakgrunden som anges här, så du kan behöva vara försiktig om du inte vill att allt ska blandas ihop. Om vi ​​vill undvika att allt blandas med bakgrundsfärgen, sätt det andra värdet till vanligt vilket kommer att gälla för vår andra bakgrundsbild.

#blend background-repeat: no-repeat; bakgrundsbild: url ('... /img/people-15.jpg'), linjär gradient (135deg, rgba (175,0,79,1) 0%, rgba (255,114,187,1) 100%); bakgrundsfärg: gul; Bakgrundsmixning: Överlagring, Normal; 

4. Bakgrundsklippning

De background-clip egendom är ett verktyg som styr hur bakgrundsfärgen och bilden spänner inom CSS-innehållslådans modell. Liknande till box-dimensionering egendom, background-clip egendom tar tre giltiga värden, nämligen:

  • border-box är standardvärdet som spänner över bakgrundsbilden eller färgen hela vägen till elementets ytterkant.
  • padding-box kommer att spänna över bakgrunden upp till ytterkanten av vadderingen, eller med andra ord; gränsens inre kant.
  • innehåll-box kommer att behålla bakgrunden inom elementinnehållet som visas nedan:

Ett praktiskt exempel där jag har hittat background-clip Att vara praktisk är när jag måste skapa en knapp med en ikon, med ett enda element. I följande demo spänner vår bild från vänster till höger om elementet, även om vi lägger på vadderingar på varje sida, eftersom det fortfarande gäller border-box.

Om vi ​​vill omge ikonen med lite blankutrymme skulle vi traditionellt behöva pakka in det med ett annat element och applicera vaddering på det extra elementet. Använda background-clip egendom, vi kan göra det elegant genom att sätta det på innehåll-box, och ersätt vadderingen med gränser av samma färg som bakgrundsfärgen.

Avslutar

De bakgrund egendom är en som vi ofta använder i våra projekt. Förhoppningsvis har den här artikeln påmint dig om dess breda och varierade användningsområden, och jag ser fram emot att höra fler idéer i kommentarerna.

En sista anmärkning: Webbläsarstöd för dessa egenskaper (med undantag för bakgrund-blandning-mode) är bra. Enligt CanIUse stöds flera bakgrunder från Internet Explorer 9 och framåt, med bara några triviala problem. Alternativ för bakgrundsbild, till exempel background-clip egendom, är nästan lika bra.

Blandningslägen, vid skrivningstid, fungerar bäst i Chrome, Opera, är delvis tillämpliga i Safari på grund av några buggar, men tyvärr verkar inte ha gjort några tecken på framsteg med Microsoft Edge.