CSS Vertikālās centrēšanas problēma
10. April, 2007, 12:22 PamācībasLiela daļa izstrādātāju, kas tikko sākuši eksperimentēt ar CSS bāzētiem
izkārtojumiem, vienā brīdī atduras pret problēmu, kas saucas “vertikālā centrēšana”.
Problēma tā ir tāpēc, ka CSS nepiedāvā ērtus veidus kā to darīt. Faktiski CSS
pat nepiedāvā nekādus veidus kā to izdarīt. Praktiski visi Internetā
atrodamie risinājumi un koncepti ir sava veida CSS haki. Un neviens no tiem
nav ideāls. Pat ne tuvu ideālam.
Es iesaku mest pie malas CSS centrēšanu, un vienkārši izmantot vienas šūnas
tabulu, lai panāktu to.
<div style="border: 1px solid black; height: 200px;">
<table style="vertical-align: middle; height: 100%; padding: 0; border: 0;”>
<tr>
<td>
Centrējamie elementi
</td>
</tr>
</table>
</div>
Šis kods praktiski visos browseros (arī vecos) renderēsies vienādi un
vajadzīgais teksts (vai elementi) centrēsies.
| Centrējamais teksts vai elementi |
Reāli iepriekš dotajā koda piemērā tabula pat netiek izmantota priekš
izkārtojuma. Tā vairāk ir kā palīgelements, kas ievietots dokumentā priekš
CSS formatēšanas. Tā arī neizjauc dokumenta secību. Manuprāt, ja tabula tiek
izmantota šādi, tad tās izmantojums no semantiskuma viedokļa ir tik pat
attaisnojams kā papildus <div> (vai citu) elementu izmantošana CSS
vajadzībām.
Arī W3C WCAG saka:
Do not use tables for layout unless the table makes sense when linearized.
Es savā piemērā izmantoju inline stilus, bet reāli šos stilus vajadzētu
pārnest ārējā CSS failā. Ja tā izdara, tad kods pat būs daudz maz “tīrāks” nekā
dažām labām CSS vertikālās centrēšanas metodēm.
Resursi:


10. April, 2007, 18:21
O, demogoģijas pamatus lasam.
…tabula pat netiek izmantota priekš izkārtojuma…
Tiek gan :P
10. April, 2007, 18:53
Atvainojos, ja nebūšu precīzi izteicies.
Es ar vārdu “izkārtojums” jeb “layout” saprotu konceptu kā kaut kādi elementi vizuāli novietojas attiecībā viens pret otru. Šajā gadijumā, kur tabulai ir tikai viena šūna, tā neietekmē kaut kādu elementu vizuālās pozīcijas/attiecības vienam pret otru. Tabula iekļaujas kopējā dokumenta vertikālajā plūsmā uz leju kā jebkurš parasts cits elements.
Protams, pilnīgi semantiski pareizi tas tāpat nav, bet pagaidām tas varētu būt labs apkārt-risinājums.
11. April, 2007, 9:27
Kā ir ar line-height izmantošanu? :)
11. April, 2007, 9:41
line-height darbojas, bet tai ir ierobežojumi. Sīkāk http://www.student.oulu.fi/~laurirai/www/css/middle/
17. April, 2007, 18:04
un ekrāna vidū tas var iecentrēt DIV elementu ?
23. November, 2007, 17:42
http://blog.eroguru.lv/blog/elements-vertikali-pa-vidu/