CSS: vertikalus teksto lygiavimas. Elementų derinimas

Problemos teiginys: būtina nustatyti vertikalų išlygiavimą eilutiniams arba įterptiniams bloko elementams bloko elemento viduje.

Problemos sprendimo būdai. Yra įvairių būdų, apsvarstykite pagrindinius:

1. Pateikite bloko elementą kaip lentelės langelį (rodymas: lentelė-ląstelė).
2. IE6-7: išraiškos metodas.
3. Tarpų tarp eilučių (eilutės aukščio savybė) ir bloko aukščio (vienos eilutės elementų) išlyginimas.
4. Padėties nustatymas išoriniu bloku (pozicija: absoliuti).

Na, apibendrinant, apsvarstykite kitą metodą:

5. Lygiavimas naudojant vertikalaus lygiavimo savybę.

ekranas: lentelės langelis

Vertikaliam lygiavimui pirminiam blokui taikoma ypatybė display: table-cell, todėl elementas imituoja lentelės langelį. Prie jo taip pat nustatytas aukštis ir vertikalus lygiavimas: vidurys:

Vertikalus lygiavimas. Ekranas: lentelės langelis

Privalumai:

  • Paprastumas;
  • Sulygiuoja tiek vieną, tiek kelias eilutes.

Minusai:

  • Neveikia IE7 ir senesnėse versijose;
  • Sunku manipuliuoti horizontalia lauko bloko padėtimi be papildomų konstrukcijų;
  • Ne visiems patinka ekrano naudojimas: lentelės langelis.

IE6-7: išraiškos metodas

Nes ankstesnis metodas neveikia IE6-7, tada turite išspręsti šią problemą.

Išraiška – trumpos JS kodo dalys, kurios dedamos į stiliaus lapą, vykdomos vieną kartą ir veikia tik IE. Išraiška neteisinga. Pridėkite šią kodo dalį prie ankstesnio pavyzdžio stiliaus failuose, skirtuose IE6 ir 7:

Įpakavimo priemonė p (z-indeksas: išraiška (runtimeStyle.zIndex = 1, this == ((200/2) -parseInt (offsetHeight) / 2))< 0 ? style.marginTop="0" : style.marginTop=(200/2)-(parseInt(offsetHeight)/2) +"px"); }

Nėra prasmės svarstyti privalumus ir trūkumus, tk. nėra jokių privalumų, išskyrus tai, kad šis metodas papildo pirmąjį IE6-7, bet nuo to laiko šios naršyklės jau pasenusios, galite prieš jas užmerkti akis.

linijos aukštis

Norėdami sulygiuoti vieną teksto eilutę, pirminiam blokui galite naudoti tą patį aukštį ir tarpus tarp eilučių. Tinka mygtukams, meniu elementams ir kt.

Vertikaliai išlygiuota eilutė

Privalumai:

  • Paprastumas;
  • Suderinamumas tarp naršyklių.

Minusai:

  • Tinka tik vienos eilutės elementams;
  • Leidžia lygiuoti tik centre.

padėtis ir neigiama marža aukštyn

Elementą galima išlygiuoti vertikaliai, nurodant jam fiksuotą aukštį ir taikant padėtį: absoliučią ir neigiamą paraštės viršų, lygią pusei lygiuojamo elemento aukščio. Pirminiam blokui turi būti priskirta padėtis: santykinė:

Vertikalus lygiavimas. Linijos aukščio metodas

Aš esu vertikaliai išlygintas

Privalumai:

  • Suderinamumas tarp naršyklių;
  • Elementus galite lygiuoti centre arba bet kurioje kitoje padėtyje.

Minusai:

  • Daug laiko reikalaujantis elementų;
  • Sunku valdyti;
  • Turite žinoti ir nustatyti elemento aukštį;
  • Kai kuriose naršyklėse absoliutus padėties nustatymas gali pabloginti našumą.

Apatinė populiarių metodų eilutė

Kaip matote, šie metodai nėra universalūs – kiekvienas iš jų turi, nors ir nedidelių, trūkumų. Ekranas: table-cell metodas pasirodo pats universaliausias, bet man jis niekada nepatiko, be to, IE6-7 palaikymo neatsisakėme jau labai seniai. Todėl reikėjo dirbti prie kažko universalesnio. Apsvarstykite galimybę lygiuoti vertikaliai.

Lygiavimas su vertikaliu lygiavimu

Kaip žinote, vertikaliojo lygiavimo ypatybė neveikia bloko elementams, todėl nenaudinga jiems taikyti šią savybę. Tačiau ši savybė puikiai tinka įterptiesiems ir eilutiniams blokiniams elementams. Jei bandysime pritaikyti šią savybę elementams bloko elemento viduje, gausime tokį vaizdą:

