veselov.sumy.ua > CSS, XHTML > Позиционирование блоков горизонтально
Позиционирование блоков горизонтально28.11.09. |
Сразу скажу что эти решения не подходят для ИЕ6. Вообще мое мнение надо отстреливать всех кто использует этот браузер -) Шутка -)
Штука намбер ван (обычно приходилось применять php): Нужно сделать вот так: ![]() Делаем html каркас:
<div id="wrapper"> <div class="section"></div> <div class="section"></div> <div class="section"></div> </div> Для того, чтобы горизонтально расположить блоки в оболочке, нам потребуется всего несколько строк CSS кода. Первое, что приходит в голову: объявить класс .section со свойствами width и margin-right, с нужными нам значениями. Но при этом правый отступ крайнего правого элемента будет выступать за границы оболочки: ![]() Так как правый отступ крайнего правого элемента превышает ширину оболочки, по правилам разметки крайний правый блок «уйдет» вниз: ![]() Возникает вопрос: как убрать «лишний» отступ у крайнего правого блока без специального CSS класса, у которого свойство margin-right будет задано 0? Именно здесь и стоит вспомнить о селекторе :first-child, и инвертировать правые отступы на левые. Таким образом, чтобы у первого блока отступ слева был нулевым. Напрашивается вопрос: зачем инвертировать? Все дело в том, что в IE7|8 поддержка :first-child добавлена, а :last-child нет. Экономят? Итак, давайте посмотрим на CSS код решения. Сперва определим оболочку:
#wrapper { width:320px; height:60px; background:#EFEFEF; } Теперь объявим класс содержимого оболочки .section:
.section { border:solid 1px #999; float:left; height:58px; margin-left:10px; width:98px; } В примере используются фиксированные значения свойств width и margin-left. Вы на свое усмотрение можете использовать и процентные отношения. Теперь нам надо убрать отступ слева у первого блока, делается это так: #wrapper div:first-child { margin-left:0px; } ![]() Вернуться назад |