Page 271 - Сила CSS3 Освой новейший стандарт
P. 271

Создание многостолбцовых макетов без плавающих полей  •  271

          Горизонтальная центровка навигационной полосы
          Теперь обратим внимание на следующий элемент страницы, навигационную полосу.
          Наша задача — выполнить ее горизонтальную центровку. Однако для этого недо-
          статочно будет присвоить свойству box-align в обрамляющем div-блоке значение
          center — как вы помните, оно работает только для вертикального пространства
          вокруг горизонтальных полей (и наоборот для вертикальных полей). Нам необхо-
          димо свойство, управляющее дополнительным пространством по той же оси, вдоль
          которой выводятся блоки, — в данном случае по горизонтали.


          иСчезающие поля и Блоки
            Если вы применяете модель гибкого поля только для пары элементов, а не для всего макета
            страницы, высока вероятность того, что у вас в коде окажется элемент со свойством float
            или overflow, у которого также есть свойство display со значением box или который явля-
            ется дочерним по отношению к гибкому полю. В любом случае, это приведет к проблемам.

            В Safari и Chrome есть ошибка, из-за которой дочерние элементы полей, имеющие свойство
            float, а также пустое пространство вокруг них, исчезают. Хотя свойство float не рекоменду-
            ется использовать с дочерними элементами гибких полей, оно никак не должно влиять на
            отображение, а попросту игнорироваться. В Firefox есть аналогичная ошибка, но исчезают
            блоки, имеющие свойство overflow, а не float.

            Обе эти ошибки значительно затрудняют объединение модели гибкого поля со старыми
            методами верстки на одной странице (для обеспечения совместимости со старыми брау-
            зерами). Например, на странице из нашего примера элементы li — плавающие, благодаря
            чему ссылки во всех браузерах выстраиваются в одну линию по горизонтали. Для того
            чтобы элемент ul ограничивал свои плавающие дочерние элементы, можно применить
            один из распространенных методов изоляции плавающих элементов: сделать элемент ul
            плавающим или установить для него overflow: auto или overflow: hidden. Но элемент ul —
            дочерний по отношению к гибкому полю, и если сделать его плавающим, он пропадет
            в браузерах Webkit, а если использовать свойство overflow — в Firefox.



          Именно для этого предназначено свойство box-pack. С помощью него элемент ul
          можно переместить в центр div-блока nav-main. Для этого сперва превратите div-
          блок nav-main в гибкое поле и присвойте его свойству box-pack значение center.
          Внесите следующие изменения в существующее правило #nav-main:
          #nav-main {
              display: -moz-box;
              display: -o-box;
              display: -webkit-box;
              display: box;
              -moz-box-pack: center;
              -o-box-pack: center;
              -webkit-box-pack: center;
              box-pack: center;


                                                        www.trk.kg
   266   267   268   269   270   271   272   273   274   275   276