1 elementas 2 elementas 3 elementas 4 elementas 5 elementas

Kaip matote, elementai išlygiuoti linijos, o ne viso bloko atžvilgiu, o tai mums netinka. Tada pabandykime įtraukti elementą į bloko vidų (kadangi inline elemento aukščio nustatyti negalima, elementas turi būti inline-block), kurio aukštis lygus išorinio bloko aukščiui. Papildyti (parodyta paveikslėlyje žemiau su pilka linija) ir gauname:


Vertikalus lygiavimas. Vertikalaus išlyginimo metodas

1 elementas 2 elementas 3 elementas 4 elementas 5 elementas

Nustatykime visus elementus vertikalus lygiavimas: viduryje.


Na, mes taip sutelkėme vieną eilutę. Ką daryti, jei jums reikia kelių eilučių? Ir čia nėra problemų. Jums tereikia nustatyti ekraną: teksto elementų eilutinį bloką:


Vertikalus lygiavimas. Vertikalaus išlyginimo metodas

1 elementas Elementas su dviem
teksto eilutės
3 elementas 4 elementas Elementas
su trimis
teksto eilutės

Jei suderinamumas su senesnėmis IE versijomis mums nėra svarbus, tada elementas galime pašalinti ir pakeisti jo stilius:

Įvynioklis: po (turinys: ""; ekranas: eilutinis blokas; aukštis: 100 %; plotis: 0 piks.; perpildymas: paslėptas; vertikaliai lygiuoti: viduryje;)

Verta atkreipti dėmesį į keletą dalykų:

  • Sulygiuotų elementų negalima perkelti.
  • Tarp gretimų eilutinio bloko elementų visada yra atstumas, todėl jei juos reikia prispausti vienas prie kito, išoriniam blokui nustatykite šrifto dydį: 0px; ir atkurti pačius elementus nustatydami norimą reikšmę.
  • Tokiu būdu vidiniams elementams galite nustatyti tas pačias reikšmes (viršuje, apačioje arba viduryje), ir skirtingas.

Privalumai:

Mėnesinio mokėjimo už svetainės reklamavimą paieškos sistemoje poreikis. Pagrindinis darbas svetainėje, siekiant efektyvaus jos reklamavimo ir darbo sąnaudų
Norėčiau 1 kartą mokėti už savo svetainės reklamą ir visada būti aukštoje konkurencinių užklausų paieškos rezultatuose, ar tai įmanoma?

Eismo skatinimas: klientų klausimai ir atsakymai
Nemažai klausimų apie svetainės lankomumo skatinimą. Tarifavimo niuansai, darbų kainos apskaičiavimas, abonentiniai mokesčiai.

Dažnai užduodami klausimai apie žiniatinklio analizę (DUK)
Klausimai, kuriuos dažnai užduoda žiniatinklio analizės paslaugos ir pačios paslaugos teikimo klientai. Kas yra žiniatinklio analizė? Kodėl projektui reikalinga žiniatinklio analizė? Kodėl reikia apibrėžti KPI ir kas jie yra? ir kt.

Kokie darbai NEĮtraukiami į SEO reklamuojant „Pixel Plus“?
Optimizavimas paieškos sistemoms apima didelį sąrašą darbų, kurių reikia norint pasiekti maksimalų rezultatą... Tačiau kokie darbai neįeina į SEO apmokėjimą?

Tekstų prieinamumas interneto svetainės reklamai, SEO tekstų optimizavimas paieškos užklausoms
Kodėl jums reikia teksto svetainėje? Niekas jo neskaito!

Reklamavimo ir svetainės reklamavimo rezultatų keitimo laikas, „Yandex“ (Yandex) reakcijos į svetainės pokyčius greitis
Mėnesį mokėjau už interneto svetainės reklamavimo paslaugas. Praėjo 10 dienų ir pozicijos Yandex nepagerėjo, dirbate ten ar ne?

Dažnai rinkimo metu reikia vertikaliai išlygiuoti tekstą bloke. Jei tai reikia padaryti lentelės langelyje, tada nustatoma vertikalaus lygiavimo CSS ypatybės reikšmė.

Tačiau kyla pagrįstas klausimas, ar galima apsieiti be lentelės, neperkraunant puslapio žymėjimo nereikalingomis žymomis? Atsakymas yra „galite“, tačiau dėl prasto CSS palaikymo MSIE naršyklėje jos problemos sprendimas skirsis nuo kitų įprastų naršyklių sprendimo.

Apsvarstykite toliau pateiktą fragmentą kaip pavyzdį:



Kažkoks tekstas

ir pabandykite vertikaliai sulygiuoti tekstą su bloko centru ir apatiniu bloko kraštu.

Problemos sprendimas

„Teisingos“ naršyklės (įskaitant MSIE

Dauguma šiuolaikinių naršyklių palaiko CSS2.1, ty lentelės langelio reikšmę rodymo ypatybei. Tai suteikia mums galimybę padaryti bloką su tekstu rodomą kaip lentelės langelį ir, pasinaudodami tuo, sulygiuoti tekstą vertikaliai:

div (
ekranas: lentelės langelis;
vertikalus lygiavimas: vidurys;
}

div (
ekranas: lentelės langelis;
vertikalus lygiavimas: apačioje;
}

Internet Explorer (iki 7-osios versijos imtinai)

Norėdami išspręsti problemą dėl teksto lygiavimo su apatiniu bloko kraštu MSIE, galite naudoti absoliučią padėties nustatymą (čia mums reikia įterpto elemento, įdėto į bloką):

div (
padėtis: santykinė;
}
div span (
ekranas: blokas;
padėtis: absoliuti;
dugnas: 0%;
liko: 0 %;
plotis: 100%;
}

Šis taisyklių rinkinys veikia ir „tinkamose“ naršyklėse.

Nurodykite savybes

Div span (
ekranas: blokas;
plotis: 100%;
}

nebūtina, bet gali prireikti, jei be vertikalaus teksto lygiavimo planuojate naudoti horizontalų lygiavimą, pavyzdžiui, teksto lygiavimas: centre;.

Vertikaliai išlygiuoti tekstą bloko centre, originalus fragmentas vis tiek turės būti sudėtingas - pristatysime dar vieną eilutinį elementą:

Studijų medžiaga:

  • Vertikalus centravimas CSS (www.jakpsatweb.cz/css/css-vertical-center-solution.html)
  • Vertikalus centravimas naudojant CSS (www.student.oulu.fi/%7Elaurirai/www/css/middle/)
  • Vertikalus lygiavimas (www.cssplay.co.uk/ie/valign.html)
  • Vertical-align: viduryje (cssing.org.ua/2005/07/14/vertical-align-middle/)
  • Kitas būdas vertikaliai lygiuoti CSS (cssing.org.ua/2007/04/26/another-css-valign-method)
Įvairių elementų lygiavimas, pavyzdžiui, svetainėje ar puslapyje, iš pradžių kažkam yra nelengva užduotis, kuri išjudina vertikalų teksto lygiavimą. Kaip bebūtų keista, vienas iš sudėtingesnių CSS naudojimo būdų yra turinio sutelkimas. Centruoti turinį horizontaliai tam tikrais laiko momentais gana lengva. Beveik visada sunku centruoti turinį vertikaliai. Kito elemento centravimas vertikaliai išlygiuoti naudojant CSS. Tai tikrai labai dažnai užduodamas klausimas, keliantis problemų dizaineriams ir žiniatinklio valdytojams. Tačiau yra daug vertikaliojo centravimo metodų, ir kiekvieną iš jų gana paprasta naudoti.

Jei kada nors bandėte, tai sudėtinga, ypač jei nenorite naudoti lentelių. Laimei, mūsų pagalbos šauksmai buvo išgirsti, o vienas iš naujų ginklų, įtrauktų į CSS arsenalą, siekiant tai išspręsti, yra išdėstymo tipas, žinomas kaip lankstus dėžutės išdėstymas. Kaip jūs sužinosite po kelių akimirkų, tai suteikia jums keletą tikrai puikių funkcijų, supaprastinančių sudėtingus išdėstymus. Kai kurios šios puikios funkcijos taip pat leidžia sutelkti turinį vertikaliai ir horizontaliai, ką aptarsime šioje mokymo programoje. Tam tikru mastu galite tai padaryti naudodami paminkštinimus, tačiau tai gali perkelti jūsų išdėstymą į mažesnius ekranus. Pridėjus tinkintą CSS klasę prie stiliaus lapo, per kelias sekundes galite vertikaliai sucentruoti bet kokį turinį.

Horizontalus lygiavimas nustato, kaip kairysis ir dešinysis pastraipos kraštai yra išlygiuoti tarp kairiojo ir dešiniojo teksto laukelio kraštų. Vertikalus lygiavimas nustato vertikalią simbolio vietą teksto laukelyje. Gerų būdų, kaip vertikaliai centruoti elementus CSS, nebuvimas buvo tamsus jos reputacijos trūkumas beveik visą jo egzistavimą.

Pirmasis metodas su linijos aukščiu

Pirmasis metodas yra paprastas ir šiek tiek banalus, kuriame yra trūkumų, dėl kurių bus taikomi apribojimai. Koduojant svetainės HTML puslapius, teksto turinio eilučių tarpai tikriausiai yra vienas iš atributų, kuris paprastai išlieka numatytasis. Apskritai, turime nustatyti pačios linijos aukštį, kuris yra panašus į bloko kur aukštį linijos aukštis nuosavybė.


Tai pirmasis demonstracinėse versijose parodytas metodas



CSS

Constutesim_first (
kraštinė: 2px solid # bf1515;
aukštis: 175px;
}
.constutesim_first> p (
eilutės aukštis: 175 pikseliai;
paraštė: 0;
teksto lygiavimas: centre;
paminkštinimas: 0;
šrifto dydis: 17 pikselių;
spalva: # 3152a0;
šriftų šeima: Tahoma;
šrifto svoris: paryškintas;
}


Taip pat iš pirmo žvilgsnio galite pamatyti, kaip viskas atrodys realybėje.

Panašiu būdu galima įgyvendinti, kaip eksponuoti vaizdą, kuris bus centre ir tikrai vertikaliai. Belieka tik užregistruoti vieną nuosavybę vertikaliai sulygiuoti: vidurys; kuri yra atsakinga už vaizdo rodymą.


.png "> Antrasis variantas, pateikiamas kartu su vaizdu


CSS

Antrasis variantas (
kraštinė: 2px vientisa raudona;
linijos aukštis: 158 pikseliai;
}

Antrasis variantas div (
teksto lygiavimas: centre;
}
.second-variation img (
vertikalus lygiavimas: vidurys;
kraštinė: 0px solid # 3a3838;
}


Vaizdus įgyvendiname centre ir vertikalia kryptimi.

Sulygiavimas su padėties savybe

Tai turbūt labiausiai žinoma technika, tačiau dažniausiai naudojama su CSS. Tačiau čia reikia pridurti, kad jis taip pat nėra idealus, o šis metodas taip pat turi savo nedidelių niuansų, susijusių su elemento centru, kad jei jis bus nustatytas procentais, jis bus centre kairėje elemento pusėje. viršutinėje pusėje, paties tinklaraščio viduje.




CSS

Competaird parinktis (
kraštinė: 2px solid # d40e0e;
aukštis: 162px;
padėtis: santykinė;
}
.competaird-option div (
padėtis: absoliuti;
viršuje: 50%;
liko: 50%;
aukštis: 28%;
plotis: 49%;
marža: -2% 0 0 -25%;
kraštinė: 2px solid # 4a4848;
}


Tarpai tarp eilučių arba eilutės aukštis yra vertikalus aukštis tarp teksto eilučių pateiktame HTML puslapyje. Beveik visada šią atstumo reikšmę į atitinkamą reikšmę nustato naršyklė arba atvaizdavimo priemonė. Ši reikšmė paprastai priklauso nuo rodomo puslapio šrifto ir kitų veiksnių.

Sulygiavimas su lentelės savybe

Šiuo metodu naudojame išbandytą seną metodą, kai elementus perdarysime į lentelę, kurioje yra ląstelės. Kalbant apie žymą lentelė, ji čia nebus naudojama, čia mes nustatysime visiškai kitą CSS ypatybę, tai yra display: table ;, display: table-cell ;. Jei kalbėsime apie seniausias IE versijas, tada čia esantys duomenys tiesiog nebus rodomi. Tikiuosi, kad atnaujinote naršyklę, nes ji paseno ir beveik viskas rodoma netinkamai.

Chereverto variacija (
kraštinė: 2px solid # c30b0b;
aukštis: 173px;
ekranas: stalas;
plotis: 100%;
šrifto dydis: 17 pikselių;
šrifto svoris: paryškintas;
spalva: # 3945a0;
}

Chereverto variantas div (
ekranas: lentelės langelis;
vertikalus lygiavimas: vidurys;
teksto lygiavimas: centre;
}


Pirmiausia pažvelkime į numatytąjį, kurį naudoja dauguma naršyklių. Daugumoje šiuolaikinių dieninių naršyklių tarpai tarp eilučių.

Suderinimas su lankstumo savybe

Čia mes pasiekiame originalesnę versiją, kuri turi savo savybes, kurias retai galima rasti interneto šaltinio išdėstyme. Bet vis tiek jie taikomi, kad kai kuriais atvejais yra naudingi. Taip nustatoma pagrindinė ašis, kad krypties apibrėžimas tilptų į diskelių talpyklą.


Suderinimas su lankstumo savybe


CSS

Variantas-horizontalus (
kraštinė: 2px solid # d20c0c;
aukštis: 147px;
ekranas: lankstus;
sulyginti elementus: centre;
pateisinti-turinys: centras;
šrifto dydis: 18 pikselių;
šrifto svoris: paryškintas;
spalva: # 49518c;
}


Galite nurodyti eilutės aukščio reikšmę taip pat, kaip nurodytumėte bet kurį kitą css dydį, kaip skaičių, pikselių dydį arba procentą.

Sulygiavimas su transformacijos savybe

Ir dabar mes priėjome prie ekstremalausio metodo, bet ne prie paskutinio, kalbant apie jo naudojimą interneto dizaino srityje. Čia viskas paprasta, nurodytą elementą reikia perkelti vertikaliai pagal jums reikalingą vertę. Nuosavybė transformuoti, tai yra transformacijų, kurias diegimo programa taiko diegdama paketą, sąrašas. Montuotojas taiko transformacijas tokia tvarka, kokia jos nurodytos nuosavybėje.


Sulygiavimas su transformacijos savybe


CSS

Vertikali-medilpasudsa (
kraštinė: 2px solid # e00a0a;
aukštis: 158px;
šrifto dydis: 19 pikselių;
šrifto svoris: paryškintas;
spalva: # 353c71;
}
.vertical-medilpasudsa> div (
padėtis: santykinė;
viršuje: 50%;
transformuoti: translateY (-50%);
teksto lygiavimas: centre;
}


Kai pateiksite reikšmes kaip skaičių, jis bus pagrįstas dabartiniu šrifto dydžiu kaip pagrindu. Dabartinis šrifto dydis padauginamas iš jūsų nurodyto skaičiaus, kad būtų galima apskaičiuoti eilutės aukštį arba tarpą tarp eilučių.

Jei norite centruoti simbolius elemente horizontaliai, turite naudoti text-align: center. Viena parinktis, jei norite centruoti vertikaliai ir turite fiksuotą poraštę bei vieną teksto eilutę, nustatykite eilutės aukštį taip, kaip ir poraštės aukštis.

Jei reikia centruoti tekstą elemente, pvz., div, antraštėje ar pastraipoje, galite naudoti CSS teksto lygiavimo ypatybę.

Teksto lygiavimas turi keletą galiojančių savybių:

Centras: Tekstūra yra centre;
liko: Sulygiuos į kairę konteinerio pusę;
dešinėje: Sulygiuotas su konteinerio dešine puse
pateisinti: Priverstas lygiuotis tiek kairiajame, tiek dešiniajame konteinerio krašte, išskyrus kraštutines linijas;
pateisinti viską: Sukelia kraštutinę eilutę, kad pateisintų simbolius;
pradžia: Tas pats kaip ir kairėje, tik jei kryptis eina iš kairės į dešinę. Bet tai bus teisinga, jei iš pradžių nustatysite teksto krypties kryptį, kuri vyks iš dešinės į kairę;
Galas: Pradžios priešingybė;
atitikmuo: Panašiai kaip ir paveldėjimas, išskyrus pradžią ir pabaigą, jis apskaičiuojamas pagal pirminį elementą;

Naudokite šias ypatybes, kad lygiuotumėte tekstą pirminiame arba vyniojamajame div. Jei norite elemento tekstą centruoti horizontaliai, turite naudoti text-align: center.

Viena parinktis, jei norite centruoti vertikaliai, jei turite fiksuotą antraštę ir vieną teksto eilutę, nustatykite eilutės aukštį taip, kad jis būtų toks pat kaip poraštės aukštis.

Naudojant CSS kai kuriuos iš pažiūros paprastus dalykus atlikti nėra lengva. Vienas iš šių dalykų yra lygiavimas, t.y. kai vieną elementą reikia išdėstyti tam tikru būdu kito atžvilgiu.

Šiame straipsnyje pateikiami keli paruošti sprendimai, padėsiantys supaprastinti centravimo elementų darbą horizontaliai ir (arba) vertikaliai.

Pastaba: po kiekvienu sprendimu yra naršyklių sąrašas, kuriame nurodomos versijos, kuriose veikia nurodytas CSS kodas.

CSS – išlygiuoti bloką centre

1. Sulygiuokite vieną bloką su kito centru. Šiuo atveju pirmasis ir antrasis blokai turi dinaminius matmenis.

...
...

Tėvas (pozicija: santykinis;) .vaikas (pozicija: absoliuti; kairėje: 50 %; viršuje: 50 %; -webkit-transform: išversti (-50%, -50%); -moz-transform: versti (-50%) , -50 %); -ms-transform: išversti (-50%, -50%); -o-transform: išversti (-50%, -50%); transformuoti: išversti (-50%, -50%) ;)

  • Chrome 4.0 ir naujesnės versijos
  • Firefox 3.6+
  • Internet Explorer 9+
  • Opera 10.5+
  • Safari 3.1+

2. Sulygiuokite vieną bloką su kito centru. Šiuo atveju antrasis blokas turi fiksuotus matmenis.

Tėvas (padėtis: santykinis;) .vaikas (pozicija: absoliuti; kairėje: 50%; viršuje: 50%; / * 2 blokų plotis ir aukštis * / plotis: 500 pikselių; aukštis: 250 pikselių; / * Reikšmės nustatomos remiantis jo dydis * / / * paraštė-kairė = - plotis / 2 * / paraštė-kairė: -250 pikselių; / * paraštė-viršus = - aukštis / 2 * / paraštė-viršus: -125 pikseliai;)

Naršyklės, palaikančios šį sprendimą:

  • Chrome 1.0 ir naujesnė versija
  • Firefox 1.0+
  • Internet Explorer 4.0+
  • Opera 7.0+
  • Safari 1.0+

3. Sulygiuokite vieną bloką su kito centru. Šiuo atveju antrojo bloko matmenys nurodyti procentais.

Tėvas (padėtis: santykinis;) .vaikas (pozicija: absoliuti; / * 2 blokų plotis ir aukštis % * / aukštis: 50%; plotis: 50%; / * Reikšmės nustatomos pagal jo dydį % * / kairėje: 25 %; / * (100 % – plotis) / 2 * / viršuje: 25 %; / * (100 % – aukštis) / 2 * /)

Naršyklės, palaikančios šį sprendimą:

  • Chrome 1.0 ir naujesnė versija
  • Firefox 1.0+
  • Internet Explorer 4.0+
  • Opera 7.0+
  • Safari 1.0+

CSS – horizontalus lygiavimas

1. Vieno bloko elemento (ekranas: blokas) lygiavimas kito (kuriame jis yra) atžvilgiu horizontaliai:

...
...

Blokuoti (kairė paraštė: automatinė; paraštė dešinė: automatinė;)

Naršyklės, palaikančios šį sprendimą:

  • Chrome 1.0 ir naujesnė versija
  • Firefox 1.0+
  • Internet Explorer 6.0+
  • Opera 3.5+
  • Safari 1.0+

2. Eilutinio (vaizdo: įterptinio) arba eilutinio bloko (vaizdo: įterptinio bloko) elemento lygiavimas horizontaliai:

...
...

Parent (teksto lygiavimas: centre;) .child (rodymas: eilutinis blokas;)

Naršyklės, palaikančios šį sprendimą:

  • Chrome 1.0 ir naujesnė versija
  • Firefox 3.0+
  • Internet Explorer 8.0+
  • Opera 7.0+
  • Safari 1.0+

CSS – vertikalus lygiavimas

1. Centruokite vieną elementą (ekranas: įterptasis, ekranas: inline-block) kito (kuriame jis yra) atžvilgiu centre. Šiame pavyzdyje pirminis laukelis turi fiksuotą aukštį, kuris nustatomas naudojant CSS eilutės aukščio ypatybę.

