Domov Opravit Jak vycentrovat rozvržení responzivní prvek. Vše o zarovnání CSS. Absolutní polohování a protahování

Jak vycentrovat rozvržení responzivní prvek. Vše o zarovnání CSS. Absolutní polohování a protahování

Velmi často je úkolem zarovnat blok na střed stránky/obrazovky, a to i tak, že bez java skriptu, bez nastavování tvrdých velikostí nebo záporných odsazení, aby posuvníky fungovaly na rodiči, pokud blok svou velikost přesáhne. Na netu je poměrně hodně monotónních příkladů, jak zarovnat blok na střed obrazovky. Většina z nich je zpravidla založena na stejných principech.

Níže jsou uvedeny hlavní způsoby řešení problému, jejich klady a zápory. Pro pochopení podstaty příkladů doporučuji zmenšit výšku / šířku okna Výsledek v příkladech na uvedených odkazech.

Možnost 1. Negativní výplň.

Polohování blok horní a levé atributy o 50 % a s vědomím výšky a šířky bloku předem nastavte záporný okraj, který se rovná polovině velikosti blok. Obrovské mínus tato možnost je, že musíte počítat záporné odrážky. Stejným způsobem blok se v prostředí posuvníků chová ne zcela korektně – je jednoduše oříznut, protože má záporné odsazení.

Nadřazený ( šířka: 100 %; výška: 100 %; pozice: absolutní; nahoře: 0; vlevo: 0; přetečení: auto; ) .block ( šířka: 250px; výška: 250px; pozice: absolutní; nahoře: 50 %; vlevo : 50 %; okraj: -125 pixelů 0 0 -125 pixelů; img ( max. šířka: 100 %; výška: auto; zobrazení: blok; okraj: 0 auto; ohraničení: žádný; ) )

Možnost 2: Automatické odsazení.

Méně časté, ale podobné prvnímu. Pro blok nastavte šířku a výšku, umístěte horní pravý dolní levý atribut na 0 a nastavte automatický okraj. Výhodou této možnosti jsou funkční posuvníky rodič, pokud má 100% šířku a výšku. Nevýhodou této metody je rigidní dimenzování.

Nadřazený ( šířka: 100 %; výška: 100 %; pozice: absolutní; nahoře: 0; vlevo: 0; přetečení: auto; ) .block ( šířka: 250px; výška: 250px; pozice: absolutní; nahoře: 0; vpravo: 0; dole: 0; vlevo: 0; okraj: auto; img ( max. šířka: 100 %; výška: auto; displej: blok; okraj: 0 auto; okraj: žádný; ) )

Možnost 3. Tabulka.

Ptáme se rodič styly tabulky, buň rodič Nastavte zarovnání textu na střed. ALE blok nastavit model inline bloku. Nevýhodou jsou nefunkční posuvníky a obecně ani estetika „emulace“ tabulky.

Nadřazená položka ( šířka: 100 %; výška: 100 %; zobrazení: tabulka; pozice: absolutní; nahoře: 0; vlevo: 0; > .inner ( display: tabulka-buňka; zarovnání textu: na střed; svislé zarovnání: na střed; ) ) .block ( display: inline-block; img ( display: block; border: none; ) )

Chcete-li k tomuto příkladu přidat svitek, budete muset do struktury přidat ještě jeden prvek.
Příklad: jsfiddle.net/serdidg/fk5nqh52/3 .

Možnost 4. Pseudoprvek.

Tato volba postrádá všechny problémy uvedené v předchozích metodách a také řeší původní úlohy. Jde o to mít rodič nastavit styly pseudo prvek dříve, konkrétně 100% výška, zarovnání na střed a inline box model. Stejné s blok vložte model inline bloku, zarovnání na střed. Na blok nespadl pod pseudo prvek když rozměry prvního jsou větší než rodič, upřesněte rodič white-space: nowrap a font-size: 0, po kterém y blok zrušte tyto styly následujícím způsobem - white-space: normal. V tento příklad font-size: 0 je potřeba k odstranění výsledné mezery mezi rodič a blok v souvislosti s formátováním kódu. Mezeru lze odstranit jinými způsoby, ale považuje se za nejlepší to prostě nedovolit.

Nadřazená položka ( šířka: 100 %; výška: 100 %; pozice: absolutní; nahoře: 0; vlevo: 0; přetečení: auto; mezera: nowrap; zarovnání textu: na střed; velikost písma: 0; &:před ( výška: 100 %; display: inline-block; vertical-align: middle; content: ""; ) ) .block ( display: inline-block; white-space: normal; vertical-align: middle; text-align: left ; img ( display: block; border: none; ) )

Nebo pokud chcete, aby rodič zabíral pouze výšku a šířku okna, nikoli celou stránku:

