Poziționarea elementului Css3. CSS - Elemente de bloc de poziţionare
Un element bloc în HTML este un element care, implicit, ocupă întreaga lățime a elementului părinte. Elementul părinte poate fi un alt element de bloc sau o fereastră de browser. Puteți seta lățimea și înălțimea unui element de bloc folosind proprietățile CSS. Poziționarea elementelor bloc este procesul de poziționare a acestora în fereastra browserului și în raport cu ele folosind proprietățile CSS poziție, stânga, sus, dreapta și jos. Proprietatea de poziție CSS este concepută pentru a seta unul dintre cele patru tipuri de poziționare disponibile: statică (implicit), absolută, fixă și relativă. Proprietățile CSS rămase, și anume stânga , sus , dreapta și jos , sunt folosite pentru a seta distanțe relativ la marginile din stânga, sus, dreapta și inferioară ale elementului părinte. De asemenea, atunci când setați anumite proprietăți, elementele bloc se pot suprapune unele pe altele, iar această caracteristică poate fi folosită și pe site-uri web.
Poziționare implicită (statică)
Dacă nu ați specificat o poziție pentru un element bloc sau ați specificat static , care este același lucru, atunci elementele bloc sunt aranjate în ordine. Mai mult, următorul bloc (de exemplu: roșu) este situat pe o linie nouă. De asemenea, această poziționare nu este afectată de setarea distanțelor stânga, sus, dreapta și jos.
Poziționare absolută (absolută)
Cu poziționarea absolută, poziția unui element este specificată în raport cu marginile ferestrei browser utilizând distanțele specificate de proprietățile stânga, sus, dreapta și jos. Dacă specificați distanțele stânga și dreapta în același timp și acestea sunt în conflict între ele, atunci se acordă preferință stânga , același lucru este valabil și pentru sus și jos , în care distanța de sus are prioritate. Poziționarea absolută este foarte des folosită împreună cu poziționarea relativă în scopuri de proiectare, atunci când este necesar să se plaseze diferite elemente unul față de celălalt, poate fi folosită și pentru a crea meniuri derulante, aspectul site-ului etc.
Poziționare fixă
Poziționarea fixă este diferită de alte tipuri de poziționare și nu se mișcă odată cu conținutul pe măsură ce derulați pagina. Elementele de bloc cu poziție fixă sunt ancorate folosind proprietățile din stânga, sus, dreapta și jos la marginile ferestrei browserului. Poziționarea fixă este utilizată pentru a crea interfețe cadru (fereastra browserului este împărțită în mai multe zone), un meniu fix, un subsol fix al site-ului și blocuri „permanente” (listă de linkuri, butoane sociale etc.).
Poziționare relativă
Poziționarea relativă este specificată prin specificarea distanțelor stânga, sus, dreapta și jos în raport cu poziția sa curentă.
Cu toate acestea, această poziție de bloc poate fi creată și folosind proprietatea marjă.
Poziționarea relativă nu este distractiv de folosit singură, este folosită în mare parte împreună cu poziționarea absolută.
Să luăm în considerare opțiunile:
Unul dintre cele mai bune lucruri despre CSS este că stilurile ne oferă capacitatea de a poziționa conținutul și elementele pe o pagină în aproape orice mod imaginabil. Acest lucru adaugă structură designului nostru și ajută la creșterea vizuală a conținutului.
Există mai multe tipuri diferite de poziționare în CSS, fiecare dintre aceste tipuri având propriul său domeniu de aplicare. În acest capitol, vom analiza câteva cazuri de utilizare diferite — crearea de aspecte reutilizabile și poziționarea unică a elementelor de unică folosință — și vom descrie câteva metode pentru a face acest lucru.
Poziționare prin plutitor
O modalitate de a poziționa elementele pe o pagină este prin proprietatea float. Această proprietate este destul de versatilă și poate fi utilizată în multe moduri diferite.
În esență, proprietatea float preia un element, îl elimină din fluxul normal al paginii și îl poziționează la stânga sau la dreapta elementului său părinte. Toate celelalte elemente de pe pagină se vor înfăşura în jurul unui astfel de element. De exemplu, paragrafele se vor înfăşura în jurul unei imagini dacă elementul proprietatea float este setată.
Când proprietatea float este aplicată la mai multe elemente simultan, face posibilă crearea unui aspect cu elemente flotante lângă sau vizavi unul de celălalt, așa cum se arată într-un aspect cu mai multe coloane.
Proprietatea float ia mai multe valori, cele două cele mai populare fiind stânga și dreapta, care permit elementului să plutească la stânga sau la dreapta părintelui său.
Imag (float: stânga; )
plutește în practică
Să creăm un aspect general al paginii cu un antet în partea de sus, două coloane în centru și un subsol în partea de jos. În mod ideal, această pagină ar trebui să fie marcată cu elemente
,
,
Pentru referință, elementele plutitoare sunt poziționate de-a lungul marginii elementului părinte. Dacă nu există niciun părinte, elementul plutit va fi poziționat de-a lungul marginii paginii.
Când setăm un element să plutească, îl eliminăm din fluxul normal al documentului HTML. Acest lucru face ca lățimea implicită a acelui element să devină lățimea conținutului său. Uneori, cum ar fi atunci când creăm coloane pentru un aspect reutilizabil, acest comportament este nedorit. Acest lucru poate fi remediat prin adăugarea unei proprietăți de lățime cu o valoare fixă pentru fiecare coloană. În plus, pentru a preveni atingerea elementelor plutitoare între ele, determinând conținutul unui element să stea lângă altul, putem folosi proprietatea margine pentru a seta spațiul dintre elemente.
Mai jos extindem blocul anterior de cod adăugând o marjă și lățime pentru fiecare coloană pentru a modela mai bine rezultatul dorit.
float poate modifica valoarea de afișare a elementului
Pentru un element flotant, este de asemenea important să înțelegeți că elementul este eliminat din fluxul normal al paginii și că valoarea de afișare implicită a elementului se poate modifica. Proprietatea float se bazează pe valoarea de afișare a elementului care este setată la bloc și poate modifica valoarea de afișare implicită a elementului dacă nu este deja redată ca element bloc.
De exemplu, un element a cărui afișare este specificată ca inline , cum ar fi inline , ignoră orice proprietăți de înălțime sau lățime. Cu toate acestea, dacă specificați un float pentru un element inline, valoarea afișată se va schimba în bloc și apoi elementul poate prelua deja proprietățile de înălțime sau lățime.
Când plutim un element, trebuie să fim atenți la modul în care acesta afectează valoarea proprietății de afișare.
Pentru două coloane puteți seta float, o coloană la stânga și cealaltă la dreapta, dar pentru mai multe coloane va trebui să ne schimbăm abordarea. Să presupunem, de exemplu, că am dori să avem un rând de trei coloane între elementele noastre Şi
......
...
...
Pentru a aranja aceste trei elemente într-un rând cu trei coloane, trebuie să setăm float pentru toate elementele ca la stânga. De asemenea, trebuie să reglam lățimea luând în considerare coloanele suplimentare și așezându-le unul lângă celălalt.
Aici avem trei coloane, toate cu lățime și valoare de marjă egale și float setat la stânga .
Demonstrarea unui aspect cu trei coloane cu float
Curățarea și flotarea conținutului
Proprietatea float a fost concepută inițial pentru a permite conținutului să circule în jurul imaginilor. O imagine poate primi un float și tot conținutul din jurul acelei imagini curge în mod natural în jurul ei. Deși acest lucru funcționează excelent pentru imagini, proprietatea float nu a fost cu adevărat destinată să fie utilizată în scopuri de layout și poziționare și, prin urmare, vine cu câteva capcane.
Unul dintre aceste capcane este că, uneori, stilurile adecvate nu apar pe un element care este adiacent sau este părintele unui element plutit. Când un element este setat să plutească, acesta este eliminat din fluxul normal al paginii și, ca urmare, stilurile elementelor din jurul acelui element flotant pot fi afectate negativ.
Adesea, valorile proprietăților de marjă și de umplutură sunt interpretate incorect, determinându-le să se amestece în elementul plutit. Alte proprietăți pot fi, de asemenea, afectate.
O altă eroare este că uneori conținutul nedorit începe să se înfășoare în jurul elementului float. Eliminarea unui element din fluxul documentului permite tuturor elementelor din jurul elementului plutit să-l ocolească și să ocupe orice spațiu disponibil în jurul elementului plutit, ceea ce este adesea nedorit.
În exemplul nostru anterior cu două coloane, după ce am adăugat un float elementelor Şi
Demonstrație de aspect fără curățare plutitoare
Pentru a împiedica conținutul să se înfășoare în jurul elementelor flotante, trebuie să ștergem float-ul și să readucem pagina la fluxul normal. Ne vom uita la cum să curățăm flotoarele și apoi vom arunca o privire asupra conținutului lor.
Curățarea plutitoarelor
Ștergerea unui float are loc folosind proprietatea clear, care ia mai multe valori diferite: cele mai frecvent utilizate valori sunt stânga , dreapta și ambele .
Div (clar: stânga; )
Valoarea din stânga șterge flotoarele din stânga, în timp ce valoarea din dreapta șterge flotoarele din dreapta. Valoarea ambelor , totuși, va șterge flotoarele stânga și dreapta și este adesea cea mai ideală opțiune.
Revenind la exemplul nostru anterior, dacă folosim proprietatea clear cu o valoare a ambelor pe un element
Subsol (clar: ambele; )
Demonstrație de aspect cu curățare flotantă
Conținutul plutește
În loc să ștergeți float , o altă opțiune este să setați conținutul să float . Rezultatul va fi aproape același, dar conținutul float asigură într-adevăr că toate stilurile noastre se vor afișa corect.
Pentru a seta conținutul flotant, elementele flotante trebuie să fie în interiorul elementului părinte, acesta va acționa ca un container, lăsând fluxul documentului complet normal în afara acestuia. Stilul pentru acest element părinte este reprezentat de o clasă de grup, așa cum se arată aici:
Nu se întâmplă multe aici, dar, în esență, tot ce face CSS este să șterge toate elementele plutitoare din interiorul elementului de grup și să readucă documentul la fluxul normal.
Mai precis, pseudoelementele ::before și ::after, așa cum sa discutat în Lecția 4, generează dinamic elemente deasupra și dedesubtul unui element cu grup de clasă . Aceste elemente nu includ niciun conținut și sunt redate ca elemente de tabel, similar elementelor bloc. Un element generat dinamic după ce un element de grup șterge float în interiorul elementului de grup, la fel cum a făcut clear înainte. În cele din urmă, elementul de grup șterge, de asemenea, orice float care poate apărea înaintea lui în cazul în care există un float cu valoarea left sau right . De asemenea, este inclus un mic truc care face ca browserele mai vechi să se joace frumos.
Există mai mult cod aici decât clar: ambele comenzi, dar poate fi destul de util.
Având în vedere aspectul paginii noastre pe două coloane, am putea încheia Şi
Tehnica prezentată aici este cunoscută ca „clearfix” și este adesea văzută pe alte site-uri cu numele de clasă clearfix sau cf. Am ales să folosim grupul de nume de clasă deoarece reprezintă un grup de elemente și exprimă mai bine conținutul.
Atunci când elementele sunt setate să plutească, este important să monitorizați modul în care acestea afectează fluxul paginii și să vă asigurați că fluxul paginii este resetat prin ștergere sau prin conținut flotant, așa cum este prevăzut. În caz contrar, ținerea evidenței floaturilor poate provoca o mulțime de bătăi de cap, mai ales pe paginile care conțin mai multe rânduri, fiecare cu mai multe coloane.
În practică
Să ne întoarcem la site-ul Styles Conference și să încercăm să adăugăm floats la anumite conținuturi.
În primul rând, înainte de a aplica float oricărui element, să oferim conținut acelor elemente flotate adăugând clearfix la CSS-ul nostru. În fișierul main.css, chiar sub stilurile noastre de grilă, vom adăuga clearfix sub numele clasei de grup, la fel ca înainte.
În timp ce suntem aici, haideți să adăugăm puțin mai multe detalii logo-ului nostru. Să începem prin a plasa elementul sau o întrerupere de linie între cuvintele „Stiluri” și „Conferință” pentru a forța textul logo-ului nostru să apară pe două linii.
În CSS, vom adăuga o chenar în partea de sus a siglei noastre și niște căptușeală verticală, astfel încât logo-ul să poată „respira” liber.
floated, vrem să setăm conținutul să plutească . Părinte imediat pentru
este un element așa că îi vom adăuga o clasă de grup. Acest lucru va aplica stilurile clearfix pe care le-am setat mai devreme.
...
Element prinde contur, așa că haideți să aruncăm o privire asupra elementului
Spre deosebire de element cu toate acestea, nu vom aplica clasa direct elementului flotant. De data aceasta, vom adăuga o clasă la părintele elementului float și vom folosi un selector CSS unic pentru a selecta elementul și apoi îi vom da un float .
Să începem prin adăugarea clasei primary-footer la element
Acum că clasa primar-footer este setată pe element
/* ========================================= Subsol principal ====== ==================================== */ .primary-footer small ( float: left; )
Pentru a verifica - aici selectăm elementul , care ar trebui să fie în interiorul unui element cu o valoare a atributului de clasă primar-footer, cum ar fi elementul nostru
În cele din urmă, vom adăuga puțină căptușeală în partea de sus și de jos a elementului.
Subsol principal (padding-bottom: 44px; padding-top: 44px; )
Luând în considerare toate aceste modificări ale elementelor Şi
Orez. 5.01. Folosind mai multe elemente flotante Şi
Poziționare prin bloc inline
Pe lângă utilizarea float, un alt mod în care putem poziționa conținutul este folosirea proprietății de afișare în combinație cu valoarea inline-block. Metoda blocului inline, așa cum vom discuta mai târziu, este utilă în primul rând pentru aranjarea paginilor sau pentru a plasa elemente într-o linie unul lângă celălalt.
Amintiți-vă că valoarea blocului în linie pentru proprietatea de afișare afișează elemente într-o linie și le permite să preia toate proprietățile modelului casetei, inclusiv înălțimea , lățimea , padding , chenarul și marginea . Folosirea blocului inline ne permite să profităm din plin de modelul blocului fără a fi nevoie să ne facem griji cu privire la eliminarea oricăror flotări.
inline-block în practică
Să aruncăm o privire la exemplul nostru cu trei coloane de la început. Vom începe prin a salva codul HTML astfel:
......
...
...
Acum, în loc să plutesc pentru cele trei elemente ale noastre le vom schimba valoarea de afișare la inline-block , lăsând proprietățile marginii și lățimii așa cum erau anterior. Ca rezultat, CSS-ul nostru va arăta astfel:
Din păcate, acest cod în sine nu este suficient pentru a face trucul și ultimul element este împins la o nouă linie. Amintiți-vă, deoarece elementele bloc inline apar pe o linie unul lângă celălalt, ele includ un singur spațiu între ele. Când dimensiunea fiecărui spațiu individual este adăugată la valoarea lățimii și a marjei orizontale a tuturor elementelor dintr-un rând, lățimea totală devine prea mare, împingând ultimul element în afară. la o nouă linie. Pentru a afișa toate elementele pe o linie, ar trebui să eliminați spațiul alb dintre fiecare
.
Demonstrarea elementelor inline-block cu spațiu
Eliminarea spațiului dintre elementele blocului în linie
Există mai multe metode pentru eliminarea spațiului dintre elementele blocului în linie, iar unele sunt mai complexe decât altele. Ne vom concentra asupra celor mai simple două metode, ambele apar în HTML.
Prima soluție este să puneți fiecare etichetă nouă de element de deschidere pe aceeași linie cu eticheta de închidere a elementului anterior . În loc să folosim o linie nouă pentru fiecare element, ajungem să începem elementele pe aceeași linie. HTML-ul nostru ar putea arăta astfel:
...
...
...
...
Scrierea elementelor inline-block în acest fel asigură că nu există spațiu între astfel de elemente în HTML. Prin urmare, spațiul nu va apărea când pagina este afișată.
Demonstrarea elementelor inline-block fără spații
O altă metodă pentru eliminarea spațiului dintre elementele blocului inline este deschiderea unui comentariu HTML imediat după eticheta de închidere a elementului. Apoi închideți comentariul chiar înainte de eticheta de deschidere a următorului element. Acest lucru permite elementelor inline-block să înceapă și să se termine pe linii separate în HTML și va „comenta” orice spațiu potențial dintre elemente. Codul rezultat va arăta astfel:
...
...
...
...
Niciuna dintre aceste opțiuni nu este perfectă, dar sunt utile. Tind să prefer utilizarea comentariilor pentru o mai bună organizare, dar opțiunea pe care o alegeți depinde în întregime de dvs.
Creați machete reutilizabile
Când construiți un site, este întotdeauna cel mai bine să scrieți stiluri modulare care pot fi reutilizate în altă parte, iar aspectele reutilizabile sunt în partea de sus a listei de coduri reutilizabile. Aspectele pot fi create folosind elemente flotante sau blocuri inline, dar care funcționează cel mai bine și de ce?
Întrebarea dacă elementele flotante sau în bloc sunt mai bune pentru structura paginii este deschisă dezbaterii. Abordarea mea este de a folosi elemente inline-block pentru a crea o grilă sau un aspect de pagină și apoi să folosesc un float atunci când vreau ca conținutul să curgă în jurul elementului (care este pentru care au fost concepute floats atunci când lucrez cu imagini). În general, mi se pare mai ușor de lucrat cu elementele inline-block.
Cu toate acestea, folosește ceea ce funcționează cel mai bine pentru tine. Dacă ești mai familiarizat cu o abordare decât cu alta, atunci folosește-o.
Sunt noi specificații CSS în lucru - în special proprietăți flexibile și grid - care vă vor ajuta să decideți cum să vă aranjați cel mai bine paginile. Fii cu ochii pe aceste metode atunci când încep să apară.
În practică
Având o înțelegere fermă a machetelor reutilizabile, este timpul să implementăm unul pe site-ul nostru Styles Conference.
Pentru site-ul web Styles Conference vom crea un aspect cu trei coloane folosind elemente de bloc inline. Vom face acest lucru astfel încât să obținem trei coloane de aceeași lățime, sau două coloane cu lățimea totală împărțită între ele ca 2/3 pentru una și 1/3 pentru cealaltă.
Mai întâi, vom crea clase care definesc lățimea acestor coloane. Vom numi aceste două clase col-1-3 pentru o treime și col-2-3 pentru două treimi. În secțiunea Grid a fișierului nostru main.css, să mergem mai departe și să definim aceste clase și lățimile lor corespunzătoare.
Dorim ca ambele coloane să apară ca elemente de bloc inline. De asemenea, trebuie să ne asigurăm că alinierea lor verticală este setată în partea de sus a fiecărei coloane.
Să creăm doi selectoare noi care partajează afișarea și alinierea verticală .
Aruncă o privire la CSS din nou. Am creat două selectoare de clasă col-1-3 și col-2-3 separate prin virgulă. O virgulă la sfârșitul primului selector înseamnă că este urmată de un alt selector. După cel de-al doilea selector există o acoladă deschisă, care indică faptul că începe descrierea stilului. Folosind o virgulă pentru a separa selectoarele, putem lega un stil la mai mulți selectori în același timp.
Vrem să punem puțin spațiu între coloane pentru a ajuta la spargerea conținutului. Acest lucru se poate face prin adăugarea de umplutură orizontală la fiecare coloană.
Acest lucru funcționează bine, totuși, atunci când două coloane sunt plasate una lângă alta, lățimea spațiului dintre ele va fi de două ori mai mare decât spațiul de la marginea exterioară. Pentru a echilibra acest lucru, vom pune toate coloanele noastre într-o grilă și vom adăuga aceeași umplutură.
Să folosim clasa grid pentru a ne defini grila și apoi să dăm aceeași umplutură orizontală claselor grid, col-1-3 și col-2-3. Cu virgule care separă din nou selectoarele noastre, CSS-ul nostru arată astfel:
Când setăm căptușeală orizontală, trebuie să fim atenți. Amintiți-vă, în ultima lecție am creat un container cu clasa container pentru a centra tot conținutul nostru pe pagină cu o lățime de 960 de pixeli. În prezent, dacă ar fi să punem un element grilă în interiorul unui element container, umplutura orizontală a acestora s-ar prăbuși împreună și coloanele noastre nu ar apărea proporționale cu lățimea restului paginii.
Vom face acest lucru prin descompunerea vechiului set de reguli container în următoarele:
Acum orice element cu clasa container sau grid va avea o lățime de 960 de pixeli și va fi situat în centrul paginii. În plus, am păstrat umplutura orizontală existentă pentru orice element cu clasa container, mutându-l într-un set de reguli nou, separat.
Bine, toată partea grea a instalării rețelei este finalizată. Acum este timpul să lucrăm cu HTML-ul nostru și să vedem cum funcționează aceste clase.
Vom începe cu teaser-urile de pe pagina de start, în fișierul index.html, aliniate pe trei coloane. În prezent, tease-urile sunt împachetate în element cu clasa containerului. Vrem să schimbăm clasa containerului în grid, astfel încât să putem începe să plasăm coloane în interior.
...
...
...
...
Și, în sfârșit, deoarece fiecare dintre coloanele noastre este un element de bloc inline, trebuie să ne asigurăm că eliminăm orice spațiu alb dintre ele. Pentru a face acest lucru, vom folosi comentarii și vom adăuga documentație în fiecare secțiune pentru a ne organiza mai bine codul.
...
...
...
Pentru a verifica, am lăsat un comentariu pe rândul 3 care identifică secțiunea „Speakers” care o urmează. La sfârșitul rândului 7, deschidem un comentariu imediat după eticheta de închidere. În cadrul acestui comentariu, pe linia 9 definim următoarea secțiune „Program”. Apoi închideți comentariul de la începutul rândului 11, chiar înainte de eticheta de deschidere . O structură de comentarii similară apare pe rândurile 13 până la 17 între cele două elemente , chiar înainte de secțiunea Locație. În general, am comentat orice spațiu alb potențial între coloane, utilizând simultan aceleași comentarii pentru a identifica secțiunile noastre.
Acum avem o grilă reutilizabilă cu trei coloane care acceptă diferite aspecte, folosind lățimi de coloane de 1/3 și 2/3. Pagina noastră de pornire conține acum trei coloane, care separă toate teaser-urile.
Orez. 5.02. Pagina de pornire Styles Conference include acum un aspect cu trei coloane
Demo și cod sursă
Mai jos puteți vizualiza site-ul web Styles Conference în starea sa actuală, precum și descărca codul sursă curent al site-ului.
Poziționare unică a elementelor
Mai devreme sau mai târziu, toată lumea va dori să poziționeze un element cu precizie, dar elementele float sau inline-block nu permit un astfel de truc. Elementele flotante care elimină un element din fluxul paginii produc adesea rezultate nedorite, deoarece elementele din jur se înfășoară în jurul elementului flotant. Elementele de bloc inline, cu excepția cazului în care creăm coloane, pot fi destul de complicate când vine vorba de poziționarea corectă. Pentru situații ca aceasta, putem folosi proprietatea de poziție în combinație cu proprietățile de offset ale blocului.
Proprietatea de poziție determină modul în care elementul este poziționat pe pagină și dacă va fi afișat în fluxul normal de documente. Este folosit împreună cu proprietățile de offset ale blocului sus , dreapta , jos și stânga , care determină exact unde va fi poziționat elementul prin mișcarea elementului în direcții diferite.
În mod implicit, valoarea poziției fiecărui element este setată la static , ceea ce înseamnă că elementul există în fluxul normal al documentului și nu necesită nicio proprietate pentru a-l poziționa. Valoarea static este cel mai adesea suprascrisă de valoarea relativă sau absolută, pe care o vom analiza în continuare.
Poziționare relativă
Setarea proprietății de poziție la relativă permite elementelor să apară în fluxul normal al paginii, rezervând spațiu pentru element așa cum este intenționat și împiedicând alte elemente să curgă în jurul acestuia. Cu toate acestea, vă permite, de asemenea, să modificați poziția unui element folosind proprietățile offset. De exemplu, luați în considerare următoarele HTML și CSS:
cu clasa offset valoarea poziției este setată la relativă, precum și două proprietăți offset - stânga și sus. Acest lucru menține poziția inițială a elementului și altor elemente nu li se permite să se deplaseze în acea zonă. În plus, proprietățile offset mută elementul împingându-l cu 20 de pixeli din stânga și 20 de pixeli din partea de sus a locației originale.
Pentru elementele relativ poziționate, este important de știut că proprietățile de offset ale blocului determină unde va fi mutat elementul, având în vedere poziția sa inițială. Deci, o proprietate din stânga cu o valoare de 20 de pixeli împinge de fapt elementul la dreapta 20 de pixeli. O proprietate de sus cu o valoare de 20px va împinge apoi elementul în jos cu 20px.
Când poziționăm un element utilizând proprietățile de offset, elementul se suprapune pe elementul de sub el, mai degrabă decât să-l împingă în jos, așa cum o fac marja sau proprietățile de umplutură.
Poziționare absolută
Valoarea absolută pentru proprietatea de poziție diferă de valoarea relativă prin aceea că elementul poziționat absolut nu apare în fluxul normal al documentului, iar spațiul și poziția originală a elementului poziționat absolut nu sunt rezervate.
În plus, elementele poziționate absolut se deplasează în raport cu elementul părinte poziționat relativ cel mai apropiat. Dacă nu există un părinte poziționat relativ, atunci elementul poziționat absolut va fi poziționat relativ la element
. Aceasta este o mică informație; să aruncăm o privire la cum funcționează în interiorul unui cod:
În acest exemplu, elementul este poziționat în raport cu, dar nu include nicio proprietate de offset. Prin urmare, poziția sa nu se schimbă. Element
cu clasa offset include valoarea poziției ca absolută . Din moment ce elementul este elementul părinte poziționat relativ cel mai apropiat de
, apoi elementul
va fi pozitionat relativ la element
.
Pentru elementele relativ poziționate, proprietățile offset determină în ce direcție va fi mutat elementul în raport cu el însuși. Pentru elementele poziționate absolut, proprietățile offset determină în ce direcție va fi mutat elementul în raport cu cel mai apropiat părinte poziționat relativ.
Ca urmare a proprietăților din dreapta și de sus, elementul
va apărea la 20 de pixeli din dreapta și 20 de pixeli din partea de sus în interior
.
Din moment ce elementul
pozitionat absolut, nu este pozitionat in fluxul normal al paginii si se va suprapune oricarei elemente din jurul acesteia. Mai mult, poziția de pornire
nu este salvat și alte elemente pot ocupa acest loc. În general, majoritatea poziționării se pot întâmpla fără a utiliza proprietățile de poziție și proprietățile offset, dar în unele cazuri pot fi extrem de utile.
Relua
Învățarea cum să poziționați conținutul în HTML și CSS este un pas uriaș către stăpânirea acestor limbi. Adăugați la aceasta modelul bloc și suntem pe drumul nostru spre a deveni dezvoltatori front-end.
Poziționarea este unul dintre conceptele cheie în aspectul blocurilor. Odată ce înțelegi, multe vor deveni clare pentru tine, iar aspectul se va transforma din șamanism într-un proces semnificativ. Deci, acest articol se va concentra pe proprietățile CSS. poziţieŞi plutire.
1. poziție: static
Implicit, toate elementele de pe pagină au poziționare statică (poziție: static), ceea ce înseamnă că elementul nu este poziționat, și apare în document la locul său obișnuit, adică în aceeași ordine ca și în markupul html.
Nu este nevoie să atribuiți în mod specific această proprietate oricărui element, cu excepția cazului în care trebuie să modificați poziționarea setată anterior la valoarea implicită.
#conținut( poziție: static; )
2.poziție:rudă
Poziționarea relativă (poziție: relativă) vă permite să utilizați proprietățile de sus, jos, stânga și dreapta pentru a poziționa un element în raport cu locul în care ar apărea dacă ar fi poziționat normal.
Să mutăm #conținut cu 20 de pixeli în jos și 40 de pixeli spre stânga:
Observați că acum există spațiu gol unde ar fi fost blocul nostru #conținut. În urma blocului #conținut, blocul #footer nu s-a deplasat în jos pentru că #conținut își ocupă în continuare locul în document, deși l-am mutat.
În această etapă poate părea că poziționarea relativă nu este atât de utilă, dar nu te grăbi să tragi concluzii, mai târziu în articol vei afla la ce poate fi folosită.
3. poziție: absolută
Cu poziționarea absolută (poziție: absolută), elementul este eliminat din document și apare acolo unde îi spuneți.
Să mutăm, de exemplu, blocul #div-1a în colțul din dreapta sus al paginii:
Observați că de data aceasta, deoarece blocul #div-1a a fost eliminat din document, elementele rămase de pe pagină au fost poziționate diferit: #div-1b, #div-1c și #footer au fost mutate deasupra, în locul blocului eliminat. . Și blocul #div-1a în sine este situat exact în colțul din dreapta sus al paginii.
Astfel putem poziționa orice element în raport cu pagină, dar acest lucru nu este suficient. De fapt, trebuie să poziționăm #div-1a în raport cu blocul părinte #content. Și în acest moment, poziționarea relativă intră din nou în joc.
4. poziție: fixă
Poziționarea fixă (poziție: fixă) este o subsecțiune a poziționării absolute. Singura sa diferență este că se află întotdeauna în zona vizibilă a ecranului și nu se mișcă în timp ce derulați pagina. În acest sens, este un pic ca o imagine de fundal fixă.
În IE cu poziție: fix, nu totul este atât de lin pe cât ne-am dori, dar există multe feluri ocoliți aceste restricții.
5. poziție:relativ + poziție:absolut
Atribuind o poziție relativă blocului #conținut (poziție: relativă), putem poziționa orice element copil față de limitele acestuia. Să plasăm un bloc #div-1a în colțul din dreapta sus al blocului #conținut.
Unul dintre avantajele poziționării absolute este capacitatea de a plasa elemente în orice ordine, indiferent de modul în care sunt amplasate în marcaj. În exemplul de mai sus, blocul #div-1b este plasat înaintea blocului #div-1a.
Și acum ar trebui să aveți o întrebare: „Unde au ajuns restul elementelor din exemplul nostru?” S-au ascuns sub blocuri perfect plasate. Din fericire, există o modalitate de a remedia acest lucru.
7. Două coloane cu înălțime fixă
O soluție este de a da o înălțime fixă containerului care conține coloanele.
Soluția nu este foarte potrivită, deoarece nu știm niciodată dinainte ce dimensiune va fi plasat textul în coloane și ce font va fi folosit.
8. Plutitor
Pentru coloanele cu înălțime variabilă, poziționarea absolută nu este o opțiune, așa că să ne uităm la o altă opțiune.
Atribuind un float blocului, îl împingem cât mai mult posibil spre marginea din dreapta (sau din stânga), iar textul care urmează blocului va curge în jurul lui. Această tehnică este de obicei folosită pentru imagini, dar o vom folosi pentru o sarcină mai complexă, deoarece este singurul instrument de care dispunem.
#div-1a ( float:left; width:200px; )
9. Difuzoare „plutitoare”.
Dacă atribuim float: stânga primului bloc și apoi float: stânga celui de-al doilea, fiecare bloc va fi împins la marginea stângă și vom obține două coloane, cu înălțime variabilă.
Dar acum avem o altă problemă - coloanele se extind dincolo de containerul părinte, rupând astfel întregul aspect. Aceasta este cea mai frecventă problemă pentru designerii de layout începători, deși poate fi rezolvată destul de simplu.
10. Plutitor de curățare
Curățarea plutitoarelor se poate face în două moduri. Dacă există un alt bloc după coloane, este suficient să îi atribuiți clear: ambele.
Sau atribuiți proprietatea overflow: hidden containerului părinte
#conținut ( overflow:hidden; )
În orice caz, rezultatul va fi același.
Concluzie
Astăzi, au fost luate în considerare doar tehnicile de poziționare de bază și cele mai simple exemple. De asemenea, pentru a-i ajuta pe designerii de layout începători, recomand întotdeauna o serie de articole de Ivan Sagalayev, care la un moment dat m-au ajutat foarte mult.
Locație neobișnuită!
Decideți ce element să afișați în față!
Elementele se pot suprapune!
Poziționare
Proprietățile de poziționare CSS vă permit să poziționați un element. De asemenea, pot poziționa un element în spatele altuia și pot specifica ce ar trebui să se întâmple atunci când conținutul elementului este prea mare.
Elementele pot fi poziționate folosind proprietățile de sus, jos, stânga și dreapta. Cu toate acestea, aceste proprietăți nu vor funcționa decât dacă proprietatea poziției este setată. De asemenea, funcționează diferit în funcție de metoda de poziționare.
Există patru metode diferite de poziționare.
Poziționare statică
Elementele HTML sunt poziționate static în mod implicit. Un element poziționat static este întotdeauna poziționat conform fluxului standard de elemente de pe pagină.
Elementele poziționate static nu sunt afectate de proprietățile de sus, jos, stânga și dreapta.
Poziționare fixă
Un element cu poziție fixă este poziționat în raport cu fereastra browserului.
Nu se va mișca chiar dacă fereastra este derulată:
Comentariu: IE7 și IE8 acceptă valoarea fixă numai dacă este specificat tipul de document!DOCTYPE.
Elementele fixe sunt îndepărtate din fluxul normal. Documentul și alte elemente se comportă ca și cum elementul fix nu ar exista.
Elementele fixe se pot suprapune cu alte elemente.
Poziționare relativă
Un element poziționat relativ este poziționat în raport cu poziția sa normală.
Elementele poziționate relativ sunt adesea folosite ca containere pentru elementele poziționate absolut.
Poziționare absolută
Un element poziționat absolut este poziționat în raport cu primul element părinte care este poziționat altfel decât static. :
Dacă nu se găsește un astfel de element, elementul părinte este luat ca
Elementele poziționate absolut sunt îndepărtate din fluxul de elemente standard. Documentul și alte elemente se comportă ca și cum elementul poziționat absolut nu ar exista.
Elementele poziționate absolut se pot suprapune cu alte elemente.
Elemente suprapuse
Atunci când elementele sunt situate în afara fluxului standard, ele se pot suprapune cu alte elemente.
Proprietatea z-index specifică ordinea verticală a unui element (care ar trebui să fie plasat în fața sau în spatele altor elemente).
Un element poate avea ordine verticală pozitivă sau negativă:
Comentariu: Un element cu o ordine verticală mai mare se află întotdeauna în fața elementelor cu o ordine verticală mai mică.
Dacă două elemente poziționate se suprapun și nu este specificată nicio ordine verticală, elementul situat mai târziu în codul HTML va fi afișat în partea de sus.
Mai multe exemple Setarea formei elementului
Acest exemplu demonstrează cum se definește forma unui element. Elementul este tăiat la această formă și apoi afișat. Cum să afișați un element depășit folosind derularea
Acest exemplu demonstrează cum să setați proprietatea overflow pentru a crea o bară de derulare atunci când conținutul elementului este prea mare pentru a se potrivi în zona specificată. Cum să forțați browserul să gestioneze automat overflow
Acest exemplu demonstrează cum să forțezi browserul să gestioneze automat overflow. Schimbarea cursorului
Acest exemplu demonstrează cum se schimbă cursorul.
Toate proprietățile de poziționare CSS
Numărul din coloana „CSS” indică în ce versiune de CSS este definită proprietatea (CSS1 sau CSS2).
Proprietate
Descriere
Valori
În HTML, toate elementele pot fi împărțite în bloc și inline. Elementele bloc sunt de obicei reprezentate ca zone dreptunghiulare cu o anumită cantitate de informații. Cu ajutorul lor, se construiește grila de pagini. Astfel de elemente ocupă tot spațiul disponibil în lățime și, de obicei, există o întrerupere de linie înainte și după ele. Blocurilor pot fi date indentări, dimensiuni orizontale și verticale.
Caracteristicile elementelor bloc
Etichetele bloc includ etichete care evidențiază o cantitate mare de informații text: