Revizuirea proprietății de fond CSS

Aflați CSS: Ghidul complet

Am creat un ghid complet care să vă ajute să învățați CSS, indiferent dacă începeți doar cu elementele de bază sau doriți să explorați CSS mai avansat.

În acest tutorial vom examina una dintre proprietățile CSS mai vechi și mai familiare: fundal. fundal este una dintre mai multe proprietăți CSS ale căror caracteristici sunt adesea trecute cu vederea. De fapt, a văzut un upgrade cu CSS3, primind noi capabilități dincolo de adăugarea unei imagini de fundal sau a unei culori. Să ne uităm la unele dintre ele!

1. Poziția de fond Offset

Poziționarea unui grafic de fundal este simplă și ceva cu care probabil vă cunoașteți deja. Dacă vrem să poziționăm fundalul în partea dreaptă jos a elementului, aplicăm dreapta-jos la background-position. De exemplu:

#workspace width: 100%; max-lățime: 668px; înălțime: 400px; fundal-culoare: # 525d62; fundal-imagine: url (imagini / macbook.png); background-repeat: nu-repeta; fundal-poziție: fundul drept; 

Sau, cu stenograma, fundal, după definiția urlului:

#workspace width: 100%; max-lățime: 668px; înălțime: 400px; fundal: # 525d62 url (imagini / macbook.png) nu-repeta dreapta jos; 

De la apariția CSS3 am reușit să specificăm poziția compensate; distanțele precise ale pozițiilor stabilite. Luând exemplul nostru dreapta-jos, noi includem bottom 20px dreapta 30px pentru a ne poziționa fundalul la 20px din partea de jos și 30px din stânga.

#workspace width: 100%; max-lățime: 668px; înălțime: 400px; fundal-culoare: # 525d62; fundal-imagine: url (imagini / macbook.png); background-repeat: nu-repeta; pozitie fundal: dreapta 30px jos 20px; 

Pozițiile (fund, top, dreapta, stânga) poate fi definit în orice ordine, dar lungimea de compensare trebuie definită după fiecare poziție de fundal.

Creditul se adresează lui Metin Kazan pentru ilustrații.

2. Imagini de fundal multiple

fundal Proprietatea ne permite de asemenea să adăugăm mai multe imagini de fundal. Prin urmare, să extindeți exemplul nostru anterior cu mai multe lucruri și obiecte gadget.

Adăugăm aceste imagini la un singur fundal sau imagine de fundal declarație separând fiecare cu o virgulă. Noi folosim background-position proprietate, care acceptă și mai multe valori, pentru a controla fiecare dintre aceste imagini de fundal.

#workspace height: 400px; fundal-culoare: # 525d62; imagine-url (imagini / ipd.png), url (imagini / ipad.png), url (imagini / ipd.png) (imagini / cafe.png), url (imagini / camera.png); background-repeat: nu-repeta; Poziția de fundal: 50% 50%, / * macbook.png * / 75% 295px, / * mouse.png * / 75% 230px, / * hdd.png * / 96% 240px, / * phone.png * / 20 % 250px, / * ipad.png * / 22% 190px, / * cafe.png * / 7% 280px; / * camera.png * /

Putem folosi unități fixe (cum ar fi pixeli), unități flexibile (cum ar fi procente) sau o combinație a celor două.

Fiecare pereche de valori reprezintă coordonatele din stânga sus a elementului containerului, la stânga sus a imaginii. De exemplu, imaginea de pe partea stângă sus a imaginii camerei este de 280 de pixeli din partea de sus a containerului, apoi de 7% din imagine disponibil lățimea de la stânga.

Notă: The disponibil lățimea este lățimea totală a elementului containerului, minus lățimea imaginii de fundal. Prin urmare, o imagine de fundal poziționată la 50% de-a lungul axei x apare exact centrat!

Mişcare

În plus, din moment ce background-position este o proprietate animabilă, putem crea un fundal mai plin de viață, convingător:

#workspace width: 600px; înălțime: 400px; fundal-culoare: # 525d62; background-repeat: nu-repeta; imagine-url (imagini / ipd.png), url (imagini / ipad.png), url (imagini / ipd.png) (imagini / cafe.png), url (imagini / camera.png); fundal-poziție: 50% 50%, 430px 295px, 425px 230px, 480px 240px, 105px 250px, 120px 190px, 40px 280px; animație: 3s ușurință 0s inView înainte;  @inframele de chei inView 0% background-position-y: 600%, 451px, -448px, 240px, 496px, -44px, 280px; fundal-poziția-x: 50%, 75%, 75%, 200%, 20%, 22%, -100%;  20% background-position-y: 50%, 451px, -448px, 240px, 496px, -44px, 280px; fundal-poziția-x: 50%, 75%, 75%, 200%, 20%, 22%, -100%;  30% background-position-y: 50%, 295px, -448px, 240px, 496px, -44px, 280px; fundal-poziția-x: 50%, 75%, 75%, 200%, 20%, 22%, -100%;  40% background-position-y: 50%, 295px, 230px, 240px, 250px, -44px, 280px; fundal-poziția-x: 50%, 75%, 75%, 200%, 0%, 22%, -100%;  50% background-position-y: 50%, 295px, 230px, 240px, 250px, 190px, 280px; fundal-poziția-x: 50%, 75%, 75%, 96%, 0%, 22%, -100%;  60% background-position-y: 50%, 295px, 230px, 240px, 250px, 190px, 280px; fundal-poziția-x: 50%, 75%, 75%, 96%, 0%, 22%, 7%;  100% background-position-y: 50%, 295px, 230px, 240px, 250px, 190px, 280px; 