...
...

Parent (linijos aukštis: 500 tšk.;) .child (ekranas: eilutinis blokas; vertikaliai sulygiuotas: vidurys;)

Naršyklės, palaikančios šį sprendimą:

  • Chrome 1.0 ir naujesnė versija
  • Firefox 3.0+
  • Internet Explorer 8.0+
  • Opera 7.0+
  • Safari 1.0+

2. Vieno bloko centravimas vertikaliai kito atžvilgiu, pirminį elementą vaizduojant kaip lentelę, o antrinį - šios lentelės langelius.

Parent (ekranas: lentelė;) .child (rodas: lentelės langelis; vertikaliai lygiuoti: viduryje;)

Naršyklės, palaikančios šį sprendimą:

  • Chrome 1.0 ir naujesnė versija
  • Firefox 1.0+
  • Internet Explorer 8.0+
  • Opera 7.5+
  • Safari 1.0+

Jei žinote kitų įdomių gudrybių ar naudingų paruoštų lygiavimo sprendimų, pasidalykite jais komentaruose.

Kiekvienas maketuotojas nuolat susiduria su būtinybe lygiuoti turinį bloke: horizontaliai arba vertikaliai. Yra keletas gerų straipsnių šia tema, tačiau jie visi siūlo daug įdomių, bet mažai praktinių galimybių, todėl jūs turite skirti daugiau laiko, kad pabrėžtumėte pagrindinį dalyką. Šią informaciją nusprendžiau pateikti man patogia forma, kad daugiau neieškočiau jos.

Blokų sulygiavimas su žinomais matmenimis

Lengviausias būdas naudoti CSS yra sulygiuoti blokus, kurių aukštis yra iš anksto nustatytas (vertikaliai lygiuoti) arba plotis (horizontaliam lygiavimui).

Sulyginimas su paminkštinimu

Kartais galite necentruoti elemento, bet pridėti prie jo kraštines naudodami " kamšalas".

