Почну з того, що це питання ділиться на 2 питання. По-перше, як вирівняти div або будь-який інший елемент по вертикалі в браузері, а, по-друге, як вирівняти що-небудь, наприклад, текст в діві. Підемо по порядку.
Також варто зауважити, що я до сих пір не знаю ЖОДНОГО нормального способоа вертикально вирівнювати діви, який би працював без огріхів у ВСІХ браузерах.
Вирівнювання div по центру по вертикалі
Є 2 способи, абсолютний і релевантний. Наприклад, щоб відцентрувати щодо
, у якого ширина-висота 100% і відступи обнулені, пишемо:div # center background: #CCC; / * для наочності * /
width: 300px;
height: 200px;
position: absolute;
top: 50%;
left: 50%;
margin-top: -100px;
margin-left: -150px;
>
div # Splash background: #CCC; / * для наочності * /
width: 50%;
height: 50%;
position: absolute;
top: 25%;
left: 25%;
>
На цей раз для позиціонування блоку використовуємо лише координати його лівого верхнього кута. Віднімаємо із загальної висоти зовнішнього блоку (на початку статті вирішили що це буде
) Висоту центрована блоку (100% - 50% = 50%). ділимо її навпіл і отримуємо top: 25%. Також чинимо з шириною і відповідно відступом зліва (в прикладі: left: 25%).Вирівнювання тексту в діві
Як всі знають, у всіх нормальних браузерах (НЕ IE.) Працює це:
Для наступного, наприклад, коду:
- Текст, який потрібно вирівняти по центру по вертикалі ...
А ось в IE (як в 5,6, так і в 7-8) начнается всякі різні збочення. Вони або засновані на релевантних позиціях і процентних відступи, або на java expression. На жаль, ні ті, ні інші способи вирівнювання div в IE можна назвати ідеальними, проте, інших альтернатив немає.
- div
- height: 200px;
- display: table-cell;
- vertical-align: middle;
- >
- div p
- margin-top: expression ((parentNode.offsetHeight - this.offsetHeight)<0. «0″. (parentNode.offsetHeight — this.offsetHeight)/2 + «px»)
- >
- Текст, який потрібно вирівняти по центру по вертикалі ...
lenzi, e profondissima quiete
infinito silenzio a questa voce vo comparando:
- .wrap
- display: table-cell;
- vertical-align: middle;
- width: 100%;
- height: 401px;
- >
- .just-for-IE
- display: none;
- width: 1px;
- margin-left: -1px;
- >
- * Html .just-for-IE, * html .valign-center
- display: inline-block;
- vertical-align: middle;
- >
- * Html .valign-center
- width: 100%;
- >
- * Html .just-for-IE
- height: 100%;
- >
- * Html .just-for-IE, * html .valign-center
- display: inline;
- >