Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • OS
  • Pozicioniranje elemenata. CSS - Pozicioniranje blok elemenata

Pozicioniranje elemenata. CSS - Pozicioniranje blok elemenata

Od autora: Pozdrav. Pozicioniranje css elemenata je veoma važna tema u izgradnji sajta. U ovom članku predlažem da ga detaljnije razmotrimo, sve načine pomicanja blokova po web stranici.

Koje su vrste

Ako govorimo o pozicioniranju blok elemenata, onda se ono postavlja pomoću svojstva položaja. Ima četiri značenja i svako zaslužuje posebno razmatranje.

Apsolutno pozicioniranje

Ovo je prva poznata vrsta. Postavlja se ovako: pozicija: apsolutna. Nakon toga blok gubi svoja uobičajena svojstva i potpuno ispada iz normalnog toka. Šta je ovo stream? Pokušajte staviti nekoliko blok elemenata u nizu u označavanju. Kako će oni postati? Jedan za drugim, a ne drugačije.

Ovo je normalno zadano ponašanje blokova. Ali šta se dešava sa blokom koji ima definisano apsolutno pozicioniranje? Potpuno ispada iz normalnog toka, drugi blokovi jednostavno prestaju da ga primećuju, kao da nikada nije postojao, ali element ostaje na stranici. Apsolutno pozicioniranje u css-u se često koristi za precizno postavljanje dekorativnih elemenata, ikona i drugih dizajnerskih stvari.

Sada se može pomicati koristeći svojstva lijevo, desno, gornje i donje. Podrazumevano, pomeranje se dešava u odnosu na ivice prozora pretraživača, ali ako roditeljski element ima položaj: relativan, onda se pomak javlja u odnosu na roditeljski blok.

Blok (pozicija: apsolutna; dole: 0; desno: 0;)

