Horizontálne a vertikálne zarovnanie prvkov je možné vykonať rôznymi spôsobmi. Výber metódy závisí od typu prvku (blok alebo inline), od typu jeho umiestnenia, veľkosti atď.

1. Horizontálne zarovnanie na stred bloku / strany

1.1. Ak má blok šírku:

div ( šírka: 300px; okraj: 0 auto; /*vycentrovať prvok vodorovne v rámci rodičovského bloku*/ )

Ak chcete týmto spôsobom zarovnať vložený prvok, musíte ho nastaviť na zobrazenie: blok;

1.2. Ak je blok vnorený do iného bloku a nemá preň nastavené žiadne/šírka:

.wrapper(text-align:center;)

1.3. Ak má blok šírku a je potrebné ho upevniť v strede nadradeného bloku:

.wrapper (pozícia: relatívna; /*nastaví rodičovský rámček na relatívnu pozíciu, aby sme v ňom mohli neskôr úplne umiestniť rámček*/) .box (šírka: 400px; pozícia: absolútna; vľavo: 50%; margin-left: - 200px; / *posunie blok doľava o vzdialenosť rovnajúcu sa polovici jeho šírky*/ )

1.4. Ak pre bloky nie je nastavená žiadna šírka, môžete ich vycentrovať pomocou nadradeného bloku obalu:

.wrapper (text-align: center; /*vycentrovať obsah bloku*/) odsadenie medzi blokmi*/ )

2. Vertikálne zarovnanie

2.1. Ak text zaberá jeden riadok, napríklad pre tlačidlá a položky ponuky:

.button ( výška: 50px; výška riadku: 50px; )

2.2. Ak chcete zarovnať blok vertikálne vo vnútri nadradeného bloku:

.wrapper (pozícia: relatívna;) .box ( výška: 100px; pozícia: absolútna; hore: 50%; okraj: -50px 0 0 0; )

2.3. Vertikálne zarovnanie podľa typu tabuľky:

.wrapper ( display: table; width: 100%; ) .box ( display: table-cell; height: 100px; text-align: center; vertical-align: middle; )

2.4. Ak má rámček nastavenú šírku a výšku a je potrebné ho vycentrovať na rodičovský rámček:

.wrapper ( pozícia: relatívna; ) .box ( výška: 100px; šírka: 100px; pozícia: absolútna; hore: 0; vpravo: 0; dole: 0; vľavo: 0; okraj: auto; pretečenie: auto; /*do obsah sa nerozšíril */ )

2.5. Absolútne umiestnenie do stredu stránky/bloku pomocou transformácie CSS3:

ak má prvok rozmery

div ( šírka: 300px; /*nastaviť šírku bloku*/ výšku:100px; /*nastaviť výšku bloku*/ transform: translate(-50%, -50%); position: absolute; top: 50%; left: 50% ;)

ak prvok nemá žiadne rozmery a nie je prázdny

Tu je nejaký text

h1 ( okraj: 0; transformácia: preložiť (-50 %, -50 %); pozícia: absolútna; hore: 50 %; vľavo: 50 %; )

Úlohou je veľmi často zarovnať blok na stred stránky/obrazovky a to aj tak, že bez java skriptu, bez nastavovania tvrdých veľkostí alebo záporných zarážok, aby rolovacie lišty fungovali na rodičovi, ak blok prekročí svoju veľkosť. Na nete je pomerne veľa monotónnych príkladov, ako zarovnať blok na stred obrazovky. Väčšina z nich je spravidla založená na rovnakých princípoch.

Nižšie sú uvedené hlavné spôsoby riešenia problému, ich výhody a nevýhody. Aby ste pochopili podstatu príkladov, odporúčam zmenšiť výšku / šírku okna Výsledok v príkladoch na uvedených odkazoch.

Možnosť 1. Negatívna výplň.

Polohovanie blokovať horné a ľavé atribúty o 50 % a s vedomím výšky a šírky bloku vopred nastavte záporný okraj, ktorý sa rovná polovici veľkosti blokovať. Obrovské mínus túto možnosť je, že musíte počítať záporné zarážky. Rovnakým spôsobom blokovať sa v prostredí posuvníkov správa nie celkom korektne – je jednoducho odrezaný, pretože má záporné zarážky.

Nadradený ( šírka: 100 %; výška: 100 %; pozícia: absolútna; hore: 0; vľavo: 0; pretečenie: auto; ) .block ( šírka: 250px; výška: 250px; pozícia: absolútna; hore: 50 %; vľavo : 50 %; okraj: -125 pixelov 0 0 -125 pixelov; img ( max-width: 100 %; výška: auto; zobrazenie: blok; okraj: 0 auto; orámovanie: žiadne; ) )