Pavyzdžiui, turite 200 x 200 pikselių paveikslėlį ir norite jį centruoti 240 x 300 bloke. Galime nustatyti išorinio langelio aukštį ir plotį = 200 pikselių ir pridėti 20 pikselių viršuje ir apačioje bei 50 kairėje ir dešinėje .

.example-wrapper1 (fonas: # 535E73; plotis: 200 piks.; aukštis: 200 piks.; užpildymas: 20 piks. 50 piks.;)

Absoliučiai išdėstytų dėžių išlygiavimas

Jei blokas nustatytas į " padėtis: absoliuti", tada jis gali būti išdėstytas, palyginti su artimiausiu pirminiu, naudojant" poziciją: santykinis ". Norėdami tai padaryti, visos savybės turi būti (" viršuje","teisingai","apačioje","paliko") priskirkite tą pačią reikšmę vidaus įrenginiui, taip pat " paraštę: auto ".

* Yra niuansas: vidinio bloko plotis (aukštis) + kairiojo (dešinėje, apačioje, viršuje) reikšmė neturi viršyti pirminio bloko dydžio. Saugiau kairiąsias (dešinėje, apačioje, viršuje) savybes nustatyti į 0 (nulis).

.example-wrapper2 (pozicija: santykinė; aukštis: 250 taškų; fonas: url (tarpas.jpg);) .cat-king (plotis: 200 pikselių; aukštis: 200 pikselių; padėtis: absoliuti; viršuje: 0; kairėje: 0; apačioje: 0; dešinė: 0; paraštė: automatinė; fonas: url (king.png);)

Horizontalus lygiavimas

Lygiuoti su "teksto lygiavimas: centre"

Yra speciali savybė, skirta lygiuoti tekstą bloke " teksto lygiavimas". Kai nustatyta reikšmė" centras"Kiekviena teksto eilutė bus lygiuojama horizontaliai. Kelių eilučių tekstui šis sprendimas naudojamas retai, dažniau šią parinktį galima rasti tarpatramių, nuorodų ar paveikslėlių lygiavimui.

Kartą turėjau sugalvoti tekstą, kad parodyčiau, kaip veikia teksto lygiavimas su CSS, bet nieko įdomaus neatėjo į galvą. Iš pradžių nusprendžiau kur nors nukopijuoti vaikišką eilėraštį, bet prisiminiau, kad tai gali sugadinti straipsnio išskirtinumą ir mūsų brangūs skaitytojai jo neras Google. Ir tada nusprendžiau parašyti šią pastraipą čia – juk esmė ne su ja, o esmė lygiuojasi.

.example-text (teksto lygiavimas: centre; užpildymas: 10 pikselių; fonas: # FF90B8;)

Reikėtų pažymėti, kad ši savybė veiks ne tik tekstui, bet ir bet kokiems įterptiesiems elementams ("display: inline").

Tačiau šis tekstas lygiuojamas į kairę, bet jis yra bloke, kuris yra sulygiuotas centre, atsižvelgiant į įvyniojimą.

.example-wrapper3 (teksto lygiavimas: centre; fonas: # FF90B8;) .inline-text (rodymas: inline-block; plotis: 40 %; užpildymas: 10 pikselių; teksto lygiavimas: kairėje; fonas: # FFEfee;)

Dėžučių sulygiavimas su paraštėmis

Blokų elementai, kurių plotis žinomas, lengvai sulygiuojami horizontaliai, jei nustatytas į "margin-left: auto; margin-right: auto". Paprastai naudojamas sutrumpintas žymėjimas: " marža: 0 auto"(Vietoj nulio gali būti naudojama bet kokia vertė). Tačiau šis metodas neveiks vertikaliam lygiavimui.

.lama-wrapper (aukštis: 200 taškų; fonas: # F1BF88;) .lama1 (aukštis: 200 pikselių; plotis: 200 pikselių; fonas: url (lama.jpg); paraštė: 0 automatinis;)

Taip verta sulygiuoti visus blokus, kur įmanoma (kur nereikia fiksuoto ar absoliutaus pozicionavimo) – tai logiškiausia ir adekvatiausia. Nors tai atrodo akivaizdu, kartais matydavau bauginančių pavyzdžių su neigiamomis paraštėmis, todėl nusprendžiau patikslinti.

Vertikalus lygiavimas

Daug daugiau problemų kyla su vertikaliu lygiavimu – matyt, tai nebuvo numatyta CSS. Yra keletas būdų, kaip pasiekti norimą rezultatą, tačiau jie visi nėra labai gražūs.

Sulygiavimas su linijos aukščio savybe

Tuo atveju, kai bloke yra tik viena eilutė, vertikalią jos išlygiavimą galite pasiekti naudodami " linijos aukštis"ir nustatykite jį į norimą aukštį. Kad būtų saugu, taip pat turėtumėte nustatyti" aukštis ", kurio reikšmė bus lygi "line-height" reikšmei, nes pastaroji palaikoma ne visose naršyklėse.

.example-wrapper4 (linijos aukštis: 100 taškų; spalva: # DC09C0; fonas: # E5DAE1; aukštis: 100 pikselių; teksto lygiavimas: centre;)

Taip pat galima pasiekti blokų išlygiavimą keliomis eilutėmis. Norėdami tai padaryti, turėsite naudoti papildomą apvyniojimo bloką ir nustatyti jo aukštį. Vidinis blokas gali būti kelių eilučių, tačiau būtinas „įdėtas“. Jai turite pritaikyti „vertikalus lygiavimas: vidurys“.

.example-wrapper5 (eilutės aukštis: 160 pikselių; aukštis: 160 pikselių; šrifto dydis: 0; fonas: # FF9B00;) .example-wrapper5 .text1 (rodymas: inline-block; šrifto dydis: 14 pikselių; eilutės aukštis: 1.5; vertikalus lygiavimas: viduryje; fonas: # FFFAF2; spalva: # FF9B00; teksto lygiavimas: centre;)

Apvyniojimo bloke turi būti nustatytas „font-size: 0“. Jei šrifto dydžio nenustatysite iki nulio, naršyklė pridės keletą papildomų pikselių iš savęs. Taip pat turėsite nurodyti vidinio bloko šrifto dydį ir eilutės aukštį, nes šios savybės yra paveldimos iš pirminio bloko.

Vertikalus lygiavimas lentelėse

Nuosavybė " vertikaliai išlyginti"taip pat veikia lentelės langelius. Nustačius reikšmę" vidurinis "turinys langelio viduje yra centruotas. Žinoma, šiais laikais lentelės išdėstymas laikomas archajišku, tačiau išskirtiniais atvejais galite jį imituoti nurodant" ekranas: lentelės langelis".

Aš dažniausiai naudoju šią parinktį vertikaliam lygiavimui. Žemiau pateikiamas išdėstymo pavyzdys, paimtas iš paruošto projekto. Įdomu yra paveikslėlis, kuris tokiu būdu centruojamas vertikaliai.

.one_product .img_wrapper (rodymas: lentelės langelis; aukštis: 169 piks.; vertikaliai lygiuoti: viduryje; perpildymas: paslėptas; fonas: #fff; plotis: 255 pikseliai;) .one_product img (maks. aukštis: 169 piks.; maks. plotis: 100 %; min. plotis: 140 piks.; ekranas: blokas; paraštė: 0 automatinis;)

Reikėtų prisiminti, kad jei elementas turi "plūduriuoti" kitokį nei "nėra", tai bet kuriuo atveju jis bus blokas (rodymas: blokas) - tada turėsite naudoti papildomą apvyniojimo bloką.

Lygiavimas su papildomu įterptu elementu

O įterptiesiems elementams galite taikyti " vertikalus lygiavimas: viduryje". Šiuo atveju visi elementai su" ekranas: įdėtas", kurie yra toje pačioje linijoje, bus suderinti su bendra vidurio linija.

Turite sukurti pagalbinį bloką, kurio aukštis lygus pagrindinio bloko aukščiui, tada norimas blokas bus centre. Tam patogu naudoti: prieš arba: po pseudoelementus.

.example-wrapper6 (aukštis: 300 tšk.; teksto lygiavimas: centre; fonas: # 70DAF1;) .pudge (vaizdas: inline-block; vertikaliai sulygiuotas: viduryje; fonas: url (pudge.png); fono spalva: # fff; plotis: 200 tšk.; aukštis: 200 pikselių;) .riki (ekranas: eilutinis blokas; aukštis: 100%; vertikaliai lygiuoti: viduryje;)

Ekranas: lankstykite ir išlyginkite

Jei jums per daug nerūpi „Explorer 8“ vartotojai arba jums taip rūpi, kad jų labui norite įterpti papildomą „Javascript“, galite naudoti „display: flex“. „Flex boxes“ puikiai susidoroja su lygiavimo problemomis ir tiesiog parašykite „margin: auto“, kad centruotų turinį.

Iki šiol šis metodas man praktiškai nepasitaikė, tačiau specialių apribojimų jam nėra.

.example-wrapper7 (ekranas: lankstus; aukštis: 300 pikselių; fonas: # AEB96A;) .example-wrapper7 img (paraštė: automatinis;)

Tai viskas, ką norėjau parašyti apie CSS suderinimą. Dabar centruoti turinį nebus problemų!