Secțiuni de site
Alegerea editorului:
- Ce să faci dacă nu există o unitate D pe computer?
- Cum să adăugați corect o nouă partiție pe un hard disk?
- O recenzie a difuzoarelor Bluetooth JBL Flip3
- Formate de carte
- Conectarea și configurarea televizorului interactiv de la Rostelecom
- Cum să vă ștergeți contul de Instagram
- Tabletă Android sau iPad - ce să alegi?
- Cum se formatează corect o continuare a tabelului în Word
- Ce să faci dacă evoluezi offline
- Testarea procesorului pentru supraîncălzire
Publicitate
Centrați elementul pe pagina css. Centrarea div-ului și alte subtilități de poziționare |
Centrarea elementelor pe verticală folosind CSS este o sarcină care prezintă o anumită dificultate pentru dezvoltatori. Cu toate acestea, există mai multe metode de rezolvare, care sunt destul de simple. Această lecție prezintă 6 opțiuni pentru centrarea verticală a conținutului. Să începem cu o descriere generală a problemei. Problemă de centrare verticalăCentrarea orizontală este foarte simplă și ușoară. Când elementul centrat este inline, folosim proprietatea de aliniere relativă la elementul părinte. Când elementul este la nivel de bloc, îi setăm lățimea și setarea automată a marginilor din stânga și din dreapta. Majoritatea oamenilor, când folosesc proprietatea text-align:, se referă la proprietatea vertical-align pentru centrarea verticală. Totul pare destul de logic. Dacă ați folosit șabloane de tabel, probabil că ați folosit pe scară largă atributul valign, ceea ce întărește credința că vertical-align este modalitatea corectă de a rezolva problema. Dar atributul valign funcționează numai pe celulele tabelului. Și proprietatea de aliniere verticală este foarte asemănătoare cu aceasta. De asemenea, afectează celulele tabelului și unele elemente inline. Valoarea proprietății de aliniere verticală este relativă la elementul inline părinte.
Dar, din păcate, proprietatea vertical-align nu funcționează pe elementele la nivel de bloc (de exemplu, paragrafele din interiorul unui element div). Această situație poate face să se creadă că nu există o soluție la problema alinierii verticale. Dar există și alte metode de centrare a elementelor bloc, a căror alegere depinde de ceea ce este centrat în raport cu containerul exterior. Metoda linie-înălțimeAceastă metodă funcționează atunci când doriți să centrați vertical o linie de text. Tot ce trebuie să faceți este să setați înălțimea liniei să fie mai mare decât dimensiunea fontului. În mod implicit, spațiul alb va fi distribuit uniform în partea de sus și de jos a textului. Și linia va fi centrată vertical. Adesea, înălțimea liniei este egală cu înălțimea elementului. HTML:
Text obligatoriu
CSS:#copil (înălțimea liniei: 200px; ) Această metodă funcționează în toate browserele, deși poate fi folosită doar pentru o singură linie. Valoarea 200 px din exemplu a fost aleasă în mod arbitrar. Puteți utiliza orice valoare mai mare decât dimensiunea fontului textului. Centrarea unei imagini folosind Line-HeightCe se întâmplă dacă conținutul este o imagine? Va funcționa metoda de mai sus? Răspunsul se află într-o altă linie de cod CSS. HTML:
CSS:#parent ( line-height: 200px; ) #parent img ( vertical-align: middle; ) Valoarea proprietății line-height trebuie să fie mai mare decât înălțimea imaginii. Metoda tabelului CSSS-a menționat mai sus că proprietatea vertical-align este folosită pentru celulele tabelului, unde funcționează excelent. Putem afișa elementul nostru ca o celulă de tabel și putem folosi proprietatea de aliniere verticală pentru a centra vertical conținutul. Nota: Un tabel CSS nu este același lucru cu un tabel HTML. HTML:
Conţinut
CSS:#părinte (afișare: tabel;) #copil (afișare: tabel-celulă; vertical-align: mijloc; ) Setăm ieșirea tabelului la elementul div părinte și ieșim elementul div imbricat ca o celulă de tabel. Acum puteți utiliza proprietatea de aliniere verticală pe containerul interior. Totul din el va fi centrat vertical. Spre deosebire de metoda de mai sus, în acest caz conținutul poate fi dinamic deoarece elementul div își va schimba dimensiunea în funcție de conținutul său. Dezavantajul acestei metode este că nu funcționează în versiunile mai vechi de IE. Trebuie să utilizați proprietatea display: inline-block pentru containerul imbricat. Poziționare absolută și marje negativeAceastă metodă funcționează și în toate browserele. Dar necesită ca elementului centrat să i se acorde o înălțime. Exemplul de cod efectuează centrarea orizontală și verticală în același timp: HTML:
Conţinut
CSS:#părinte (poziție: relativ;) #copil (poziția: absolut; sus: 50%; stânga: 50%; înălțime: 30%; lățime: 50%; marjă: -15% 0 0 -25%; ) Mai întâi, setăm tipul de poziționare a elementului. Apoi, setăm proprietățile de sus și stânga ale elementului div imbricat la 50%, ceea ce corespunde centrului elementului părinte. Dar centrul este colțul din stânga sus al elementului imbricat. Prin urmare, trebuie să îl ridicați (jumătate din înălțime) și să îl mutați la stânga (jumătate din lățime), iar apoi centrul va coincide cu centrul elementului părinte. Deci este necesară cunoașterea înălțimii elementului în acest caz. Apoi setăm elementul cu margini negative de sus și stânga egale cu jumătate din înălțime și, respectiv, lățime. Această metodă nu funcționează în toate browserele. Poziționare și întindere absolutăExemplul de cod efectuează centrarea verticală și orizontală. HTML:
Conţinut
CSS:#părinte (poziție: relativă;) #copil (poziția: absolut; sus: 0; jos: 0; stânga: 0; dreapta: 0; lățime: 50%; înălțime: 30%; margine: auto; ) Ideea din spatele acestei metode este de a întinde elementul imbricat la toate cele 4 margini ale elementului părinte prin setarea proprietăților de sus, jos, dreapta și stânga la 0. Setarea marjei pentru a genera automat pe toate părțile va seta valori egale pe toate cele 4 laturi și va centra elementul nostru div imbricat pe elementul său părinte. Din păcate, această metodă nu funcționează în IE7 și mai jos. Spații egale deasupra și dedesubtÎn această metodă, umplutura egală este setată în mod explicit în partea de sus și de jos a elementului părinte. HTML:
Conţinut
CSS:#părinte ( umplutură: 5% 0; ) #copil ( umplutură: 10% 0; ) Exemplul de cod CSS setează umplutura de sus și de jos pentru ambele elemente. Pentru un element imbricat, setarea căptușelii va servi pentru a-l centra vertical. Și umplutura elementului părinte va centra elementul imbricat în el. Unitățile de măsură relative sunt utilizate pentru a redimensiona dinamic elementele. Iar pentru unitățile de măsură absolute va trebui să faci calcule. De exemplu, dacă elementul părinte are o înălțime de 400 px, iar elementul imbricat este de 100 px, atunci este nevoie de 150 px de umplutură în partea de sus și de jos. 150 + 150 + 100 = 400 Utilizarea % vă permite să lăsați calculele în seama browserului. Această metodă funcționează peste tot. Dezavantajul este nevoia de calcule. Nota: Această metodă funcționează prin setarea căptușelii exterioare a unui element. De asemenea, puteți utiliza margini în cadrul unui element. Decizia de a folosi margini sau padding trebuie luată în funcție de specificul proiectului. div plutitorAceastă metodă folosește un element div gol care plutește și ajută la controlul poziției elementului nostru imbricat în document. Rețineți că div-ul plutitor este plasat înaintea elementului nostru imbricat în codul HTML. HTML:
Conţinut
CSS:#părinte (înălțime: 250px;) #floater ( plutitor: stânga; înălțime: 50%; lățime: 100%; margine-jos: -50px; ) #copil (clar: ambele; înălțime: 100px; ) Compensam div-ul gol la stânga sau la dreapta și îi setăm înălțimea la 50% din elementul părinte. În acest fel, va umple jumătatea superioară a elementului părinte. Deoarece acest div plutește, este eliminat din fluxul normal al documentului și trebuie să desfacem textul pe elementul imbricat. Exemplul folosește clear: both , dar este suficient să folosiți aceeași direcție ca decalajul unui element div plutitor gol. Marginea de sus a unui element div imbricat este direct sub marginea de jos a unui element div gol. Trebuie să mutăm elementul imbricat în sus cu jumătate din înălțimea elementului gol plutitor. Pentru a rezolva problema, utilizați o valoare negativă a proprietății marginii de jos pentru un element div vid plutitor. Această metodă funcționează și în toate browserele. Cu toate acestea, utilizarea acestuia necesită un element div gol suplimentar și cunoașterea înălțimii elementului imbricat. ConcluzieToate metodele descrise sunt ușor de utilizat. Dificultatea este că niciuna dintre ele nu este potrivită pentru toate cazurile. Trebuie să analizați proiectul și să îl alegeți pe cel care se potrivește cel mai bine cerințelor. Analizăm alinierea elementelor bloc în CCS. Asezam mai multe in centru DIV sau LI elemente. Ofer câteva dintre opțiunile mele pentru majoritatea cazurilor. Acest articol nu își propune să enumere toate opțiunile de aliniere și să rescrie ceea ce există deja undeva. Nu-mi amintesc de ce, dar de multe ori nu eram mulțumit de opțiunile oferite. Fie au existat blocuri fixe, fie totul s-a prăbușit în timpul aspectului adaptiv, sau alte neajunsuri. Uneori, pentru a vă alinia la centru, este suficient să adăugați câteva atribute și nu aveți nevoie de nimic complicat. De exemplu, la fel sunt. Mai jos sunt câteva opțiuni pentru aspectul adaptiv pentru alinierea blocurilor în centru, pe care eu eu folosesc pe site-urile lor. Și dacă prima este destul de comună, atunci poate că alte metode nici măcar nu vor fi descrise pe Internet exact în acest fel. Opțiunea 1Alinierea simplă a tuturor blocurilor la centrul paginii. Să ne concentrăm Conținut UL din 4 elemente LI, care sunt în bloc DIV cu clasa recipient. În acest caz, următoarele reguli în CSS sunt suficiente: Container ( Container ul ( Container li ( Obținem următoarea vedere: Există 4 elemente LI centrate aici. Când dimensiunea ecranului este redusă, elementele care nu se potrivesc sunt mutate în jos. Dacă blocuri LI cu aceste proprietăți nu sunt instalate în centru, ceea ce înseamnă că o altă proprietate interferează cu ele. De exemplu, aceasta ar putea fi proprietatea float:stânga sau afisare: tabel; sau altul. Acum puteți adăuga alte stiluri la structura de sus (în cadrul de bază de aliniere CSS). De exemplu, faceți blocuri de dimensiune fixă și indentați unul pe celălalt: Container li ( Obținem următoarele: Dar există un dezavantaj al acestei opțiuni. Blocurile sunt situate în centru, dar sunt distanțe uriașe la stânga și la dreapta. Ele pot fi reduse prin modificarea lățimii. Sau puteți face recipiente de aceeași dimensiune, astfel încât să existe indentări doar între containere și să nu fie niciuna în stânga și în dreapta. Apoi vom elimina margineași adăugați lățimea acestuia lăţime astfel încât să acopere complet zona. Container li ( Va exista o mică zonă de spațiu gol între blocuri. Și pentru a-l face și mai mare, vă puteți retrage în interior folosind parametrul căptușeală. În blocuri nu adaug în mod deliberat nimic în plus pentru a lăsa exact acele stiluri care afectează direct alinierea. Dar dacă faci același lucru, nu vei primi astfel de blocuri. Numai pentru că, în primul rând, trebuie să adăugați culoare blocului și, în al doilea rând, dacă este gol, puneți înălțime: 100px;. Alte atribute sunt pe placul tau. Versiunea finală este: În captura de ecran de mai sus, am lăsat alte zone ale site-ului, astfel încât să fie clar unde sunt limitele blocurilor, pentru că dacă acestea sunt adiacente marginii, atunci marginea în sine nu mai este vizibilă. Și în imagine, marginile albe din stânga și din dreapta sunt o aliniere diferită care nu are nimic în comun cu exemplul în cauză. Repet, blocurile în sine sunt adiacente marginilor, care nu sunt vizibile, deoarece blocurile le acoperă complet. Opțiunea 2Există multe modalități de a centra blocurile. Dar dacă trebuie să faci alinierea mai inteligentă, trebuie să-ți faci creierul. Din fericire, am venit cu o metodă interesantă în următoarele scopuri: Cum centrez toate div-urile astfel încât blocul de pe următoarea linie să fie aliniat la stânga? Avem următoarea structură: Blocul 1 Blocul 2 Blocul 3 Blocul 4 Blocul 5 Scriem cursuri pentru ei:
Arhiva-articol ( Lățime: calc(33,3333% - (0,666666666667 * 36px)); Vă rugăm să rețineți că dacă schimbați mărimile calc, atunci trebuie să ajustați experimental dimensiunile marginea. În caz contrar, blocurile nu vor fi centrate. Această aliniere trebuie făcută cu ochiul. Dar dacă există mai puține blocuri pe noua linie decât pe linia de mai sus, acest bloc singuratic va fi cu partea stângă. Și arată mult mai frumos decât atunci când pe linia următoare un singur bloc este situat în centru. Prin aplicarea tehnicii de mai sus, vom obține un aspect adaptiv, cu toate marginile egale, care nu se va deteriora la schimbarea dimensiunilor ecranului. Și dacă dorim ca versiunea mobilă să nu aibă 3 blocuri, ci 2, atunci în ccs pentru o rezoluție de 768 pixeli, vom împărți blocurile diferit: Ecran @media și (lățime maximă: 768 px) ( Să obținem aceleași blocuri în versiunea mobilă, dar cu două blocuri pe linie: Opțiunea 3Acum ne vom alinia folosind flex. Acesta poate părea modul ideal de a nivela, deoarece de fapt funcționează foarte simplu. Cu toate acestea, FLEX nu face față sarcinii descrise în opțiunea 2. Cel puțin, nu am reușit să obțin aceleași rezultate. La secțiunea următoare: Adăugarea stilurilor: #cssmenu ( #cssmenu ul ( #cssmenu > ul > li ( Primim: În exemplul dat: flex-wrap: wrap; Mută blocurile pe linia următoare dacă umplu containerul. În caz contrar, vor merge mai departe în afara ferestrei browserului. justificare-conținut: centru; Aliniem conținutul blocurilor la centru. Opțiunea 4O altă opțiune de aliniere folosind tehnologia flex. Avem un container cu două blocuri înăuntru. Avem nevoie de aceste 2 blocuri pentru a împărți lățimea în două laturi egale. Blocul 1 Blocul 2 Pentru a face acest lucru, vom scrie următoarele proprietăți în stiluri: Container ( Blocare ( Opțiunea 5Există o altă opțiune pentru centrarea blocurilor, dacă numărul lor este strict egal. De exemplu: există 9 blocuri, câte 3 pentru fiecare linie. Și știi că așa va rămâne mereu. De exemplu, creați o pagină de destinație și știți sigur că nu se va adăuga nimic inutil pe site între aceste blocuri. Deci, avem 9 blocuri de următorul tip (nu am duplicat liniile de 9 ori, dar rețineți că există 9 blocuri): Blocul 1 Blocul 2 Blocul 3 Aplicați stiluri pentru ele: Container-arhivă-pentru-articole ( Arhiva-articol ( Arhiva-articol:nth-child(1), Arhiva-articol:nth-child(2), Arhiva-articol:nth-child(3), Vom obține, de asemenea, un aspect adaptiv. Când ecranul este redus, blocul care nu se potrivește va merge în centrul de jos Avantajul acestui tip de centrare este că puteți face clar și clar adâncituri între blocuri. Principalul dezavantaj este că nimic nu poate fi plasat în interiorul blocurilor. Orice element: fie el div sau p sau altceva, va fi considerat ca un element intern al-lea copil. Ca rezultat, stilurile CSS vor fi suprapuse pe el și toate indentările făcute folosind margine vor muta blocurile diferit decât intenționat inițial. Există mai multe moduri fundamental diferite de a centra un obiect pe verticală folosind CSS, dar alegerea celui potrivit poate fi dificilă. Ne vom uita la unele dintre ele și vom face, de asemenea, un mic site web folosind cunoștințele acumulate. Alinierea pe centru vertical nu este ușor de realizat folosind CSS. Există multe moduri și nu toate funcționează în toate browserele. Să ne uităm la 5 metode diferite și la avantajele și dezavantajele fiecăreia. Exemplu. 1a metodaAceastă metodă presupune că setăm un element metoda de afișare ca tabel, după aceea putem folosi proprietatea vertical-align în ea (care funcționează diferit în diferite elemente).
Câteva informații utile care ar trebui să fie centrate.
Pro
Contra
a 2-a metodaAceastă metodă folosește poziționarea absolută a div-ului, cu partea superioară setată la 50% și margine-top minus jumătate din înălțimea conținutului. Aceasta implică faptul că obiectul trebuie să aibă o înălțime fixă, care este definită în stilurile CSS. Deoarece înălțimea este fixă, puteți seta overflow:auto; pentru un div care conține conținut, astfel, dacă conținutul nu se potrivește, vor apărea bare de defilare.
Conținut aici #conținut (poziția: absolut; sus: 50%; înălțime: 240px; margin-top: -120px; /* minus jumătate din înălțime */ )Pro
Contra
a 3-a metodaÎn această metodă, vom încheia conținutul div cu un alt div. Să-i setăm înălțimea la 50% (înălțime: 50%;) și marginea de jos la jumătate din înălțime (margin-bottom:-contentheight;). Conținutul va pluti și va fi centrat.
aici este continutul
Pro
Contra
Metoda a 4-a.Această metodă utilizează proprietatea position:absolute; pentru un div cu dimensiuni fixe (lățime și înălțime). Apoi îi setăm coordonatele de sus:0; jos:0; , dar din moment ce are o înălțime fixă, nu se poate întinde și este aliniată la centru. Aceasta este foarte asemănătoare cu metoda binecunoscută de centrare orizontală a unui element bloc cu lățime fixă (marja: 0 auto;).
Informații importante. #conținut( poziție: absolut; sus: 0; jos: 0; stânga: 0; dreapta: 0; margine: automat; înălțime: 240px; lățime: 70%; )Pro
Contra
Metoda a 5-aFolosind această metodă, puteți centra o linie de text. Pur și simplu setăm înălțimea textului (linie-înălțime) egală cu înălțimea elementului (înălțimea). După aceasta, linia va fi afișată în centru.
O oarecare linie de text #conținut( înălțimea: 100px; înălțimea liniei: 100px; )Pro
Contra
Această metodă este foarte utilă pentru elementele mici, cum ar fi centrarea textului într-un buton sau câmp de text. Acum știi cum să obții alinierea verticală la centru, hai să creăm un site web simplu care va ajunge să arate așa: Pasul 1Este întotdeauna bine să începeți cu marcajul semantic. Pagina noastră va fi structurată după cum urmează:
|
Nou
- Cum să adăugați corect o nouă partiție pe un hard disk?
- O recenzie a difuzoarelor Bluetooth JBL Flip3
- Formate de carte
- Conectarea și configurarea televizorului interactiv de la Rostelecom
- Cum să vă ștergeți contul de Instagram
- Tabletă Android sau iPad - ce să alegi?
- Cum se formatează corect o continuare a tabelului în Word
- Ce să faci dacă evoluezi offline
- Testarea procesorului pentru supraîncălzire
- Ce sunt serviciile publice Yesia