Blokiraj (

pozicija: apsolutna;

dno: 0;

desno: 0;

Element će biti pomaknut u donji desni ugao. Primjećujem da se gornje dugme često radi na ovaj način - samo ga postavljaju apsolutno u sam ugao. Evo još jednog primjera u kojem vam prvo pokazujem moguće oznake:

< div id = "wrapper" >

< div class = "block" > < / div >

< / div >

A sada css stilovi za ovaj isječak:

#wrapper (pozicija: relativna;) .block (pozicija: apsolutna; vrh: 0; desno: 10px;)

#wrapper (

položaj: relativan;

Blokiraj (

pozicija: apsolutna;

vrh: 0;

desno: 10px;

U ovom primjeru, prvo smo zapisali relativno pozicioniranje na roditeljski kontejner (relativno - o tome kasnije u članku), a zatim postavili apsolutno pozicioniranje za isti .block element. Kao rezultat toga, koordinate će se brojati ne iz samog prozora pretraživača, već od rubova roditeljskog elementa, odnosno bloka omotača.

Relativno pozicioniranje css elemenata

Ovo je sljedeći pogled i piše se ovako - pozicija: relativna. Koordinate se postavljaju sa istim svojstvima kao i za apsolutnu poziciju. Jedina značajna razlika je u tome što element formalno ne ispada iz toka - za njega ima mjesta.

Ova vrijednost funkcionira kao vidljivost: hidden, kada je element skriven sa stranice, ali je prostor ispod njega ostavljen netaknut. Isto se dešava i sa relativnim postavljanjem - blok se može pomeriti bilo gde, ali prostor za njega ostaje prazan i drugi delovi ga neće uzeti.

Takođe je važno znati da se pomak ne dešava od ivica prozora veb pretraživača, već od mesta gde je blok prvobitno stajao. To je:

Blok (pozicija: relativna; gore: 10px; desno: 50px;)

Blokiraj (

položaj: relativan;

vrh: 10px;

desno: 50px;

Blok će se pomjeriti 50 piksela udesno i 10 piksela ulijevo.

Fiksacija

Sigurno ste na internetu više puta vidjeli na stranicama da prilikom skrolovanja neki baner nije nestao, već je nastavio biti u vašoj zoni vidljivosti, kao da se drži na jednom mjestu. Ovo se uglavnom radi pomoću fiksnog pozicioniranja. Da biste to učinili, trebate napisati:

Položaj: statičan ili normalan statički položaj

Posljednja vrsta je statična, ovo je uobičajeno ponašanje blok elemenata. Ne treba je pisati, jer je po defaultu, ali još uvijek morate znati za četvrtu vrijednost. Ponekad se piše sa position: static da se poništi drugačija vrsta pozicioniranja na određenim događajima na web stranici.

Kako da pravilno pozicioniram blokove u css?

Razmotrili smo značenja, ali to nije dovoljno da zatvorimo ovu temu za sebe. Zapravo, morate razumjeti gdje i koje vrste pozicioniranja treba primijeniti. Već sam vam dao primjer sa fiksnim - možete ga koristiti za kreiranje ljepljivih bočnih traka, zaglavlja ili podnožja.

Relativno pozicioniranje može pomoći kada trebate pomaknuti blok malo u odnosu na njegovu poziciju i dalje ga držati u toku. Također je postavljeno na roditeljske blokove za korištenje apsolutnog kretanja za djecu.

Ostali trikovi: centriranje, plutajući blokovi

Svojstvo položaja ne rješava sve probleme s rasporedom blok elemenata. Kako biste, na primjer, kreirali mrežu web stranice koristeći je? Nemam dobrih ideja. Ovdje u pomoć priskaču i druge nekretnine.

Mreže se često prave pomoću float-a u css-u. Svojstvo vam omogućava da gurnete blok na lijevu ili desnu ivicu nadređenog (float: lijevo, float: desno), dopuštajući da nekoliko elemenata bloka postanu u jednom redu, što je uobičajeno na bilo kojoj lokaciji.

Centriranje se radi ovako: blok treba upisati određenu širinu, a zatim postaviti marginu svojstva: 0 na auto. To je automatska vrijednost koja će je poravnati vodoravno tačno do centra. Naravno, za to mora biti jedini u svojoj liniji, inače ništa neće raditi.

Sve vrste pozicioniranja navedene u ovom članku mogu biti korisne za web programere. Negdje treba ubaciti ikonu (pozicija: apsolutna), negdje malo korigirati poziciju bloka, ostavljajući mjesto iza njega (pozicija: relativna), a gdje widget treba fiksirati (pozicija: fiksna). Općenito, poznavanje ove imovine definitivno neće biti suvišno.

Pa, da biste naučili još više iz svijeta izrade web stranica, svakako se pretplatite na naš blog i primajte nove materijale za obuku. A savjetujem vam da pogledate i našu, gdje se također pokreće slična tema. (pozicioniranje predmeta)

Vlad Merzhevich

Pozicioniranje se odnosi na položaj elementa u koordinatnom sistemu. Postoje četiri vrste pozicioniranja: normalno, apsolutno, fiksno i relativno. U zavisnosti od tipa, koji se postavlja kroz svojstvo položaja, menja se i koordinatni sistem.

Zahvaljujući kombinaciji svojstava položaja, lijevo, gornje, desno i donje, element se može superponirati jedan na drugi, prikazati u tački sa određenim koordinatama, fiksirati na određenom mjestu, odrediti položaj jednog elementa u odnosu na drugi, itd. Kao i druga CSS svojstva, kontrola pozicioniranja je dostupna putem skripti. Tako možete dinamički mijenjati položaj elemenata bez ponovnog učitavanja stranice, kreiranja animacija i raznih efekata.

Normalno pozicioniranje

Ako svojstvo pozicije nije postavljeno za element ili je statičko, element se prikazuje u toku dokumenta kao i obično. Drugim riječima, elementi se prikazuju na stranici redoslijedom kojim se pojavljuju u HTML izvoru.

Svojstva lijevo, gore, desno, dolje, ako su specificirana, zanemaruju se.

Apsolutno pozicioniranje

Sa apsolutnim pozicioniranjem, element ne postoji u toku dokumenta i njegova pozicija je relativna u odnosu na ivice pretraživača. Ovaj tip možete postaviti kroz apsolutnu vrijednost svojstva pozicije. Koordinate se određuju u odnosu na ivice prozora pretraživača, koje se nazivaju "vidljivo područje" (slika 3.42).

Rice. 3.42. Lijevo, desno, gornje i donje vrijednosti svojstva kada su pozicionirane na apsolutno

Režim ima sljedeće karakteristike.

  • Širina sloja, ako nije eksplicitno postavljena, je širina sadržaja plus vrijednosti margine, granice i dopuna.
  • Sloj ne mijenja svoju prvobitnu poziciju ako nema svojstva desno, lijevo, gornje i donje.
  • Lijeva i gornja svojstva imaju prednost nad desnim i donjim svojstvima. Ako su lijeva i desna u suprotnosti jedna s drugom, tada se vrijednost desnice zanemaruje. Isto važi i za dno.
  • Ako je lijevo postavljeno na negativnu vrijednost, sloj će ići dalje od lijeve ivice pretraživača i traka za pomicanje se neće pojaviti. Ovo je jedan od načina da sakrijete element od pogleda. Isto vrijedi i za svojstvo vrha, samo će sloj proći preko gornje ivice.
  • Ako je lijevo postavljeno na vrijednost veću od širine vidljivog područja, ili ako je desno navedeno negativnom vrijednošću, pojavljuje se horizontalna traka za pomicanje. Slično pravilo radi sa vrhom, samo se tiče vertikalne trake za pomicanje.
  • Istovremeno, navedena svojstva lijevo i desno formiraju širinu sloja, ali samo ako širina nije navedena. Dodajte svojstvo širine i prava vrijednost će biti zanemarena. Isto će se dogoditi i sa visinom sloja, samo su svojstva vrha, dna i visine već uključena.
  • Apsolutno pozicionirani element pomiče se s dokumentom dok se pomiče.

Svojstvo položaja postavljeno na apsolutno može se koristiti za kreiranje efekta okvira. Pored apsolutnog pozicioniranja, elementima se mora dodijeliti svojstvo prelijevanja sa auto vrijednošću. Zatim, kada sadržaj premaši visinu vidljivog područja, pojavit će se traka za pomicanje. Visina i širina "ramova" se automatski generišu korišćenjem osobina levo, desno za širinu i vrh, dole za visinu istovremeno (primer 3.31).

Primjer 3.31. Izrada analoga okvira

Apsolutno pozicioniranje

Fergana pilaf

Meso isečeno na komade stavite u kotao i pržite dok se ne stvori korica. Luk nasjeckan na kolutove zajedno sa mesom propržiti do crvenkaste boje, zatim dodati šargarepu narezanu na trakice. Dodajte pola soli, sve promiješajte i pržite dok šargarepa ne porumeni. Nakon toga prelijte polovinom potrebne količine vode i pustite da proključa.

Pokrijte pirinač ujednačenim slojem, pojačajte vatru i odmah sipajte vodu tako da pokrije pirinač za 1-1,5 cm. Čim voda ispari, sakupite pilav površinom, otišao na dno. Zatim poklopite pilav i ostavite da odstoji 20-25 minuta.

Gotov pilaf dobro promiješajte, prebacite u veliku posudu, na vrh rasporedite meso.

Rezultat ovog primjera prikazan je na sl. 3.43. Sloj zaglavlja se prikazuje u streamu kao i obično, a bočna traka i slojevi sadržaja su postavljeni na apsolutno pozicioniranje.

Rice. 3.43. Primjena apsolutnog pozicioniranja

U IE6, apsolutno pozicionirani elementi ne mogu biti postavljeni na svojstva lijevo, desno i gornje, donje u isto vrijeme.

Apsolutno pozicioniranje se takođe koristi za kreiranje različitih efekata, kao što su opisi alata za fotografije. Za razliku od atributa title oznake koji također prikazuje tekst opisa alata, kroz stilove možete kontrolirati izgled teksta koji se prikazuje pomoću skripte.

Prvo, napravimo prazan sloj sa floatTip ID-om i definiramo njegov stil. Moraju biti potrebna tri svojstva stila - pozicija sa apsolutnom vrijednošću, prikaz s vrijednošću none skriva sloj, a širina postavlja širinu sloja nagoveštaja. Ostala svojstva se koriste na zahtjev programera i namijenjena su za promjenu izgleda sloja (primjer 3.32).

Primjer 3.32. Stil opisa alata

#floatTip (položaj: apsolutna; / * Apsolutno pozicioniranje * / širina: 250px; / * Širina bloka * / prikaz: nema; / * Sakrij sa prikaza * / granica: 1px solid # 000; / * Opcije okvira * / padding: 5px ; / * Margine oko teksta * / porodica fontova: sans-serif; / * Isječeni font * / veličina fonta: 9pt; / * Veličina fonta * / boja: # 333; / * Boja teksta * / pozadina: # ECF5E4; /* Boja pozadine */ )

Sama skripta se sastoji od dvije funkcije - moveTip () prati kretanje miša i mijenja položaj sloja u skladu s koordinatama kursora, a toolTip () kontrolira vidljivost sloja i prikazuje željeni tekst u njemu (primjer 3.33).

Primjer 3.33. Skripta za izlaz sloja

Document.onmousemove = moveTip; funkcija moveTip (e) (floatTipStyle = document.getElementById ("floatTip"). style; w = 250; // Širina sloja // Za IE pretraživač if (document.all) (x = event.x + document.body.scrollLeft ; y = event.y + document.body.scrollTop; // Za druge pretraživače) else (x = e.pageX; // X koordinata kursora y = e.pageY; // Y koordinata kursora) // Prikaži sloj desno od kursora ako ((x + w + 10)< document.body.clientWidth) { floatTipStyle.left = x + "px"; // Показывать слой слева от курсора } else { floatTipStyle.left = x - w + "px"; } // Положение от верхнего края окна браузера floatTipStyle.top = y + 20 + "px"; } function toolTip(msg) { floatTipStyle = document.getElementById("floatTip").style; if (msg) { // Выводим текст подсказки document.getElementById("floatTip").innerHTML = msg; floatTipStyle.display = "block"; // Показываем слой } else { floatTipStyle.display = "none"; // Прячем слой } }

Radi praktičnosti i svestranosti, skriptu treba staviti u zasebnu datoteku i povezati preko src atributa oznake

Objektiv "+": Canon EF 24-105 f / 4L IS USM
Blic "+": Canon Speedlite 580 EX
"+" Ekspozicija: 1/125
Otvor blende: 5,6 ")" onmouseout = "toolTip ()" />

Rezultat ovog primjera prikazan je na sl. 3.44. Imajte na umu da prelamanja teksta u pozivu funkcije toolTip () služe za čitljivost i koriste JavaScript sintaksu. U Safariju, skripta ponekad ne radi sa prelamanjem teksta, u kom slučaju tekst treba pisati u jednom redu. Dodano je CSS3 svojstvo neprozirnosti stilovima, što sloju dodaje malo transparentnosti. Prije IE 9.0, ovo svojstvo nije podržano.

Rice. 3.44. Objašnjenje prikazano sa JavaScript-om

Fiksna pozicija

Fiksna pozicija sloja je postavljena svojstvom fiksne pozicije i po efektu je slična apsolutnom pozicioniranju. Ali za razliku od njega, vezuje se za određenu lijevu, gornju, desnu i donju tačku na ekranu i ne mijenja svoju poziciju prilikom pomicanja web stranice. Još jedna razlika od apsolutnog je da kada fiksni sloj napusti vidljivo područje desno ili ispod njega, ne pojavljuju se trake za pomicanje.

Ova vrsta pozicioniranja se koristi za kreiranje menija, kartica, zaglavlja, općenito, svih elemenata koji bi trebali biti zakačeni na stranici i uvijek vidljivi posjetitelju. Primer 3.35 prikazuje dodavanje podnožja, koje ostaje na jednom mestu, bez obzira na količinu informacija na sajtu.

Primjer 3.35. Uređen podrum

XHTML 1.0 CSS 2.1 IE Cr Op Sa Fx

Uređen podrum

Sve metode za hvatanje lava navedene na stranici su teorijske i bazirane na računskim metodama. Autor ne jamči vašu sigurnost prilikom korištenja i odriče se bilo kakve odgovornosti za rezultat. Zapamtite, lav je grabežljivac i opasna životinja!

Rezultat primjera prikazan je na sl. 3.45. Pošto fiksno podnožje preklapa tekst i sakriva ga, dodali smo donji padding za BODY selektor. IE6 ne podržava fiksnu vrijednost, tako da ovaj primjer neće raditi ispravno u njemu.

Rice. 3.45. Podnožje na dnu stranice

Relativno pozicioniranje

Ako postavite relativno svojstvo svojstva pozicije, tada je pozicija elementa relativna u odnosu na njegovu originalnu poziciju. Dodavanje lijevih, gornjih, desnih i donjih svojstava mijenja položaj elementa i pomiče ga na jednu ili drugu stranu od prvobitne pozicije. Pozitivna vrijednost za lijevo specificira pomak desno od lijeve ivice elementa, negativna vrijednost specificira pomak ulijevo. Pozitivna vrijednost vrha specificira pomak elementa prema dolje (slika 3.46), negativna vrijednost specificira pomak prema gore.

Rice. 3.46. Lijevo i gornje vrijednosti svojstva za relativno pozicioniranje

Donja i desna svojstva imaju suprotan efekat. Ako je vrijednost pozitivna, desno pomiče element lijevo od njegove desne ivice, ako je negativna, pomiče ga udesno (slika 3.47). Pozitivna vrijednost dna pomiče element gore, a negativna vrijednost ga pomiče dolje.

Rice. 3.47. Desno i donje vrijednosti svojstva za relativno pozicioniranje

Relativno pozicioniranje ima sljedeće karakteristike.

  • Ova vrsta pozicioniranja nije primjenjiva na elemente tablice kao što su ćelije, redovi, stupci itd.
  • Kada se element pomakne u odnosu na svoju prvobitnu poziciju, mjesto koje element zauzima ostaje prazno i ​​nije ispunjeno elementima ispod ili iznad.

Primer 3.36 pokazuje pomeranje teksta naslova nadole kako bi mu se dao poseban stil pisanja.

Primjer 3.36. Naslov teksta

XHTML 1.0 CSS 2.1 IE Cr Op Sa Fx

Naslov

Az i bukve nauke o fontovima

Pismo je sredstvo za izražavanje dizajna, a ne neko trivijalno čitanje.

Rezultat ovog primjera prikazan je na sl. 3.48.

Rice. 3.48. Pomeranje teksta sa prvobitne pozicije

Ugniježđeni slojevi

Obično se samo relativno pozicioniranje često ne koristi, jer postoji niz svojstava koja zapravo obavljaju istu ulogu, na primjer, ista margina. Ali kombiniranje različitih tipova pozicioniranja za ugniježđene slojeve jedna je od najprikladnijih i najpraktičnijih tehnika rasporeda. Ako postavite relativan za roditeljski element, a apsolutan za dijete, tada će se promijeniti koordinatni sistem i položaj podređenog elementa će biti naznačen u odnosu na njegov roditelj (slika 3.49).

Rice. 3.49. Lijevo, desno, gornje i donje vrijednosti svojstava u ugniježđenim slojevima

Koordinate se računaju od unutrašnje ivice granice; vrijednosti polja se ne uzimaju u obzir. Sljedeći primjer postavlja tekst u donji desni kut sloja blizu ivice, zanemarujući svojstvo paddinga.

Tekst

Koristeći četiri svojstva lijevo, desno, gore, dolje za kontrolu položaja unutrašnjeg sloja, ne morate znati veličinu nadređenog sloja. Time se širi opseg pozicioniranja, pa se pozicija prilično aktivno koristi u rasporedu različitih elemenata. Kao primjer, uzmimo preklapanje na fotografiju različitih informacija: broj komentara na nju, veze "Dodaj komentar", "Informacije o autoru" i "Dodaj u favorite". Općenito, rezultat bi trebao biti nešto poput Sl. 3.50.

Rice. 3.50. Fotografija sa postavljenim elementima

Sam kod je prikazan u primjeru 3.37. Sloj fotografije je postavljen na relativno pozicioniranje, a unutrašnji slojevi img (izlaz fotografije), komentar (broj komentara) i alat (linkovi na dnu fotografije) su postavljeni na apsolutno pozicioniranje.

Primjer 3.37. Pozicioniranje slojeva

XHTML 1.0 CSS 2.1 CSS 3 IE 7+ IE 9+ Cr Op Sa Fx

Pozicioniranje slojeva

134

Pozicioniranje css blokova jedna od najvažnijih faza izgleda, jer upravo to utiče na prilagodljivost sajta ili mogućnost njegove implementacije u budućnosti (ako to u ovom trenutku nije potrebno), a takođe ima značajan uticaj na dalje skaliranje sajta. mjesto. Nije neuobičajeno da "nesretni layout dizajneri" naprave takav raspored da ga je na kraju lakše izbaciti nego nešto promijeniti, ali u isto vrijeme može izgledati potpuno u skladu sa rasporedom. Ova situacija proizlazi iz nerazumijevanja gdje i kada koristiti ovu ili onu vrstu pozicioniranja. Danas ćemo pokušati razumjeti ovo pitanje. I tako, u css-u postoji svojstvo pozicija. Ovo svojstvo može imati 5 vrijednosti, ali ćemo razmotriti 4 glavne:

  • apsolutno
  • statički
  • relativno
  • fiksno

Apsolutno pozicioniranje blokova (apsolutno)

Prva na našoj listi je metoda apsolutnog pozicioniranja. Kada se ovo svojstvo dodijeli, blok postaje sam po sebi jedinica i ostali elementi stranice ne utječu na njegovu lokaciju, kao ni na druge elemente. Veličina okvira je određena svojstvima širine i visine, a pozicija na stranici određena je gornjim svojstvima. lijevo, desno i dolje ovi parametri postavljaju margine od gornjeg, lijevog, desnog i donjeg ruba. Ako blok nema roditeljski element, a također ako se pozicioniranje roditeljskog elementa razlikuje od statičkog, tada svojstva gornje, lijevo, donje, desno postavljaju uvlake od početka stranice, inače od rubova stranice. roditeljski element.

Najčešće se ova vrsta pozicioniranja koristi kada je blok potrebno pritisnuti na desnu ili donju ivicu. Razmislite o ovakvom rasporedu.

Radi praktičnosti, blokovi su istaknuti okvirom u više boja. Oznaka će izgledati ovako:

XHTML

Relacija (pozicija: relativna;) .žuta (pozicija: apsolutna; desna: 10px; dno: 10px;)

Relation

položaj: relativan;

Žuta

pozicija: apsolutna;

desno: 10px;

dno: 10px;

U ovom primjeru koristili smo desna i donja svojstva da bismo postavili uvlačenje od desne i donje ivice. Ove vrijednosti svojstva su ekvivalentne vrhu: visina elementa - 10px i lijevo: širina elementa - 10px.

Također, apsolutno pozicioniranje se ponekad koristi kada je potrebno napraviti "pregazanje" jednog elementa na drugi.

Statičko pozicioniranje

Najčešći tip pozicioniranja koji se javlja na svakoj stranici i obično je postavljen za većinu elemenata je statički, u css-u je napisan kao statički. Za većinu HTML oznaka, ova vrijednost je definirana po defaultu, tj. ako pozicija nije eksplicitno postavljena, tada će vrijednost biti statična. Ovim rasporedom elementi su poređani jedan iznad drugog, a koordinate u prozoru svakog elementa zavise od najbližih elemenata sa položajem: statički ili položaj: relativan. Svojstva gornje, lijevo, desno, donje neće raditi s ovim pozicioniranjem, pozicija se mijenja zbog svojstva margine.

Relativno pozicioniranje

Ova vrsta pozicioniranja je vrlo slična statičkom pozicioniranju, osim što se pozicija elementa može mijenjati pomoću svojstava na vrhu, lijevo, desno, dno i margine.

Fiksno pozicioniranje

Fiksno pozicioniranje prema specifičnostima zadavanja koordinata je slično apsolutnom, ali se pozicija ne računa u odnosu na HTML stranicu, već u odnosu na prozor pretraživača, tj. sa vrhom: 10px, postavićete gornji padding na 10px IZ PROZORA PRETRAŽIVAČA i bez obzira na kojem se nivou skrolovanja nalazite, ovaj element će uvijek pratiti vaš ekran.

Obično se koristi za elemente navigacije, tako da korisnik uvijek ima u vidu važne informacije ili linkove na zanimljive stranice.

Web programeri ovih dana mogu izgraditi složene izglede web stranica koristeći različite CSS tehnike. Neke od ovih tehnika imaju dugu istoriju (float), druge (flexbox) su stekle popularnost poslednjih godina.

U ovom članku ćemo detaljno pogledati neke od malo poznatih stvari o CSS pozicioniranju.

Prije nego počnemo, hajde da ukratko pregledamo osnove različitih tipova pozicioniranja.

Pregled dostupnih metoda pozicioniranja

CSS svojstvo položaja određuje tip pozicioniranja elementa.

Opcije pozicioniranja

statički je zadana vrijednost svojstva pozicioniranja. Izvještavamo da ovaj element ne koristi pozicioniranje - pozicioniranje se primjenjuje samo ako postavite tip pozicioniranja koji nije zadani.

Da biste to učinili, postavite svojstvo pozicije na jednu od sljedećih vrijednosti:

  • relativno
  • apsolutno
  • fiksno
  • lepljivo

I tek nakon postavljanja pozicioniranja, možete koristiti svojstva koja pomiču element:

  • u pravu
  • dnu
  • Početna vrijednost za ova svojstva je ključna riječ auto.

Treba imati na umu da ako element ima svojstvo položaja postavljeno na apsolutno ili fiksno, onda je to apsolutno pozicioniran element. Takođe, za pozicionirane elemente počinje da radi svojstvo z-indeksa, koje određuje redosled preklapanja.

Razlike između osnovnih metoda pozicioniranja

Sada, pogledajmo na brzinu tri osnovne razlike između dostupnih tipova pozicioniranja:

  • apsolutno pozicionirani elementi su potpuno uklonjeni iz toka, a njihovo mjesto zauzimaju njihovi najbliži susjedi.
  • relativno pozicionirani (relativni) i zalijepljeni (ljepljivi) zadržavaju svoje mjesto u potoku, a njihovi najbliži susjedi ga ne zauzimaju. Međutim, padding ovih elemenata ne zauzima prostor, već ga drugi elementi potpuno zanemaruju, što može rezultirati preklapanjem elemenata.
  • fiksni elementi (a fiksno pozicioniranje je vrsta apsolutnog) uvijek su pozicionirani u odnosu na okvir za prikaz (zanemarujući pozicioniranje pretka), dok su zalijepljeni elementi pozicionirani u odnosu na najbližeg pretka koji se pomiče (preljev: auto). I samo u nedostatku takvih predaka, oni se postavljaju u odnosu na zonu vidljivosti.

Ovo se može detaljnije vidjeti u demou:

Napomena: Pozicioniranje "elemenata ljepila" je još uvijek eksperimentalna tehnologija sa ograničenom podrškom pretraživača. Naravno, ako želite, možete koristiti polyfill da dodate ovu funkcionalnost pretraživaču, ali s obzirom na njegovu nisku rasprostranjenost, ovo svojstvo neće biti razmatrano u ovom članku.

Elementi za pozicioniranje sa tipom apsolutnog pozicioniranja

Siguran sam da većina ljudi zna kako funkcionira apsolutno pozicioniranje. Međutim, mnoge stvari o tome mogu biti zbunjujuće za početnike.

Zato sam odlučio da počnem s tim kada opisujem malo poznate karakteristike pozicioniranja.

Dakle, apsolutno pozicionirani element je odmaknut od svog najbližeg pozicioniranog pretka. Naravno, ovo radi ako bilo koji od predaka ima poziciju koja nije statična - ako element nema pozicionirane pretke, on je pomaknut od okvira za prikaz.

To je prikazano na sljedećem primjeru:

U ovoj demonstraciji, zelena kutija je inicijalno pozicionirana sa apsolutno nula margina na dnu: 0 i lijevo: 0, njegov predak (crveni okvir) nije uopće pozicioniran.

Međutim, relativno smo pozicionirali vanjski omotač (jumbotron element). Obratite pažnju na to kako se pozicioniranje zelene kutije mijenja kada se promijeni tip pozicioniranja njegovih predaka.

Apsolutno pozicionirani elementi zanemaruju svojstvo float

Ako primijenimo apsolutno ili fiksno pozicioniranje na lebdeći element, svojstvo float će biti postavljeno na ništa. S druge strane, ako postavimo relativno pozicioniranje, element će ostati plutajući.

Pogledajte odgovarajući demo:

U ovom primjeru definiramo dva različita elementa koji plutaju udesno. Imajte na umu da kada crveni okvir postane apsolutno pozicioniran, on zanemaruje float vrijednost, dok relativno pozicioniran zeleni okvir zadržava float vrijednost.

Apsolutno pozicionirani inline elementi postaju na nivou bloka

Inline element s apsolutnim ili fiksnim pozicioniranjem preuzima svojstva blok elementa. Za detalje o pretvaranju inline elemenata u blok elemente, pogledajte tabelu.

U ovom slučaju, kreirali smo dva različita elementa. Prvi (zeleni blok) je blok element, a drugi (crveni blok) je inline element. U početku je vidljiv samo zeleni blok.

Crveni okvir nije vidljiv jer svojstva širine i visine koji su postavljeni na njega rade samo na blok i inline elementima, a pošto nema sadržaja, nema ni dimenzije.

Kada se crvenom bloku dodijeli apsolutno ili fiksno pozicioniranje, on postaje blok i veličine bloka navedene u njemu stupaju na snagu.

Apsolutno pozicionirani elementi nemaju skupljene margine

Podrazumevano, kada se dvije vertikalne margine dodiruju, one se spajaju u jednu jednaku maksimalnom od njih. To se zove sažimanje margina.

Apsolutno pozicionirani elementi ponašaju se slično kao i plutajući elementi - njihov padding nije spojen sa susjednim.

U ovoj demonstraciji, element je postavljen na uvlačenje od 20 piksela. Njegov padding se skuplja sa paddingom roditeljskog elementa, koji takođe iznosi 20 piksela. Kao što vidite, samo sa apsolutnim pozicioniranjem ne dolazi do kolapsa.

Ali kako možemo spriječiti padding od kolapsa? Moramo staviti neku vrstu separatora između njih.

Ovo može biti padding ili granica i može se primijeniti i na roditeljske i podređene elemente. Druga opcija je dodavanje jasne popravke roditeljskom elementu.

Pozicioniranje elemenata s pikselima i procentima

Jeste li ikada koristili procente umjesto piksela za pozicioniranje elemenata? Ako je odgovor potvrdan, onda znate da pomak elementa ovisi o odabranim jedinicama mjere (pikseli ili postoci).

Ovo je malo sramotno, zar ne? Dakle, prvo, da vidimo šta specifikacija kaže o ofsetu kao postotku:

Pomak kao postotak širine (za lijevo i desno) ili visine (gore ili dolje) roditeljskog okvira. Za zalijepljene elemente, pomak se izračunava kao postotak širine (lijevo i desno) ili visine (gore ili dolje) toka. Negativne vrijednosti su dozvoljene.

Kao što je spomenuto, kada se specificira pomak kao postotak, pozicija elementa ovisi o širini i visini njegovog roditelja.

Demo pokazuje ovu razliku:

Ovaj primjer koristi piksele i procente za pomak. Naravno, kada postavite pomak u pikselima, element se pomjera tamo gdje treba.

A ako odaberemo postotak za pomak, rezultat će ovisiti o veličini nadređenog elementa. Evo vizualizacije koja pokazuje kako se izračunava nova pozicija:

Napomena: kao što verovatno znate, svojstvo transformacije (zajedno sa raznim funkcijama prevođenja) takođe vam omogućava da promenite poziciju elementa. Ali u ovom slučaju, kada se koriste postoci, izračun će se temeljiti na veličini samog elementa, a ne njegovog roditelja.

Zaključak

Nadam se da vam je ovaj članak pomogao da bolje shvatite pozicioniranje CSS-a i razjasnio osnovne složenosti.

Rade na svim pozicioniranim elementima osim statičnih.

Primjer pozicioniranja.

Elementi se mogu međusobno preklapati!

Prikaz stavke iznad ostalih!

Svojstvo pozicije ima 4 vrijednosti: statičku, fiksnu, relativnu i apsolutnu. Svaka od ovih vrijednosti će biti prikazana u nastavku uz primjer upotrebe.

Pre nego što uđemo u detalje o svim vrstama pozicioniranja elemenata na stranici, moraćemo da razmotrimo šta je tok dokumenta.

Tok dokumenata

Elementi na web stranici se prema zadanim postavkama prikazuju redoslijedom kojim se pojavljuju u HTML dokumentu, odnosno blok elementi zauzimaju cijelu dostupnu širinu i naslagani su okomito jedan ispod drugog. Inline elementi se poređaju vodoravno dok se ne zauzme cijela raspoloživa širina, nakon što se zauzme cijela širina, napravit će se prijelom linije i sve će početi ispočetka. Ovaj red rasporeda elemenata se zove normalan protok(takođe se zove tok dokumenata ili opšti tok).

Koristeći svojstvo float ili position, možete ukloniti element iz normalnog toka. Ako element "ispadne" iz normalnog toka, tada će elementi koji se nalaze u kodu ispod ovog elementa biti pomjereni na svoje mjesto na web stranici.

Statičko pozicioniranje

Statičko je zadano pozicioniranje za sve elemente na web stranici. Ako se svojstvo pozicije ne primjenjuje na element, ono će biti statično i prikazivat će se na web stranici u skladu s općim tokom elemenata.

Prilikom primjene CSS svojstava na vrhu, lijevo, desno ili dno na statički pozicionirani element, oni će biti zanemareni.

Ako je potrebno, možete postaviti statičko pozicioniranje u stilskoj tablici koristeći statičku vrijednost:

Ime dokumenta

Prvi paragraf.

Drugi paragraf.

Pokušajte "

Fiksno pozicioniranje

Fiksno pozicionirani elementi se pozicioniraju na stranici u odnosu na prozor pretraživača. Takvi elementi se uklanjaju iz opšteg toka, elementi koji prate fiksni element u toku će ga ignorisati, pomerajući se i zauzimajući njegovo mesto na web stranici.

Treba napomenuti da elementi sa fiksnim pozicioniranjem mogu preklapati druge elemente, skrivajući ih u cijelosti ili djelomično. Prilikom pomicanja po dugim stranicama, oni stvaraju efekat stacionarnih objekata, koji ostaju na istom mjestu:

Ime dokumenta

Tekst Tekst Tekst Tekst Tekst Tekst Neki tekst Tekst Tekst Tekst Tekst Tekst
Pokušajte "

Relativno pozicioniranje

Relativno pozicionirani elementi, poput statičkih elemenata, ostaju u toku. Kada primijenite svojstva gornje, lijevo, desno ili donje na relativno pozicionirane elemente, oni će biti pomaknuti od svoje lokacije, ostavljajući bijeli prostor na mjestu gdje je element prvobitno pozicioniran.

Takvi elementi ne utiču na raspored okolnih elemenata, ostali elementi ostaju na svom mestu i mogu se preklapati relativno pozicioniranim elementom:

Ime dokumenta

Naslov prvog nivoa.

Relativno pozicioniran naslov.

Naslov trećeg nivoa.

Pokušajte "

Napomena: elementi sa relativnim pozicioniranjem (relativni) se obično koriste kao roditelj elemenata sa apsolutnim pozicioniranjem (apsolutnim).

Apsolutno pozicioniranje

Apsolutno pozicionirani elementi su potpuno uklonjeni iz toka, ostali elementi će zauzeti oslobođeni prostor, potpuno zanemarujući apsolutno pozicionirane elemente. Zatim možete pozicionirati element gdje god želite na web stranici koristeći svojstva gornje, lijevo, desno ili dolje.

Svi apsolutno pozicionirani elementi su pozicionirani u odnosu na prozor pretraživača ili u odnosu na najbližeg pozicioniranog pretka (ako postoji) čije je svojstvo položaja postavljeno na apsolutno, fiksno ili relativno.

Ime dokumenta

Promijenimo poziciju logotipa koristeći apsolutno pozicioniranje.
Sada će se logo nalaziti u gornjem desnom uglu stranice.

Pokušajte "

Elementi koji se preklapaju

Kada su elementi izvan opšteg toka stranice, mogu se međusobno preklapati. Obično redosled elemenata odgovara njihovom redosledu u HTML-kodu stranice, međutim, moguće je kontrolisati redosled preklapanja koristeći svojstvo CSS z-index, što je veća njegova vrednost, to će element biti veći.

Ime dokumenta

z-indeks: 1;
z-indeks: 0;
z-indeks: 2;

Top srodni članci