Rodič ( pozice: pevná; nahoře: 0; vpravo: 0; dole: 0; vlevo: 0; přetečení: auto; mezera: nowrap; zarovnání textu: na střed; velikost písma: 0; &:před ( výška: 100 %; display: 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žnost 5. Flexbox.

Jedním z nejjednodušších a nejelegantnějších způsobů je použití flexboxu. Nevyžaduje zbytečné pohyby těla, zcela jasně popisuje podstatu toho, co se děje, a má vysokou flexibilitu. Jediná věc, kterou je třeba pamatovat při výběru tato metoda- podpora IE od verze 10 včetně. caniuse.com/#feat=flexbox

Rodič ( šířka: 100 %; výška: 100 %; poloha: pevná; nahoře: 0; vlevo: 0; zobrazení: flex; zarovnat-položky: na střed; zarovnat-obsah: na střed; zarovnat-obsah: na střed; přetečení: auto; ) .block ( background: #60a839; img ( display: block; border: none; ) )

Možnost 6. Transformace.

Vhodné v případě, že jsme omezeni strukturou a s rodičovským prvkem nelze nijak manipulovat, ale blok je potřeba nějak zarovnat. Na pomoc přijde funkce translate() css. Hodnota 50 % absolutní pozice umístí levý horní roh rámečku přesně do středu, poté záporná hodnota překladu posune rámeček vzhledem k jeho vlastním rozměrům. Upozorňujeme, že se mohou objevit negativní efekty v podobě rozmazaných okrajů nebo stylu písma. Podobná metoda může také vést k problémům s výpočtem polohy bloku pomocí java-scriptu "a. Někdy je třeba kompenzovat ztrátu 50 % šířky kvůli použití css vlastnost left může pomoci pravidlem nastaveným pro blok: margin-right: -50%; .

Rodič ( šířka: 100 %; výška: 100 %; pozice: pevná; nahoře: 0; vlevo: 0; přetečení: auto; ) .block ( pozice: absolutní; nahoře: 50 %; vlevo: 50 %; transform: translate( -50 %, -50 %); img ( display: block; ) )

Možnost 7. Tlačítko.

Uživatelská možnost azproduction kde blok zabalené do knoflíku. Tlačítko má schopnost vycentrovat vše, co je uvnitř, tedy prvky inline a block-line (inline-block) modelu. V praxi to nedoporučuji.

Rodič ( šířka: 100 %; výška: 100 %; pozice: absolutní; nahoře: 0; vlevo: 0; přetečení: auto; pozadí: žádné; ohraničení: žádné; obrys: žádné; ) .block ( zobrazení: inline-block; img ( display: block;; border: none; ) )

Bonus

Pomocí myšlenky 4. možnosti můžete nastavit okraje pro blok, a ten se zároveň adekvátně zobrazí v prostředí posuvníků.
Příklad: jsfiddle.net/serdidg/nfqg9rza/2 .

Můžete také zarovnat obrázek na střed a pokud je obrázek větší rodič, upravte jej na velikost rodič.
Příklad: jsfiddle.net/serdidg/nfqg9rza/3 .
Příklad velkého obrázku:

Weboví designéři používají DIV každý den v práci. Bez nadsázky jde o nejoblíbenější tag. Otevřete zdroj libovolného webu a uvidíte, že většina, ne-li dvě třetiny objektů, jsou uzavřeny v

. I s příchodem HTML5 a se vznikem vážných konkurentů ve formě článku nebo záhlaví je nadále všude vkládáno do značek. Navrhuji proto, abyste se zabývali otázkou formátování a zarovnání bloků div na střed.

Co je DIV

Název prvku pochází z anglického slova division, což znamená rozdělení. Při psaní značek se používá k rozdělení prvků do bloků. DIV uzavírají skupiny obsahu na webové stránce. Například obrázky, odstavce s textem. Tag nijak neovlivňuje zobrazení obsahu a nenese žádnou sémantickou zátěž.

DIV podporuje všechny globální atributy. Pro webdesign ale potřebujete jen dva – třídu a id. Na všechno ostatní si vzpomenete jen v exotických případech, a to není pravda. Atribut align, který se dříve používal k zarovnání prvku div na střed nebo doleva, je zastaralý.

Kdy použít DIV

Představte si, že web je lednička a DIV jsou plastové nádoby, podle kterých musíte třídit obsah. Ovoce nebudete dávat do stejné nádoby s játrovkou. Každý druh produktu vkládáte samostatně. Webový obsah je generován podobným způsobem.

Otevřete libovolný web a rozdělte jej do sémantických bloků. Záhlaví nahoře, zápatí dole, hlavní text uprostřed. Na boku bývá menší sloupec s propagačním obsahem nebo tag cloud.

dokument

Nyní rozeberte každou sekci podrobněji. Začněte záhlavím. Záhlaví webu má samostatné logo, navigaci, nadpis první úrovně a někdy i slogan. Ke každému sémantickému bloku přiřaďte svůj vlastní kontejner. To nejen oddělí prvky v toku, ale také usnadní jejich formátování. Bude pro vás mnohem snazší vycentrovat objekt ve značce DIV tím, že mu přidělíte třídu nebo ID.

Zarovnat na střed DIV s okraji

Při vykreslování webových prvků bere prohlížeč v úvahu tři vlastnosti: padding, margining a border. padding je prostor mezi obsahem a jeho okrajem. Margin - pole oddělující jeden objekt od druhého. Hranice jsou čáry podél bloků. Mohou být přiřazeny najednou ze všech nebo pouze z jedné strany:

div( border: 1px solid #333; border-left: none; )

Tyto vlastnosti přidávají volný prostor mezi objekty a také je pomáhají zarovnat a umístit podle potřeby. Pokud například blok s obrázkem potřebuje být posunut od levého okraje ke středu o 20 %, přiřadíte prvku levý okraj s hodnotou 20 %:

Block-with-img(levý okraj: 20 %; )

Prvky lze také formátovat pomocí hodnot jejich šířky a záporného odsazení. Například existuje blok o rozměrech 200 x 200 pixelů. Nejprve mu přiřaďte absolutní pozici a posuňte jej do středu o 50 %.

Div( pozice: absolutní; vlevo: 50 %; )

Nyní, abyste se ujistili, že je DIV dokonale vycentrován, dejte mu záporné levé odsazení rovnající se 50 % jeho šířky, tj. -100 pixelů:

margin-left: -100px

V CSS se tomu říká „odvzdušnění“. Má však značnou nevýhodu v nutnosti provádět konstantní výpočty, což je u prvků s několika úrovněmi vnoření poměrně obtížné. Pokud je nastaveno odsazení a šířka okraje, prohlížeč ve výchozím nastavení vypočítá rozměry kontejneru jako součet šířky okrajů, odsazení napravo, nalevo a samotného obsahu uvnitř, což může být také překvapení.

Takže když potřebujete vycentrovat DIV, použijte vlastnost box-sizing s hodnotou border-box. Zabrání prohlížeči v přidání hodnoty odsazení a okraje k celkové šířce prvku DIV. Chcete-li zvýšit nebo snížit prvek, použijte také záporné hodnoty. Ale v tomto případě mohou být přiřazeny buď k hornímu nebo spodnímu poli kontejneru.

Jak vycentrovat blok div pomocí automatických okrajů

Toto je snadný způsob, jak vycentrovat velké bloky. Jednoduše nastavíte šířku kontejneru a vlastnost margin na auto. Prohlížeč umístí blok doprostřed se stejnými okraji vlevo a vpravo a veškerou práci provede sám. Díky tomu se nevystavujete riziku, že se v matematických výpočtech budete zmást a výrazně ušetříte svůj čas.

Při vývoji responzivních aplikací použijte metodu automatického okraje. Klíčem je dát kontejneru hodnotu šířky v ems nebo procentech. Kód z výše uvedeného příkladu vycentruje DIV na libovolném zařízení, včetně Mobily, zabere 90 % obrazovky.

Zarovnání pomocí zobrazení vlastnosti: inline-block

Ve výchozím nastavení jsou prvky DIV považovány za prvky bloku a mají zobrazenou hodnotu bloku. U této metody budete muset tuto vlastnost přepsat. Vhodné pouze pro DIV s nadřazeným kontejnerem:

Jakýkoli text

Je přiřazen prvek s třídou external-div vlastnost text-align s hodnotou středu, která vycentruje text uvnitř. Prozatím však prohlížeč vidí vnořený DIV jako blokový objekt. Aby vlastnost text-align fungovala, musí být inner-div považováno za vložené. Proto v CSS tabulka pro selektor inner-div napíšete následující kód:

Inner-div( display: inline-block; )

Změníte vlastnost zobrazení z bloku na vložený blok.

metoda transformace/překladu

Kaskádové styly umožňují libovolně přesouvat, zkosit, otáčet a transformovat prvky webu. K tomu se používá vlastnost transform. Požadovaný typ transformace a stupeň jsou specifikovány jako hodnoty. V tomto příkladu budeme pracovat s překladem:

transform: translate(50%, 50%);

Funkce překladu přesune prvek z jeho aktuální pozice doleva/doprava a nahoru/dolů. V závorkách se předávají dvě hodnoty:

  • stupeň horizontálního pohybu;
  • stupeň vertikálního pohybu.

Pokud je třeba prvek posunout pouze podél jedné ze souřadnicových os, zadáte za slovem přeložit název osy a v závorkách velikost požadovaného posunu:

Transform: translateY(-20%);

V některých průvodcích můžete vidět transformaci s předponami dodavatele:

webkit-transform: translate(50%, 50%); -ms-transform: translate(50%, 50%); transform: translate(50%, 50%);

V roce 2018 to již není nutné, vlastnost podporují všechny prohlížeče včetně Edge a IE.

Abychom vycentrovali DIV, který potřebujeme, je funkce translate CSS zapsána s hodnotou 50 % pro vertikální a horizontální osu. To způsobí, že prohlížeč přesune prvek z jeho aktuální pozice na polovinu jeho šířky a výšky. Vlastnosti šířka a výška musí být specifikovány:

dokument

Mějte na paměti, že prvek, na který je aplikována vlastnost transform, se pohybuje bez ohledu na objekty, které jej obklopují. Na jednu stranu je to pohodlné, ale někdy může pohyb DIV překrývat jiný kontejner. Proto je tento způsob centrování webových komponent považován za nestandardní a používá se pouze v případech krajní nutnosti. K animaci se používají transformace podle všech kánonů CSS.

Práce s rozložením Flexbox

Uvažuje se o Flexboxu složitým způsobem rozložení webu. Ale pokud to zvládnete, pochopíte, že je to mnohem jednodušší a příjemnější než standardní způsoby formátování. Specifikace Flexbox je flexibilní a neuvěřitelně výkonný způsob manipulace s prvky. Z anglického jazyka Název modulu je přeložen jako „flexibilní kontejner“. Hodnoty šířky, výšky, uspořádání prvků se upravují automaticky, bez výpočtu odsazení a okrajů.

V předchozích příkladech jsme již pracovali s vlastností display, ale nastavili jsme ji na hodnoty block (block) a inline (inline-block). K vytvoření flex layoutů použijeme display: flex. Nejprve potřebujeme flex kontejner:

Chcete-li jej převést na flex kontejner v kaskádových tabulkách, napíšeme:

Flex-kontejner (displej: flex;)

Všechny objekty v něm vnořené, ale pouze přímé potomky, budou flexibilní položky:

První
Druhý
Třetí
Čtvrtý

Pokud je seznam umístěn do flexibilního kontejneru, pak položky v seznamu li nejsou považovány za flexibilní položky. Rozvržení Flexbox bude fungovat pouze na ul:

Pravidla pro umístění flex položek

Ke správě flexibilních položek potřebujete justify-content a align-items. V závislosti na hodnotách, které zadáte, tyto dvě vlastnosti automaticky umístí objekty podle potřeby. Pokud potřebujeme vycentrovat všechny vnořené DIV, napíšeme justify-content: center, align-items: center a nic jiného. Prohlížeč udělá zbytek práce:

dokument

První
Druhý
Třetí
Čtvrtý

Chcete-li vycentrovat text na prvky DIV, které jsou flexibilními položkami, můžete použít standardní trik pro zarovnání textu. Nebo můžete z každého vnořeného DIV vytvořit flexibilní kontejner a spravovat obsah pomocí justify-content . Tato metoda je mnohem racionálnější, pokud obsahuje různorodý obsah včetně grafiky, dalších vnořených objektů včetně víceúrovňových seznamů.

Každý návrhář rozvržení se neustále potýká s potřebou zarovnat obsah do bloku: vodorovně nebo svisle. Existuje několik dobrých článků na toto téma, ale všechny nabízejí mnoho zajímavých, ale málo praktických možností, a proto musíte ztrácet čas, abyste zdůraznili to hlavní. Rozhodl jsem se, že tyto informace podám ve formě, která mi vyhovuje, abych už negoogloval.

Zarovnání bloků se známými velikostmi

Nejjednodušší způsob použití CSS je zarovnat rámečky, které mají předem stanovenou výšku (pro vertikální zarovnání) nebo šířku (pro horizontální zarovnání).

Zarovnání s vycpávkou

Někdy nemůžete prvek vycentrovat, ale přidat k němu ohraničení pomocí vlastnosti " vycpávka".

Například existuje obrázek 200 x 200 pixelů a chcete jej vycentrovat do bloku 240 x 300. Můžeme nastavit výšku a šířku venkovní jednotka= 200 pixelů a přidejte 20 pixelů pro horní a dolní část a 50 pro levou a pravou stranu.

.example-wrapper1 (pozadí: #535E73; šířka: 200px; výška: 200px; odsazení: 20px 50px;)

Zarovnání absolutně umístěných bloků

Pokud je blok nastaven na " pozice: absolutní", pak jej lze umístit relativně k nejbližšímu rodiči pomocí "pozice: relativní". K tomu jsou všechny vlastnosti (" horní","že jo","dno","vlevo, odjet") vnitřního bloku pro přiřazení stejné hodnoty, stejně jako "margin: auto".

*Je zde nuance: Šířka (výška) vnitřního bloku + hodnota vlevo (vpravo, dole, nahoře) nesmí překročit velikost nadřazeného bloku. Bezpečnější je nastavit vlastnosti left (right, bottom, top) na 0 (nula).

.example-wrapper2 ( position : relativní ; výška : 250px ; background : url(space.jpg) ; ) 0 ; right : 0 ; margin : auto ; background : url(king.png) ; )

Horizontální zarovnání

Zarovnání pomocí "text-align: center"

Chcete-li zarovnat text do bloku, existuje speciální vlastnost " zarovnání textu". Při nastavení na " centrum" každý řádek textu se zarovná vodorovně. Pro víceřádkový text toto řešení se používá velmi zřídka, častěji lze tuto možnost nalézt pro zarovnání rozpětí, odkazů nebo obrázků.

Jednou jsem musel vymyslet text, abych ukázal, jak kdy funguje zarovnání textu Nápověda CSS ale nic zajímavého mě nenapadlo. Nejprve jsem se rozhodl někde zkopírovat říkanku, ale vzpomněl jsem si, že by to mohlo zkazit jedinečnost článku a naši milí čtenáři by ho na Googlu nenašli. A pak jsem se rozhodl napsat sem tento odstavec - koneckonců pointa není u něj, ale pointa je v zarovnání.

.example-text ( text-align : center ; padding : 10px ; background : #FF90B8 ; )

Stojí za zmínku, že tato vlastnost bude fungovat nejen pro text, ale také pro všechny vložené prvky ("display: inline").

Ale tento text je zarovnán doleva, ale je v bloku, který je vystředěn vzhledem k obalu.

.example-wrapper3 ( text-align : center ; background : #FF90B8 ; ) .inline-text ( display : inline-block ; width : 40 % ; padding : 10px ; text-align : left; background : #FFE5E5 ; )

Zarovnání bloků s okraji

Prvky na úrovni bloku se známou šířkou se snadno vodorovně zarovnají nastavením na "margin-left: auto; margin-right: auto". Obvykle se používá zkratka: " okraj: 0 auto" (místo nuly může být jakákoli hodnota). Ale pro vertikální zarovnání tato metoda nebude fungovat.

.lama-wrapper ( výška : 200px ; pozadí : #F1BF88 ; ) .lama1 ( výška : 200px ; šířka : 200px ; pozadí : url(lama.jpg) ; okraj : 0 auto ; )

Takto se vyplatí zarovnat všechny bloky, kde je to možné (tam, kde není vyžadováno pevné nebo absolutní umístění) - je to nejlogičtější a nejpřiměřenější. I když se to zdá samozřejmé, občas jsem viděl zastrašující příklady se zápornými odrážkami, tak jsem si řekl, že to objasním.

Vertikální zarovnání

S vertikálním zarovnáním je mnohem více problémů - zjevně to nebylo v CSS zajištěno. Existuje několik způsobů, jak dosáhnout požadovaného výsledku, ale všechny nejsou příliš krásné.

Zarovnání s vlastností line-height

V případě, že je v bloku pouze jedna čára, můžete dosáhnout jeho vertikálního zarovnání použitím " výška čáry" a jeho nastavení na požadovanou výšku. Pro jistotu byste měli nastavit také "height", jehož hodnota se bude rovnat hodnotě "line-height", protože ta není podporována ve všech prohlížečích.

.example-wrapper4 ( line-height : 100px ; color : #DC09C0 ; background : #E5DAE1 ; height : 100px ; text-align : center ; )

Je také možné zarovnat blok s více čarami. Chcete-li to provést, budete muset použít další blok obalu a nastavit mu výšku řádku. Vnitřní blok může být víceřádkový, ale musí být „inline“. Musíte na něj použít „vertical-align: middle“.

.example-wrapper5 ( line-height : 160px ; height : 160px ; font-size : 0 ; background : #FF9B00 ; ) 1.5 ; vertical-align : middle ; background : #FFFAF2 ; color : #FF9B00: center ; text-align ;)

Obalový blok musí mít nastavenou "velikost písma: 0". Pokud velikost písma nenastavíte na nulu, prohlížeč přidá pár pixelů navíc. Budete také muset určit velikost písma a výšku řádku pro vnitřní blok, protože tyto vlastnosti se dědí od nadřazeného bloku.

Vertikální zarovnání v tabulkách

Vlastnictví " svisle zarovnat" ovlivňuje i buňky tabulky. S hodnotou nastavenou na "middle" je obsah uvnitř buňky vycentrován. Tabulkové rozvržení je dnes samozřejmě považováno za archaické, ale ve výjimečných případech jej lze simulovat zadáním " displej: tabulka-buňka".

Tuto možnost obvykle používám pro vertikální zarovnání. Níže je uveden příklad rozvržení převzatého z hotového projektu. Zajímavý je obrázek, který je takto vertikálně vycentrován.

.one_product .img_wrapper ( display : table-cell ; height : 169px ; vertical-align : middle ; overflow : hidden ; background : #fff ; width : 255px ; ) .one_product img ( max-height : 169px ; max-width : 100px % ; minimální šířka : 140 pixelů ; zobrazení : blok ; okraj : 0 auto ; )

Je třeba pamatovat na to, že pokud má prvek nastaven jiný "float" než "none", pak bude mít i tak tvar bloku (zobrazení: blok) - pak budete muset použít další obal bloku.

Zarovnání s dalším vloženým prvkem

A pro vložené prvky můžete použít " svisle zarovnat: na střed". V tomto případě všechny prvky s " displej: inline", které jsou na stejné čáře, se zarovnají se společnou středovou čarou.

Musíte vytvořit pomocný blok s výškou rovnou výšce nadřazeného bloku, poté bude požadovaný blok vycentrován. K tomu je vhodné použít pseudoelementy:before nebo:after.

.example-wrapper6 ( height : 300px ; text-align : center ; background : #70DAF1 ; ) .pudge ( display : inline-block ; vertical-align : middle ; background : url(pudge.png) ; background-color : # fff ; width : 200px ; height : 200px ; ) .riki ( display : inline-block ; height : 100 % ; vertical-align : middle ; )

Displej: flex a zarovnání

Pokud se o uživatele Exploreru 8 příliš nestaráte nebo vám na nich záleží natolik, že jste ochotni pro ně vložit kus javascriptu navíc, můžete použít „display: flex“. Flex boxy zvládají problémy se zarovnáním opravdu dobře a pro vycentrování obsahu uvnitř stačí napsat „margin: auto“.

Zatím mě tato metoda prakticky nikdy nepotkala, ale žádná zvláštní omezení pro ni nejsou.

.example-wrapper7 ( display : flex ; height : 300px ; background : #AEB96A ; ) .example-wrapper7 img ( margin : auto ; )

No a to je vše, o čem jsem chtěl napsat CSS zarovnání. Centrování obsahu nyní nebude problém!

Často je v praxi nutné řešit problém seskupování a zarovnávání obsahu pomocí CSS. Dnes se podíváme na hlavní způsoby uspořádání prvků v horizontální řadě.

Materiál tohoto článku má pomoci začínajícím webdesignérům osvojit si techniky rozvržení webových stránek.

Co si vybrat nebo metody

Existuje několik způsobů, jak uspořádat konstrukční prvky v řadě v horizontální rovině. nejužitečnější z hlediska praktická aplikace, jsou:

  • "Float" metoda
  • Metoda "Inline block".
  • metoda tabulka-buňka

Každý z nich má své výhody, aplikace a nevýhody. Zvažme je v pořadí.

"Pro blbce" nebo trochu teorie

Vše strukturální HTML prvky lze podmíněně rozdělit na:

V souladu(vestavěný) - typ img, rozpětí a podobně. Nemáme možnost změnit jejich pozadí a dát jim libovolné lineární rozměry.

Blok– zabírající celou šířku nadřazeného bloku, vždy začněte s nový řádekp, h, div.

Názorný příklad inline a blokových struktur je uveden níže:

Float metoda

Jak již bylo známo (viz výše), prvek bloku je umístěn na nový řádek bez ohledu na šířku, která je pro něj určena ( šířka). Proto zmenšení horizontální velikosti div-a, nemůžete stavět bloky v řadě.

Nejoblíbenější (zejména mezi začínajícími dispozičními designéry) způsob řešení je využití nemovitosti plovák.

Vlastnost CSS plovák získal velkou oblibu a praktickou hodnotu po přechodu z tabulkového uspořádání na blokové.

Plovák: vlevo (vpravo) transformuje prvek na úrovni bloku na plovoucí, zarovná jej k levému (pravému) okraji nadřazeného bloku a nastaví obtékání vpravo (vlevo) textu a dalších prvků.

Vytvořme například čtyři bloky, které je třeba umístit do řady:

< html> < head> < meta charset= "utf-8" > < link rel= "stylesheet" media= "all" type= "text/css" href= "style.css" /> < body> < div class = "bblock" >Stavíme < div class = "bblock" >horizontální < div class = "bblock" >řádek < div class = "bblock" >od divas

A externí šablonu stylů s následujícím obsahem:

div(float:left; /*Nastavit balení*/ line-height: 120px; velikost písma: 40px; pozadí: dodgerblue; barva bílá; margintop: 60px; šířka: 320px /*Opravit šířku bloku*/ }

Výsledkem jsou čtyři bloky uspořádané v horizontální řadě a zarovnané k levému okraji nadřazeného bloku:

Někdy je v praxi nutné zarovnat bloky k pravému okraji nadřazeného prvku. Změňme obalování bloků v předchozím příkladu:

plovák:pravý;

Věnujte pozornost nápisům umístěným v blocích. Na první pohled se může zdát, že příklad fungoval nakřivo. Ale ve skutečnosti prohlížeč zpracoval kód správně: přečetl bloky shora dolů a udělal to, co jsme od něj požadovali – zarovnáno vpravo. Mějte to na paměti při užívání nemovitosti plovák:vpravo.

Chcete-li zastavit tok prvků z určitého místa, použijte řádek:

< div style= "clear: both;" >

Ve výše uvedeném příkladu nastavíme vzdálenost mezi bloky pomocí odsazení okraj-pravý. Co když ale máte při rozvržení stránky úkol: umístit bloky do řady, vycentrovat je a dokonce tak, aby odsazení bylo pouze mezi nimi, ale ne mimo?

Algoritmus akcí je následující.

< div class = "wrap" > < div class = "bblock" >Stavíme < div class = "bblock" >horizontální < div class = "bblock" >řádek < div class = "bblock" >od divas

wrap(width: 1310px; /*opravit šířku obalu*/ okraj: 0 auto; /*vycentrovat*/ pozadí: darkgray; výška: 120px; /*Nastavit výšku obalu*/). bblock (plovoucí: vlevo; /*Nastavit balení*/ line-height: 120px; /*Výška řádku + vert. centrování textu*/ velikost písma: 40px; pozadí: dodgerblue; barva bílá; šířka: 320px /*Opravit šířku bloku*/ pravý okraj: 10px; text-align: center; /*Vycentrujte text vodorovně*/). wrap : last-child ( margin-right: 0px; /*Odstranit okraj posledního div*/ }

V důsledku toho dostaneme následující obrázek:

Nemůžete zvážit všechny praktické situace, takže přejděme k obecným funkcím.

Důležité!!!

Inline bloková metoda

Inline i blokové prvky mají své výhody a nevýhody v kontextu každého konkrétního řešeného úkolu. Ale co když spojíme jejich výhody?

Seznamte se s vrcholem programu - vlastností displej: inline-block.

displej: inline-block vygeneruje prvek block-inline, který je v podstatě inline, ale zachovává vlastnosti bloku – umožňuje měnit lineární rozměry, nastavovat okraje, odsazení atd.

Vložený prvek bloku má následující vlastnosti:

  • výška a šířka bloku je určena automaticky podle obsahu a hodnoty odsazení ( vycpávka)
  • výšku a šířku bloku lze nastavit
  • Neexistuje žádný efekt srážení hranic.

Zvažte příklad vytvoření jednoduchého navigační menu A obsahující obrázek a odkaz.

< div class = "nav" > < p>< img src= "./vaden-pro-logo.png" alt= "" /> < p class = "string" >< a href= "#" >Odkaz na nabídku 1 je delší než obvykle < div class = "nav" > < p>< img src= "./vaden-pro-logo.png" alt= "" /> < p class = "string" >< a href= "#" >Odkaz na menu 2 < div class = "nav" > < p>< img src= "./vaden-pro-logo.png" alt= "" /> < p class = "string" >< a href= "#" >Odkaz na menu 3 < div class = "nav" > < p>< img src= "./vaden-pro-logo.png" alt= "" /> < p class = "string" >< a href= "#" >Odkaz na menu 4

Nav ( displej: inline-block; /*Nastavit zobrazení blokového řádku*/šířka: 180px /*nastavit šířku bloku*/ pozadí: dodgerblue; ). string(text-align: center; /*Zarovnat text vodorovně*/ }

Výsledkem je následující nabídka:

Jak vidíte, dopadlo to křivě ... Ale nehodláme se rozčilovat, a tak na naše divy aplikujeme vlastnost CSS svisle zarovnat(podrobnosti viz níže):

svisle zarovnat: nahoře;

Náš navigační panel je nyní zarovnán k hornímu řádku:

Uvedený příklad je samozřejmě primitivní, ale jsem si jist, že na jeho základě můžete vytvořit skutečné mistrovské dílo!!!

Důležité!!!

  • Pro starce verze Firefoxu přidat řádek:

    zobrazení: -moz-inline-stack;


    a zabalte prvek do dalšího obalu div.
  • IE 7 a starší - přidejte řádky:

    zoom: 1 /*set hasLayout*/ * display: inline; /*hvězdička - hack pro IE */ _height: 250px; /*min-height nefunguje v IE6*/

  • Podotýkám, že konkrétní prohlížeče na tyto řádky reagují selektivně (Firefox na první, IE na zbytek).

Metoda tabulky

Tabulkový přístup na dlouhou dobu byl standard rozložení, což bylo způsobeno především jednoduchostí a intuitivností označení. S největší pravděpodobností to způsobilo vzhled formátování tabulky v CSS.

Vlastnosti displej: tabulka (buňka tabulky, inline-tabulka), umožňují provádět tabulkové formátování prvků bez HTML aplikace tabulky.

Pro horizontální umístění bloků potřebujeme nadřazený prvek, který má vlastnost displej: tabulka a podřízené prvky (buňky), které mají vlastnost displej: tabulka-buňka:

< div class = "wrap" > < div class = "bblock" >Stavíme < div class = "bblock" >tabelární < div class = "bblock" >řádek < div class = "bblock" >od divas

Bblock ( displej: tabulka- buňka; velikost písma: 32px; šířka: 200px; výška: 200px; pozadí: zlatá; zarovnání textu: na střed; svislé zarovnání: na střed; ) . wrap ( display: table; border-spacing: 20px 20px; background- color: darkgrey; )

Důležité!!!

  1. Na rozdíl od metod „inline-block“ a „float“ se při zmenšení šířky okna webového prohlížeče buňky neposouvají dolů.
  2. Nemáte možnost nastavit vlastnost margin pro buňky pseudotabulky.
  3. Křížový prohlížeč. Vlastnosti ze zobrazení: rodina table* nejsou podporovány IE6, IE7. V IE8 také můžete vidět chybu dynamického vykreslování pro prvky pseudotabulky jako náhodně mizející buňky. Tato chyba nejčastěji se projevuje při prvotním kreslení dokumentu

Dobrý den, předplatitelé a čtenáři této publikace. Dnes chci jít do detailů a říct vám, jak vycentrovat text v css. V některých předchozích článcích jsem se tohoto tématu nepřímo dotkl, takže nějaké znalosti v této oblasti máte.

V tomto příspěvku vám však povím o všemožnými způsoby zarovnání objektů a vysvětlí, jak odsadit a znovu podtrhnout odstavce. Pojďme se tedy začít učit!

Html a jeho potomci
a zarovnat

Tato metoda se téměř nikdy nepoužívá, protože byla nahrazena nástroji kaskádových stylů. Vědět, že taková značka existuje, vám však neublíží.

Co se týče validace tento výraz podrobně popsáno v článku ""), pak samotná html specifikace použití odsuzuje < střed>, protože pro platnost je nutné použít přechodník DOCTYPE>.

Tenhle typpřeskakuje zakázané prvky.

CENTRUM

Nyní přejdeme k atributu zarovnat. Nastaví vodorovné zarovnání objektů na deklaraci značky a vejde se za ni. Obvykle jej lze použít k zarovnání obsahu doleva ( vlevo, odjet), po pravé straně ( že jo), na střed ( centrum) a šířku textu ( ospravedlnit).

Níže uvedu příklad, ve kterém umístím obrázek a odstavec na střed.

zarovnat

Tento obsah bude vycentrován.

Všimněte si, že pro obrázek má atribut, který analyzujeme, mírně odlišné hodnoty.

V příkladu, který jsem použil align="střední". Díky tomu je obrázek zarovnán tak, aby se věta nacházela přesně uprostřed obrázku.

CSS centrovací nástroje

Mnohem častěji se používají vlastnosti CSS navržené k zarovnání bloků, textu a grafického obsahu. Je to především kvůli pohodlí a flexibilitě implementačních stylů.

Začněme tedy první vlastností centrování textu – to je text-zarovnat.

Funguje stejně jako zarovnání v . Mezi klíčovými slovy si můžete vybrat jedno z obecného seznamu nebo zdědit vlastnosti předka ( zdědit).

Chci poznamenat, že v css3 můžete nastavit další 2 parametry: Start– v závislosti na pravidlech psaní textu (zprava doleva nebo naopak) nastaví zarovnání doleva nebo doprava (podobně jako práce zleva nebo zprava) a konec- naproti začátku (při psaní textu zleva doprava se chová jako pravá, při psaní zprava doleva - doleva).

zarovnání textu

Nabídka vpravo

Věta používající konec

Řeknu vám o malém triku. Při výběru hodnoty ospravedlnit poslední řádek může zespodu ošklivě viset. Chcete-li jej umístit například do středu, můžete použít nemovitost text-align-last.

Chcete-li obsah webu nebo buňky tabulky zarovnat svisle, použijte vlastnost svisle zarovnat. Níže jsem popsal to hlavní klíčová slovaživel.

Klíčové slovo účel
základní linie Určuje zarovnání k linii předka, která se nazývá účaří. Pokud předkový objekt takovou čáru nemá, dojde k zarovnání podél spodního okraje.
střední Střed proměnlivého objektu je zarovnán k účaří, ke kterému je přidána výška nadřazeného prvku.
dno Spodní část vybraného obsahu se přizpůsobí spodní části objektu pod tím vším.
horní Podobně jako dole, pouze s horní částí objektu.
super Vytvoří horní index postavy.
sub Vytvoří dolní index prvku.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 svisle zarovnat
C V E TÓNa

svisle zarovnat

C V E TÓNa

Odsazení

A konečně jsme se dostali k odsazení v odstavci. Jazyk css používá speciální vlastnost tzv odsazení textu.

S ním můžete vytvořit červenou čáru i římsu (je třeba zadat zápornou hodnotu).

odsazení textu

K vytvoření červené čáry potřebujete znát pouze jeden parametr.

Je to jednoduchá vlastnost odsazení textu.