Možnosť 2: Automatické odsadenie.

Menej časté, ale podobné ako prvé. Pre blokovať nastavte šírku a výšku, umiestnite atribúty vľavo hore na 0 a nastavte automatický okraj. Výhodou tejto možnosti sú funkčné posuvníky rodič, ak má 100% šírku a výšku. Nevýhodou tejto metódy je pevné dimenzovanie.

Nadradený ( šírka: 100 %; výška: 100 %; pozícia: absolútna; hore: 0; vľavo: 0; pretečenie: auto; ) .block ( šírka: 250px; výška: 250px; pozícia: absolútna; hore: 0; vpravo: 0; dole: 0; vľavo: 0; okraj: auto; obr. ( max. šírka: 100 %; výška: auto; zobrazenie: blok; okraj: 0 auto; okraj: žiadny; ) )

Možnosť 3. Tabuľka.

Pýtame sa rodičštýly tabuľky, bunka rodič Nastavte zarovnanie textu na stred. ALE blok nastaviť model inline bloku. Nevýhodou sú nefungujúce posuvníky a vo všeobecnosti ani estetika „emulácie“ tabuľky.

Rodič ( šírka: 100 %; výška: 100 %; zobrazenie: tabuľka; pozícia: absolútna; hore: 0; vľavo: 0; > .inner ( display: table-cell; text-align: center; vertical-align: middle; ) ) .block ( display: inline-block; img ( display: block; border: none; ) )

Ak chcete do tohto príkladu pridať zvitok, budete musieť do štruktúry pridať ešte jeden prvok.
Príklad: jsfiddle.net/serdidg/fk5nqh52/3 .

Možnosť 4. Pseudoprvok.

Táto možnosť je zbavená všetkých problémov uvedených v predchádzajúcich metódach a tiež rieši pôvodné úlohy. Ide o to mať rodič nastaviť štýly pseudo prvok predtým, konkrétne 100% výška, zarovnanie na stred a model inline boxu. To isté s blokovať vložte model inline bloku, zarovnanie na stred. Komu blokovať nespadol pod pseudo prvok keď sú rozmery prvého väčšie ako rodič, špecifikujte rodič white-space: nowrap a font-size: 0, po ktorom y blokovať zrušte tieto štýly nasledujúcim spôsobom - biele miesto: normálne. AT tento príklad font-size: 0 je potrebná na odstránenie výslednej medzery medzi rodič a blokovať v súvislosti s formátovaním kódu. Medzera môže byť odstránená inými spôsobmi, ale považuje sa za najlepšie to jednoducho nedovoliť.

Rodič ( šírka: 100 %; výška: 100 %; pozícia: absolútna; hore: 0; vľavo: 0; pretečenie: auto; medzera: nowrap; zarovnanie textu: na stred; veľkosť písma: 0; &:pred ( výška: 100 %; zobrazenie: inline-block; vertical-align: middle; content: ""; ) ) .block ( display: inline-block; white-space: normal; vertical-align: middle; text-align: left ; img ( display: block; border: none; ) )

Alebo ak chcete, aby rodič zabral iba výšku a šírku okna, nie celú stránku:

Rodič ( pozícia: pevná; horná: 0; pravá: 0; spodná: 0; ľavá: 0; pretečenie: auto; medzera: nowrap; zarovnanie textu: na stred; veľkosť písma: 0; &:pred ( výška: 100 %; zobrazenie: inline-block; vertical-align: middle; content: ""; ) ) .block ( display: inline-block; white-space: normal; vertical-align: middle; text-align: left; img ( display: block; border: none; ) )

Možnosť 5. Flexbox.

Jedným z najjednoduchších a najelegantnejších spôsobov je použitie flexboxu. Nevyžaduje zbytočné pohyby tela, celkom jasne popisuje podstatu toho, čo sa deje, a má vysokú flexibilitu. Jediná vec, ktorú treba pamätať pri výbere túto metódu- podpora IE od verzie 10 vrátane. caniuse.com/#feat=flexbox

