Выравнивание блока по центру произвольной ширины
Как вы знаете, чтобы выровнить блок по центру с фиксированной шириной, нужно написать свойство margin:0 auto. Но что делать, если ширина блока произвольная? Ответ вы сейчас узнаете.
Итак, чтобы выровнить блок произвольной ширины по центру по горизонтали, нужно сделать следующее:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Выравниваем блок по центру</title> <style type="text/css"> .container { position: relative; width: 100%; border:1px dotted #F00; } .container:after { content: ''; display: block; clear: both; } .blockCenter { position: relative; right: 50%; float: right; } .center { position: relative; z-index: 1; right: -50%; border:1px dotted #060; } </style> </head> <body> <div class="container"> <p>Приведенный ниже блок будет находиться по центру и растягиваться относительно контента</p> <div class="blockCenter"> <div class="center"> Ширина этого блока зависит от контента </div> </div> </div> </body> </html> |
Комментарии (3) на “Выравнивание блока по центру произвольной ширины”
Оставить комментарий
Для вставки кода используйте <code> ... </code>.
В IE6 совсем не работает. Даже текст не отображается.
Рецепт хорош, но не все так гладко. На практике в такие блоки нужно вставлять не просто текст, а, например, меню. В этом случае в IE6 (будь он неладен) блок съезжает к левому краю. Чтобы исправить этот недостаток код нужно немного переписать. Привожу конкретный пример, работающий во всех браузерах:
Пункт меню
Пункт меню
Пункт меню
Пункт меню
Пункт меню
Для такого варианта стили будут следующими:
.topmenu {
height: 88px;
position: relative;
width: 100%;
}
.center_box {
position: relative;
right: 50%;
float: right;
}
#top_header_menu {
list-style-type: none;
overflow: hidden;
height: 48px;
position: relative;
left: 50%;
}
#top_header_menu li {
display: block;
height: 44px;
float: left;
padding-right: 3px;
padding-left: 2px;
}
#top_header_menu li a {
display: block;
padding-right: 12px;
padding-left: 12px;
height: 44px;
line-height: 44px;
float: left;
}
#top_header_menu li span {
display: block;
color: #F59F0A;
padding-right: 12px;
padding-left: 12px;
height: 44px;
line-height: 44px;
float: left;
}
Для IE6 нужно дополнительно прописать правило:
#top_header_menu {
float: left;
}
В результате получаем меню, центрированное по центру блока, ширина которого будет меняться.
проще center поставить по бокам