Aici am creat un număr de cadre cheie de-a lungul unei linii de timp. La fiecare cadru cheie am modificat background-position-x și background-position-y din fiecare imagine de fundal. Animația este adesea rudimentară, așadar vă rugăm să lăsați furculița CodePen și să o îmbunătățiți!

Notă: Clic Rerun în colțul din dreapta jos al pixului pentru a vedea animația

Aflați mai multe despre animația CSS

O pereche de puncte notabile

Fundalurile pe care le-am folosit sunt ordonate succesiv; primul listat apare în partea de sus a stiva, în timp ce ultimul listat va apărea în partea de jos a stiva de fundal.

#workspace width: 600px; înălțime: 400px; fundal-culoare: # 525d62; imagine-url (imagini / ipd.png), url (imagini / ipad.png), url (imagini / ipd.png) (imagini / cafe.png), url (imagini / camera.png); / * stivuite în partea de jos * / background-repeat: no-repeat; 

Toate sub-proprietățile de fond (fundal repetare, background-size, background-position etc) pot fi definite de mai multe ori, cu excepția culoare de fundal. Dacă aplicăm mai multe fundaluri folosind stenograma fundal proprietăți, definiți culoarea de fundal ca fiind cea mai recentă valoare care va intra în vigoare. De exemplu:

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

Alternativ, adăugați o secțiune separată culoare de fundal, ca urmare a proprietății scurte:

#workspace width: 600px; înălțime: 400px; fundal: url (imagini / macbook.png) 50% 50% no-repeat, url (imagini / mouse.png) 430px 295px no-repeat, url (images / camera.png) 425px 230px no-repeat; fundal-culoare: # 525d62; 

Ambele coduri fac același lucru, dar cred că acesta din urmă este mai intuitiv și mai lizibil.

3. Amestecați imaginea de fundal

fundal-amestec-mode se întâmplă la fel ca în aplicațiile grafice cum ar fi Photoshop sau Gimp; se amestecă imaginile de fundal unul cu celălalt, precum și cu ceea ce este dedesubt.

fundal-amestec-mode ia valori familiare, cum ar fi acoperire și multiplica printre câțiva alții, pe care Jonathan Cutrell face o lucrare fantastică de a-și explica în tutorialul său pe această temă. Îți recomand foarte mult să le citești, pentru a putea sări în câteva exemple practice.

Există mai multe moduri de utilizare a modului de amestecare CSS pentru a crea un design remarcabil, cum ar fi îmbinarea unui gradient cu o imagine, pe care Ian Yates o subliniază în rolurile sale de inspirație:

Pentru a crea acest efect, adăugăm o imagine de fundal și un gradient și aplicăm acoperire mod de amestecare.

#blend background-repeat: no-repeat; background-image: url ('img / people-15.jpg'), gradient linear (135deg, rgba (175,0,79,1) 0%, rgba (255,114,187,1) 100%); fundal-blend-mode: suprapunere;  

Suprapunerea influențează ambele fundaluri afișate aici, astfel încât este posibil să fiți precauți dacă nu doriți ca totul să se amestece împreună. Dacă vrem să evităm orice amestecare cu culoarea de fundal, setați a doua valoare la normal care se va aplica celei de-a doua imagini de fundal.

#blend background-repeat: no-repeat; background-image: url ('... /img/people-15.jpg'), gradient liniar (135deg, rgba (175,0,79,1) 0%, rgba (255,114,187,1) 100%); fundal-culoare: galben; fundal-blend-mode: suprapunere, normal; 

4. Clippingul fundalului

fundal clip proprietate este un utilitar care controlează modul în care culoarea de fundal și intervalul de imagine se încadrează în modelul cutiei de conținut CSS. Similar cu box-dimensionare proprietate, fundal clip proprietatea ia trei valori valide, și anume:

  • frontieră-box este valoarea implicită care acoperă imaginea de fundal sau culoarea până la marginea exterioară a elementului.
  • padding-box va acoperi fundalul până la marginea exterioară a plăcuței, sau cu alte cuvinte; marginea interioară a frontierei.
  • conținut-box va păstra fundalul din conținutul elementului, după cum se arată mai jos:

Un exemplu practic pe care l-am găsit fundal clip pentru a fi la îndemână este când trebuie să creez un buton cu o pictogramă, folosind un singur element. În următoarea demonstrație, imaginea noastră se întinde de la marginea stânga la dreapta a elementului, chiar dacă adăugăm umplutură pe fiecare parte, deoarece se aplică încă frontieră-box.

Dacă vrem să înconjoară pictograma cu un pic de spațiu alb, ar trebui în mod tradițional să o înfășurăm cu un alt element și să aplicăm umplutura pe acel element suplimentar. Utilizarea fundal clip proprietate, suntem capabili să o facem elegant prin stabilirea lui conținut-box, și înlocuiți căptușeala cu margini de aceeași culoare ca culoarea de fundal.

Înfășurarea în sus

fundal proprietatea este una pe care o folosim frecvent în proiectele noastre. Sperăm că acest articol ți-a amintit de utilizarea sa largă și variată și aștept cu nerăbdare să aud mai multe idei în comentarii.

O notă finală: suport pentru browser pentru aceste proprietăți (cu excepția fundal-amestec-mode) sunt grozavi. Potrivit CanUUse, mai multe medii de fundal sunt suportate din nou de pe Internet Explorer 9, cu doar câteva probleme triviale. Opțiunile imaginii de fundal, cum ar fi fundal clip proprietate, este aproape la fel de bun.

Modelele de combinare, la momentul scrisului, funcționează cel mai bine în Chrome, Opera, sunt parțial aplicabile în Safari datorită câtorva bug-uri, însă, din păcate, nu au făcut niciun semn de progres cu Microsoft Edge.