Nadradená položka ( šírka: 100 %; výška: 100 %; poloha: pevná; horná: 0; ľavá: 0; zobrazenie: ohyb; zarovnanie položiek: na stred; zarovnanie obsahu: na stred; zarovnanie obsahu: na stred; pretečenie: automatické; ) .block ( background: #60a839; img ( display: block; border: none; ) )

Možnosť 6. Transformácia.

Vhodné, ak sme obmedzení konštrukciou, a nedá sa s ním nijako manipulovať nadradený prvok, a blok je potrebné nejako zarovnať. Na pomoc príde funkcia translate() css. S hodnotou 50 % absolútne umiestnenie umiestni ľavý horný roh rámčeka presne na stred, potom záporná hodnota prekladu posunie rámček vzhľadom na jeho vlastné rozmery. Upozorňujeme, že negatívne efekty sa môžu prejaviť vo forme rozmazaných okrajov alebo štýlu písma. Podobná metóda môže tiež viesť k problémom s výpočtom polohy bloku pomocou java-script "a. Niekedy na kompenzáciu straty 50% šírky v dôsledku použitie css vlastnosť left môže pomôcť pravidlom nastaveným pre blok: margin-right: -50%; .

Nadradená ( šírka: 100 %; výška: 100 %; pozícia: pevná; horná: 0; ľavá: 0; pretečenie: auto; ) .block ( poloha: absolútna; horná: 50 %; ľavá: 50 %; transformácia: preložiť( -50 %, -50 %); img ( displej: blok; ) )

Možnosť 7. Tlačidlo.

Používateľská možnosť kde blokovať zabalené v gombíkovej visačke. Tlačidlo má schopnosť vycentrovať všetko, čo sa v ňom nachádza, teda prvky líniového a blokovo-riadkového (inline-blokového) modelu. V praxi to neodporúčam.

Rodič ( šírka: 100 %; výška: 100 %; pozícia: absolútna; hore: 0; vľavo: 0; pretečenie: automatické; pozadie: žiadne; ohraničenie: žiadne; obrys: žiadne; ) .block ( zobrazenie: inline-block; img ( display: block;; border: none; ) )

Bonus

Pomocou myšlienky 4. možnosti môžete nastaviť okraje pre blokovať, a zároveň sa ten druhý adekvátne zobrazí v prostredí scrollbarov.
Príklad: jsfiddle.net/serdidg/nfqg9rza/2 .

Môžete tiež zarovnať obrázok na stred a ak je obrázok väčší rodič, prispôsobte veľkosť rodič.
Príklad: jsfiddle.net/serdidg/nfqg9rza/3 .
Veľký obrazový príklad:

Vlad Merževič

Vďaka tomu, že obsah buniek tabuľky je možné súčasne horizontálne aj vertikálne zarovnať, rozširujú sa možnosti riadenia polohy prvkov voči sebe. Tabuľky vám umožňujú nastaviť zarovnanie obrázkov, textu, polí formulárov a iných prvkov navzájom a vzhľadom na webovú stránku ako celok. Vo všeobecnosti je zarovnanie potrebné hlavne na vytvorenie vizuálneho spojenia medzi rôznymi prvkami, ako aj na ich zoskupenie.

Vertikálne centrovanie

Jedným zo spôsobov, ako ukázať návštevníkovi zameranie a názov stránky, je použiť úvodnú stránku. Toto je prvá stránka, na ktorej sa spravidla nachádza flash-intro alebo obrázok vyjadrujúci hlavnú myšlienku stránky. Obrázok je zároveň odkazom na iné časti stránky. Tento obrázok je potrebné umiestniť do stredu okna prehliadača bez ohľadu na rozlíšenie monitora. Na tento účel môžete použiť tabuľku so šírkou a výškou rovnajúcou sa 100 % (príklad 1).

Príklad 1: Vycentrovanie obrázka

zarovnanie

V tomto príklade je horizontálne zarovnanie nastavené pomocou parametra značky align="center". a obsah bunky nemusí byť vycentrovaný vertikálne, pretože táto poloha je predvolene nastavená.

Ak chcete nastaviť výšku stola na 100 %, odstráňte, kód už nie je platný.

Použitie šírky a výšky pre celú dostupnú oblasť webovej stránky zaisťuje, že obsah tabuľky bude presne zarovnaný v strede okna prehliadača bez ohľadu na jej veľkosť.

Horizontálne zarovnanie

Kombináciou atribútov align (horizontálne zarovnanie) a valign ( vertikálne zarovnanie) tag , je prípustné nastaviť niekoľko typov polôh prvkov voči sebe navzájom. Na obr. 1 ukazuje, ako horizontálne zarovnať prvky.

Pozrime sa na niekoľko príkladov zarovnania textu podľa obrázku nižšie.

Horné zarovnanie

Ak chcete určiť zarovnanie obsahu bunky nahor pre značku je potrebné nastaviť atribút valign s hodnotou top (príklad 2).

Príklad 2: Použitie valign

zarovnanie

Stĺpec 1 2. stĺpec

V tomto príklade sú charakteristiky buniek riadené pomocou parametrov značky , ale je tiež pohodlnejšie meniť štýly. Zarovnanie buniek je určené najmä vlastnosťami vertikálneho zarovnania a zarovnania textu (príklad 3).

Príklad 3: Použitie štýlov na zarovnanie

zarovnanie

Stĺpec 1 2. stĺpec

Na skrátenie kódu sa v tomto príklade používa zoskupenie selektorov, pretože vlastnosti vertikálneho zarovnania a výplne sa aplikujú na dve bunky súčasne.

Spodné zarovnanie sa vykonáva rovnakým spôsobom, ale namiesto horného sa používa spodné zarovnanie.

Zarovnanie na stred

Štandardne je obsah bunky zarovnaný na stred ich vertikály, takže v prípade rôznych výšok stĺpcov je potrebné nastaviť zarovnanie nahor. Niekedy je stále potrebné ponechať pôvodný spôsob zarovnania, napríklad pri umiestňovaní vzorcov, ako je znázornené na obr. 2.

V tomto prípade je vzorec umiestnený presne v strede okna prehliadača a jeho číslo je na pravom okraji. Na takéto usporiadanie prvkov potrebujete tabuľku s tromi bunkami. Extrémne bunky by mali mať rovnakú veľkosť, v strednej bunke sa zarovnanie vykonáva v strede a v pravej bunke - na pravom okraji (príklad 4). Tento počet buniek je potrebný, aby sa zabezpečilo, že vzorec bude vycentrovaný.

Príklad 4: Zarovnanie vzorca

zarovnanie

(18.6)

V tomto príklade je prvá bunka tabuľky ponechaná prázdna, slúži len na vytvorenie odsadenia, ktoré sa mimochodom dá nastaviť aj pomocou štýlov.

Zarovnanie prvkov formulára

Tabuľky sú užitočné na umiestnenie polí formulára, najmä ak sú poprekladané textom. Jedna z možností dizajnu formulára, ktorý je určený na zadávanie komentára, je znázornená na obr. 3.

Aby bol text v blízkosti polí formulára zarovnaný doprava a samotné prvky formulára boli zarovnané doľava, potrebujete tabuľku s neviditeľným okrajom a dvoma stĺpcami. Ľavý stĺpec bude obsahovať samotný text a pravý stĺpec bude obsahovať textové polia (príklad 5).

Príklad 5 Zarovnanie polí formulára

zarovnanie

názov
Email
Komentujte

V tomto príklade bol pridaný atribút align="right" pre bunky, ktoré vyžadujú zarovnanie vpravo. Aby sa označenie "Komentár" nachádzalo na hornom okraji viacriadkového textu, príslušná bunka je nastavená na zarovnanie zhora pomocou atribútu valign.

Úlohou je veľmi často zarovnať blok na stred stránky/obrazovky a to aj tak, že bez java skriptu, bez nastavovania tvrdých veľkostí alebo záporných zarážok, aby rolovacie lišty fungovali na rodičovi, ak blok prekročí svoju veľkosť. Na nete je pomerne veľa monotónnych príkladov, ako zarovnať blok na stred obrazovky. Väčšina z nich je spravidla založená na rovnakých princípoch.

Nižšie sú uvedené hlavné spôsoby riešenia problému, ich výhody a nevýhody. Aby ste pochopili podstatu príkladov, odporúčam zmenšiť výšku / šírku okna Výsledok v príkladoch na uvedených odkazoch.

Možnosť 1. Negatívna výplň.

Polohovanie blokovať horné a ľavé atribúty o 50 % a s vedomím výšky a šírky bloku vopred nastavte záporný okraj, ktorý sa rovná polovici veľkosti blokovať. Obrovskou nevýhodou tejto možnosti je, že musíte počítať záporné zarážky. Rovnakým spôsobom blokovať sa v prostredí posuvníkov správa nie celkom korektne – je jednoducho odrezaný, pretože má záporné zarážky.

Nadradený ( šírka: 100 %; výška: 100 %; pozícia: absolútna; hore: 0; vľavo: 0; pretečenie: auto; ) .block ( šírka: 250px; výška: 250px; pozícia: absolútna; hore: 50 %; vľavo : 50 %; okraj: -125 pixelov 0 0 -125 pixelov; img ( max-width: 100 %; výška: auto; zobrazenie: blok; okraj: 0 auto; orámovanie: žiadne; ) )

Možnosť 2: Automatické odsadenie.

Menej časté, ale podobné ako prvé. Pre blokovať nastavte šírku a výšku, umiestnite atribúty vľavo hore na 0 a nastavte automatický okraj. Výhodou tejto možnosti sú funkčné posuvníky rodič, ak má 100% šírku a výšku. Nevýhodou tejto metódy je pevné dimenzovanie.

Nadradený ( šírka: 100 %; výška: 100 %; pozícia: absolútna; hore: 0; vľavo: 0; pretečenie: auto; ) .block ( šírka: 250px; výška: 250px; pozícia: absolútna; hore: 0; vpravo: 0; dole: 0; vľavo: 0; okraj: auto; obr. ( max. šírka: 100 %; výška: auto; zobrazenie: blok; okraj: 0 auto; okraj: žiadny; ) )

Možnosť 3. Tabuľka.

Pýtame sa rodičštýly tabuľky, bunka rodič Nastavte zarovnanie textu na stred. ALE blok nastaviť model inline bloku. Nevýhodou sú nefungujúce posuvníky a vo všeobecnosti ani estetika „emulácie“ tabuľky.

Rodič ( šírka: 100 %; výška: 100 %; zobrazenie: tabuľka; pozícia: absolútna; hore: 0; vľavo: 0; > .inner ( display: table-cell; text-align: center; vertical-align: middle; ) ) .block ( display: inline-block; img ( display: block; border: none; ) )

Ak chcete do tohto príkladu pridať zvitok, budete musieť do štruktúry pridať ešte jeden prvok.
Príklad: jsfiddle.net/serdidg/fk5nqh52/3 .

Možnosť 4. Pseudoprvok.

Táto možnosť je zbavená všetkých problémov uvedených v predchádzajúcich metódach a tiež rieši pôvodné úlohy. Ide o to mať rodič nastaviť štýly pseudo prvok predtým, konkrétne 100% výška, zarovnanie na stred a model inline boxu. To isté s blokovať vložte model inline bloku, zarovnanie na stred. Komu blokovať nespadol pod pseudo prvok keď sú rozmery prvého väčšie ako rodič, špecifikujte rodič white-space: nowrap a font-size: 0, po ktorom y blokovať zrušte tieto štýly nasledujúcim spôsobom - biele miesto: normálne. V tomto príklade je potrebná veľkosť písma: 0, aby sa odstránila výsledná medzera medzi nimi rodič a blokovať v súvislosti s formátovaním kódu. Medzera môže byť odstránená inými spôsobmi, ale považuje sa za najlepšie to jednoducho nedovoliť.

Rodič ( šírka: 100 %; výška: 100 %; pozícia: absolútna; hore: 0; vľavo: 0; pretečenie: auto; medzera: nowrap; zarovnanie textu: na stred; veľkosť písma: 0; &:pred ( výška: 100 %; zobrazenie: inline-block; vertical-align: middle; content: ""; ) ) .block ( display: inline-block; white-space: normal; vertical-align: middle; text-align: left ; img ( display: block; border: none; ) )

Alebo ak chcete, aby rodič zabral iba výšku a šírku okna, nie celú stránku:

Rodič ( pozícia: pevná; horná: 0; pravá: 0; spodná: 0; ľavá: 0; pretečenie: auto; medzera: nowrap; zarovnanie textu: na stred; veľkosť písma: 0; &:pred ( výška: 100 %; zobrazenie: inline-block; vertical-align: middle; content: ""; ) ) .block ( display: inline-block; white-space: normal; vertical-align: middle; text-align: left; img ( display: block; border: none; ) )

Možnosť 5. Flexbox.

Jedným z najjednoduchších a najelegantnejších spôsobov je použitie flexboxu. Nevyžaduje zbytočné pohyby tela, celkom jasne popisuje podstatu toho, čo sa deje, a má vysokú flexibilitu. Jediná vec, ktorú treba pamätať pri výbere tejto metódy, je podpora pre IE od verzie 10 vrátane. caniuse.com/#feat=flexbox

Nadradená položka ( šírka: 100 %; výška: 100 %; poloha: pevná; horná: 0; ľavá: 0; zobrazenie: ohyb; zarovnanie položiek: na stred; zarovnanie obsahu: na stred; zarovnanie obsahu: na stred; pretečenie: automatické; ) .block ( background: #60a839; img ( display: block; border: none; ) )

Možnosť 6. Transformácia.

Vhodné, ak sme obmedzení štruktúrou, a nie je možné manipulovať s nadradeným prvkom, ale blok je potrebné nejako zarovnať. Na pomoc príde funkcia translate() css. Hodnota 50 % absolútnej polohy umiestni ľavý horný roh rámčeka presne do stredu, potom záporná hodnota prekladu posunie rámček vzhľadom na jeho vlastné rozmery. Upozorňujeme, že negatívne efekty sa môžu prejaviť vo forme rozmazaných okrajov alebo štýlu písma. Podobná metóda môže tiež viesť k problémom s výpočtom polohy bloku pomocou java-script "a. Niekedy na kompenzáciu straty 50% šírky v dôsledku použitia vlastnosti css vľavo môže pomôcť pravidlo nastavené v bloku: margin-right: -50%; .

Nadradená ( šírka: 100 %; výška: 100 %; pozícia: pevná; horná: 0; ľavá: 0; pretečenie: auto; ) .block ( poloha: absolútna; horná: 50 %; ľavá: 50 %; transformácia: preložiť( -50 %, -50 %); img ( displej: blok; ) )

Možnosť 7. Tlačidlo.

Používateľská možnosť azproduction kde blokovať zabalené v gombíkovej visačke. Tlačidlo má schopnosť vycentrovať všetko, čo sa v ňom nachádza, teda prvky líniového a blokovo-riadkového (inline-blokového) modelu. V praxi to neodporúčam.

Rodič ( šírka: 100 %; výška: 100 %; pozícia: absolútna; hore: 0; vľavo: 0; pretečenie: automatické; pozadie: žiadne; ohraničenie: žiadne; obrys: žiadne; ) .block ( zobrazenie: inline-block; img ( display: block;; border: none; ) )

Bonus

Pomocou myšlienky 4. možnosti môžete nastaviť okraje pre blokovať, a zároveň sa ten druhý adekvátne zobrazí v prostredí scrollbarov.
Príklad: jsfiddle.net/serdidg/nfqg9rza/2 .

Môžete tiež zarovnať obrázok na stred a ak je obrázok väčší rodič, prispôsobte veľkosť rodič.
Príklad: jsfiddle.net/serdidg/nfqg9rza/3 .
Veľký obrazový príklad:

Existuje niekoľko zásadne odlišných spôsobov, ako vertikálne vycentrovať objekt pomocou CSS Problém však môže byť pri výbere toho správneho. Na niektoré z nich sa pozrieme a na základe získaných poznatkov vytvoríme aj malú webovú stránku.

Vertikálne zarovnanie na stred pomocou CSS nie je také ľahké dosiahnuť. Existuje mnoho spôsobov a nie všetky fungujú vo všetkých prehliadačoch. Pozrime sa na 5 rôzne metódy, ako aj „za“ a „proti“ každému z nich. Príklad.

1. spôsob

Táto metóda predpokladá, že nastavujeme nejaký prvok

spôsob zobrazenia ako tabuľku, potom v nej môžeme použiť vlastnosť vertical-align (ktorá na rôznych prvkoch funguje odlišne).

Niektorí užitočná informácia, ktorý by mal byť vycentrovaný.
#wrapper( display: table; ) #cell( display: table-cell; vertical-align: middle; )

klady

  • Obsah môže dynamicky meniť výšku (výška nie je definovaná v CSS).
  • Obsah sa neskráti, ak naň nie je dostatok miesta.

Mínusy

  • Nefunguje v IE 7 a nižšom
  • Veľa vnorených značiek

2. spôsob

Táto metóda využíva absolútne umiestnenie prvku div , ktorého horná časť je nastavená na 50 % a horný okraj (margin-top) mínus polovica výšky obsahu. To znamená, že objekt musí mať pevnú výšku, ktorá je definovaná v štýloch CSS.

Keďže výška je pevná, môžete nastaviť overflow:auto; pre div obsahujúci obsah, takže ak sa obsah nezmestí, zobrazia sa posuvníky.

Obsah tu
#content ( position: absolute; top: 50%; height: 240px; margin-top: -120px; /* mínus polovica výšky */ )

klady

  • Funguje vo všetkých prehliadačoch.
  • Bez dodatočných investícií.

Mínusy

  • Keď nie je dostatok miesta, obsah zmizne (napr. div je vo vnútri tela a používateľ zmenší okná, v takom prípade sa posuvníky nezobrazia.

3. spôsob

Pri tejto metóde zabalíme obsahový div iným div. Nastavte jeho výšku na 50 % (výška: 50 %;) a spodný okraj na polovicu výšky (margin-bottom:-contenttheight;). Obsah vyčistí plavák a bude vycentrovaný.

tu obsah
#floater( float: left; height: 50%; margin-bottom: -120px; ) #content( clear: both; height: 240px; position: relatívna; )

klady

  • Funguje vo všetkých prehliadačoch.
  • Keď nie je dostatok miesta (napríklad pri zmenšení okna), obsah nie je orezaný, objavia sa posuvníky.

Mínusy

  • Myslím si, že iba jeden: že je použitý ďalší prázdny prvok.

4. spôsob.

Táto metóda používa vlastnosť position:absolute; pre divy s pevnými rozmermi (šírka a výška). Potom nastavíme jeho súradnice top:0; dno:0; , ale keďže má pevnú výšku, nemôže sa natiahnuť a je vycentrovaný. Je to veľmi podobné známej metóde horizontálne zarovnanie vycentrované na prvok bloku s pevnou šírkou (okraj: 0 auto;).

Dôležitá informácia.
#content( pozícia: absolútna; hore: 0; dole: 0; vľavo: 0; vpravo: 0; okraj: auto; výška: 240px; šírka: 70 %; )

klady

  • Veľmi jednoduché.

Mínusy

  • Nefunguje v internet Explorer
  • Ak v kontajneri nie je dostatok miesta, obsah bude orezaný bez posúvačov.

5. spôsob

Túto metódu môžete použiť na vycentrovanie jedného riadku textu. Stačí nastaviť výšku textu (line-height) na výšku prvku (height). Potom sa čiara zobrazí v strede.

Nejaký riadok textu
#content( height: 100px; line-height: 100px; )

klady

  • Funguje vo všetkých prehliadačoch.
  • Nevystrihne text, ak sa nezmestí.

Mínusy

  • Funguje iba s textom (nepracuje s prvkami bloku).
  • Ak je tam viac ako jeden riadok textu, vyzerá to veľmi zle.

Táto metóda je veľmi užitočná pre malé prvky, ako je centrovanie textu v tlačidle alebo textovom poli.

Teraz, keď viete, ako dosiahnuť vertikálne zarovnanie na stred, urobme jednoduchú webovú stránku, ktorá bude nakoniec vyzerať takto:

Krok 1

Vždy je dobré začať so sémantickým označením. Naša stránka bude mať takúto štruktúru:

  • #floater (na vycentrovanie obsahu)
  • #centred (stredový prvok)
    • #strana
      • #logo
      • #nav (zoznam
      • #obsah
    • #bottom (pre autorské práva a všetko)

    Napíšme si nasledujúce html označenie:

    Centrovaná spoločnosť

    Názov stránky

    Holisticky prerobte outsourcing s pridanou hodnotou po spolupráci zameranej na procesy a zdieľaní nápadov. Energeticky zjednodušiť vplyvné vedľajšie trhy prostredníctvom povolených imperatívov. Holisticky prevládajú prémiové inovácie po presvedčivých scenároch. Bezproblémovo rekapitulujte vysoké štandardy ľudského kapitálu pomocou špičkových vyrábaných produktov. Výrazne syndikujte schémy vyhovujúce štandardom pred robustnými vortálmi. Jedinečne rekapitulujte využitú pripravenosť webu vis-a-vis predpripravenými informáciami.

    Nadpis 2

    Efektívne si osvojte prispôsobenú webovú pripravenosť namiesto procesov riadených zákazníkmi. Asertívne rozvíjajte multiplatformové požiadavky v porovnaní s proaktívnymi technológiami. Pohodlne posilnite multidisciplinárne metaslužby bez celopodnikových rozhraní. Pohodlne zefektívnite konkurenčné strategické tematické oblasti pomocou zameraných elektronických trhov. Fosfluorescenčne syndikujte komunity svetovej triedy na trhoch s pridanou hodnotou. Vhodne znovu objavte holistické služby pred robustnými elektronickými službami.

    Upozornenie o autorských právach sa nachádza tu

    Krok 2

    Teraz budeme písať jednoduchý CSS, na umiestnenie prvkov na stránke. Tento kód by ste mali uložiť do súboru style.css. Práve na ňom je odkaz napísaný v html súbore.

    Html, telo ( okraj: 0; odsadenie: 0; výška: 100 %; ) telo ( pozadie: url("page_bg.jpg") 50 % 50 % bez opakovania #FC3; rodina fontov: Georgia, Times, pätky; ) #floater ( pozícia: relatívna; plávajúca: vľavo; výška: 50%; okraj-dole: -200px; šírka: 1px; ) #centered ( pozícia: relatívna; jasná: vľavo; výška: 400px; šírka: 80 %; max. -width: 800px; min-width: 400px; margin: 0 auto; background: #fff; border: 4px solid #666; ) #bottom (position: absolute; bottom: 0; right: 0; ) #nav (position: absolútne; vľavo: 0; hore: 0; dole: 0; vpravo: 70 %; odsadenie: 20 pixelov; okraj: 10 pixelov; ) #content ( pozícia: absolútna; vľavo: 30 %; vpravo: 0; hore: 0; dole: 0; pretečenie: automatické; výška: 340 pixelov; odsadenie: 20 pixelov; okraj: 10 pixelov; )

    Skôr ako budeme môcť obsah zarovnať na stred, musíme nastaviť výšku tela a html na 100 %. Keďže výška sa uvažuje bez vnútornej a vonkajšej výplne (výplň a okraj), nastavíme ich (výplň) na 0, aby tam neboli žiadne posuvníky.

    Spodná výplň pre prvok „floater“ je mínus polovica výšky obsahu (400px), konkrétne -200px ;

    Vaša stránka by teraz mala vyzerať asi takto:

    Šírka prvku #centered je 80 %. Vďaka tomu je naša stránka užšia na malých obrazovkách a širšia na väčších. väčšina stránok vyzerá na nových širokouhlých monitoroch v ľavom hornom rohu škaredo. Vlastnosti min-width a max-width tiež obmedzujú našu stránku, aby nevyzerala príliš široká alebo príliš úzka. Internet Explorer nepodporuje tieto vlastnosti. Je potrebné nastaviť pevnú šírku.

    Keďže prvok #centered je nastavený na position:relative , môžeme použiť absolútne umiestnenie prvkov v ňom. Potom nastavte overflow:auto; pre prvok #content, aby sa v prípade, že sa tam nenachádza žiadny obsah, zobrazili posuvníky.

    Krok 3

    A posledná vec, ktorú urobíme, je pridať nejaký štýl, aby stránka vyzerala o niečo atraktívnejšie. Začnime s jedálnym lístkom.

    #nav ul ( list-style: none; padding: 0; margin: 20px 0 0 0; text-indent: 0; ) #nav li ( padding: 0; margin: 3px; ) #nav li a ( display: block; background-color: #e8e8e8; padding: 7px; margin: 0; text-decoration: none; color: #000; border-bottom: 1px solid #bbb; text-align: right; ) #nav li a::after ( content: """; farba: #aaa; font-weight: bold; display: inline; float: right; margin: 0 2px 0 5px; ) #nav li a:hover, #nav li a:focus ( background: # f8f8f8; border-bottom-color: #777; ) #nav li a:hover::after ( margin: 0 0 0 7px; color: #f93; ) #nav li a:active ( padding: 8px 7px 6px 7px; )

    Prvá vec, ktorú sme urobili, aby ponuka vyzerala lepšie, bolo odstránenie odrážok nastavením atribútu list-style:none a tiež nastavenie paddingu a paddingu, keďže predvolené hodnoty sa medzi prehliadačmi značne líšia.

    Všimnite si, že sme potom určili, že odkazy by sa mali vykresliť ako prvky na úrovni bloku. Teraz sú pri zobrazení natiahnuté po celej šírke prvku, v ktorom sa nachádzajú.

    Ďalšou zaujímavosťou, ktorú sme použili pri jedálnych lístkoch, sú pseudotriedy :pred a :po. Umožňujú vám pridať niečo pred a za prvok. to dobrý spôsob pridajte ikony alebo symboly, ako napríklad šípku na koniec každého odkazu. Tento trik nefunguje v programe Internet Explorer 7 a nižších.

    Krok 4

    A v neposlednom rade do nášho dizajnu pridáme nejaké závoje pre ešte väčšiu krásu.

    #centered ( -webkit-border-radius: 8px; -moz-border-radius: 8px; border-radius: 8px; ) h1, h2, h3, h4, h5, h6 ( rodina fontov: Helvetica, Arial, sans- serif; font-weight: normal; color: #666; ) h1 ( color: #f93; border-bottom: 1px solid #ddd; letter-spacing: -0.05em; font-weight: bold; margin-top: 0; padding-top: 0; ) #bottom ( padding: 10px; font-size: 0,7em; color: #f03; ) #logo ( font-size: 2em; text-align: center; color: #999; ) #logo silné ( font-weight: normal; ) #logo span ( display: block; font-size: 4em; line-height: 0.7em; color: #666; ) p, h2, h3 ( line-height: 1.6em; ) a ( farba: #f03; )

    V týchto štýloch sme prvku #centered nastavili zaoblené rohy. V CSS3 to bude zodpovedné vlastnosť border-radius. Toto ešte nie je implementované v niektorých prehliadačoch, pokiaľ nepoužijete predpony -moz a -webkit Mozilla Firefox a Safari/Webkit.

    Kompatibilita

    Ako ste možno uhádli, hlavným zdrojom problémov s kompatibilitou je Internet Explorer:

    • Prvok #floater musí byť nastavený na šírku
    • Extra vypchávka okolo ponúk v IE 6

    237152 zobrazení