Как разместить элементы списка горизонтально? Нумерованный список Сопоставьте html тег с его описанием ol.

Нумерованные списки представляют собой набор элементов с их порядковыми номерами. Вид и тип нумерации зависит от атрибутов тега

    , который и применяется для создания списка. Каждый пункт нумерованного списка обозначается тегом
  1. , как показано ниже.

    1. Первый пункт
    2. Второй пункт
    3. Третий пункт

    Если не указывать никаких дополнительных атрибутов и просто написать тег

      , то по умолчанию применяется список с арабскими числами (1, 2, 3,...), как показано в примере 11.3.

      Пример 11.3. Создание нумерованного списка

      Нумерованный список

      Работа со временем

      1. создание пунктуальности (никогда не будете никуда опаздывать);
      2. излечение от пунктуальности (никогда никуда не будете торопиться);
      3. изменение восприятия времени и часов.

      Результат данного примера показан на рис. 11.3.

      Рис. 11.3. Вид нумерованного списка

      Заметьте, что в нумерованном списке также добавляются автоматические отступы сверху, снизу и слева от текста.

      В качестве нумерующих элементов могут выступать следующие значения:

      • арабские числа (1, 2, 3, ...);
      • прописные латинские буквы (A, B, C, ...);
      • строчные латинские буквы (a, b, c, ...);
      • прописные римские числа (I, II, III, ...);
      • строчные римские числа (i, ii, iii, ...).

      Для указания типа нумерованного списка применяется атрибут type тега

        . Его возможные значения приведены в табл. 11.2.

        Табл. 11.2. Типы нумерованного списка
        Тип списка Код HTML Пример
        Арабские числа

        1. Чебурашка
        2. Крокодил Гена
        3. Шапокляк
        Прописные буквы латинского алфавита

        A. Чебурашка
        B. Крокодил Гена
        C. Шапокляк
        Строчные буквы латинского алфавита

        a. Чебурашка
        b. Крокодил Гена
        c. Шапокляк
        Римские числа в верхнем регистре

        I. Чебурашка
        II. Крокодил Гена
        III. Шапокляк
        Римские числа в нижнем регистре

        i. Чебурашка
        ii. Крокодил Гена
        iii. Шапокляк

        Чтобы начать список с определенного значения, используется атрибут start тега

          . При этом не имеет значения, какой тип списка установлен с помощью type , атрибут start одинаково работает и с римскими и с арабскими числами. В примере 11.4 показано создание списка с использованием римских цифр в верхнем регистре, начинающихся с восьми.

          Пример 11.4. Нумерация списка

          Римские числа

          1. Король Магнум XLIV
          2. Король Зигфрид XVI
          3. Король Сигизмунд XXI
          4. Король Хусбрандт I

          Результат данного примера показан на рис. 11.4.

          Рис. 11.4. Нумерованный список с римскими числами

          Списки бывают нумерованными и ненумерованными.

          Нумерованные списки выводятся кодом:

            Список с цифрами
          1. пункт 1
          2. пункт 2
          3. пункт 3

          Не нумерованные списки выводятся кодом:

            Список с галочками или другими символами
          • пункт 1
          • пункт 1
          • пункт 1

          Каждый пункт любого списка заключается в тег li. Все пункты списка заключаются в один общий тег ul или ol. Стили этих тегов прописываются в таблице стилей.

          Для каждого тега присваиваются определенные стили оформления. В них указываются отступы от текста.

          Для нумерованного списка прописываются стили нумерации для каждого пункта.

          Стандартные арабские цифры описываются значением decimal.

          list-style-type: decimal; /*арабские цифры*/

          Для маркерованного списка указывается стиль символов — квадратики или кружочки.

          list-style-type: circle; /*кружки*/
          list-style-type: square; /*квадраты*/

          Каждому пункту меню можно назначить изображение.

          list-style-image: url(‘путь к изображению’);

          Обычно в шаблонах нумерованный список оформляется простыми цифрами, а не нумерованный – черными квадратиками и кружочками. Это скучно и невыразительно. Давайте это исправим.

          Где стили списков прописаны в шаблоне Twenty Eleven?

          Откройте файл стилей style.css. Найдите раздел с названием /* Text elements */

          Стандартный код выглядит вот так:

          Как оформить нумерованный список?

          Нумерованный список с использованием фона

          Посмотрите вот на такое симпатичное оформление нумерованного списка.

          Нравится? Давайте повторим.

          Найдите стили для тега ol. Пропишите к нему новые свойства.

          Ol { padding: 0px 0 0 20px; margin: 0.5em 0 1.571em 1.9em; color: #2E2E2E; list-style-type: none; font: 15px/17px Verdana, Arial, Helvetica, sans-serif; z-index: 2; counter-reset: point; } ol li { margin-bottom: 4px; line-height: 1.6; color: #2E2E2E; position: relative; } ol li:before { margin-bottom: 4px; counter-increment: point 1; line-height: 1.6; height: 24px; margin-left: -36px; left: 0px; width: 24px; margin-top: 1px; background: #BDC3C7; content: counter(point); text-align: center; position: absolute; font-weight: bold; }

          Для того чтобы вы поняли, где что вам нужно изменить под свой дизайн, давайте разберем этот код по полочкам.

          list-style-type: none; — отключает вывод стандартных цифр
          counter-reset: point; — задает переменную для счетчика нумерации
          position: relative; — размещает нумерацию возле самих пунктов

          before — псевдоэлемент для тега ol li. Имеет следующие стили:
          content: counter(point); — выводит значение переменной
          counter-increment: point 1; — увеличивает счетчик на 1
          position: absolute;
          background: #BDC3C7; — фон для цифр (фон можно задать цветом или красивой иконкой
          margin – внешние отступы
          padding – внутренние отступы
          color – цвет текста элемента
          background – фон
          text-align – выравнивание текста
          font-weight – толщина (насыщенность) шрифта

          В своих стилях вы можете задать любые цвета, выравнивания, размеры шрифта и отступы.

          Нумерованный список с уникальным изображением для каждого пункта

          На одном женском сайте есть очень привлекательные нумерованные списочки.

          Как это реализовано? Давайте рассмотрим следующий код:

          /*первый номер*/ ol li:first-child { list-style-image: url(путь к изображению с цифрой 1); } /*второй номер*/ ol li:nth-child(2n) { list-style-image: url(путь к изображению с цифрой 2); } /*третий номер*/ ol li:nth-child(3n) { list-style-image: url(путь к изображению с цифрой 3); } /*четвертый номер*/ ol li:nth-child(4n) { list-style-image: url(путь к изображению с цифрой 4); } /*Далее прописываем точно также только для следующих номеров пунктов*/

          В коде такого нумерованного списка нужно перечислить все номера пунктов и для каждого из них назначить уникальную иконку.

          Если в списках в статьях вы используете до 20 нумерованных пунктов, то нужно прописать псевдокласс nth-child(An) 20 раз. Так чтобы последним в стилях шел псевдокласс nth-child(20n).

          Найдите в файле стилей строчки, которые описывают оформление нумерованного списка (теги ol li).

          Допишите в него псевдокласс first-child. Скопируете и вставьте его один раз, затем измените данное свойство на nth-child(An) и скопируете столько, сколько номеров должны иметь свою иконку. Проставьте номера пунктов.

          Для каждого номера пропишите свойство list-style-image с собственной уникальной иконкой.

          Если иконки на сайте располагаются далеко от пунктов или накладываются на них, то нужно отредактировать выравнивание и отступы цифровых иконок или текста пунктов.

          Как оформить маркированный (ненумерованный) список?

          Маркированный список ul li с чередующимися иконками

          Мне очень понравился вот такой маркированный список

          Ul { padding: 11px 0 5px 0; } ul li { padding-left: 32px; margin-bottom: 10px; font: normal 15px Verdana, sans-serif; color: #2E2E2E; line-height: 1.6; border-bottom: 1px dashed #ccc; padding-bottom: 10px; } ul li:before { content: ""; position: absolute; width: 27px; height: 24px; margin-left: -35px; margin-top: -2px; background: url("images/sprite.jpg") 0px 2px no-repeat; list-style-type: circle; } ul li:nth-child(2n):before { content: ""; position: absolute; width: 27px; height: 43px; margin-left: -35px; margin-top: -2px; background: url("images/sprite.jpg") 0px -17px no-repeat; list-style-type: circle; }

          Можно вместо стандартного стиля list-style-type назначить свойство «путь к иконке» — list-style-image:url. Но тогда нужно прописать внешний левый отступ от краешков сайта — без него иконки не будут отображаться, уйдут за зону области контента.

          Для эксперимента можно назначить отступы:

          Ul li{ list-style-image: url(images/radio.png); margin-left: 30px; }

          Чередование иконок можно задать свойством nth-child(An). В приведенном примере использован псевдоэлемент before.

          В коде прописан один псевдокласс nth-child(2n). Его значение — 2. Получается, что каждому четному пункту соответствует другая иконка. Если вместо 2n написать 2n+1, то другая иконка будет приходиться на нечетные пункты.

          Для каждого пункта списка можно задать нижнее подчеркивание. В приведенном примере пункты подчеркиваются пунктиром.

          Также каждому пункту можно назначить рамочки, фон, иконки. Только не перемудрите. Наша задача — не сразить всех наповал навороченным дизайном, а улучшить качество восприятия контента.

          Как вывести на странице несколько списков с разным оформлением?

          Иногда нужно разместить несколько списков с разными стилями.

          Если назначить общие стили, то одно и то же оформление будет присвоено всем спискам. Разные списки можно вывести, если назначить тегу ol или ul отдельный id и прописать его в html режиме редактирования статьи. Ну а в файле стилей для этого id нужно прописать отдельные стили.

          Вот, например, один симпатичный вариант оформления содержания:

          В HTML вы пропишите список так:

            Содержание
          1. пункт 1
          2. пункт 2
          3. пункт 3

          В CSS вы пропишите стили так:

          Ol#sod{ padding: 0px 20px 10px 51px; margin: 0.5em 0 0em 1em; color: #2E2E2E; list-style-type: none; background: #f1f4f5; border-left: #BDC3C7 4px solid; display: inline-block; } ol#sod li{} ol#sod li:before{ font-weight:normal !important }

          Новый стиль отличается от основного оформлением тега ol: фоном, стилем отображения, линией слева от содержимого.

          Используя в тексте несколько разных по оформлению списков, вы сделаете подачу информации еще интереснее. При перечислении каких-либо предметов можно задать одни иконки, а при перечислении действий — другие. Здесь уже дизайн ограничивается только вашей фантазией.

          Эти методы применимы и в дизайне пунктов меню, рубрик и любых других элементов сайта.

          Как создать ссылки-якоря в списке содержания?

          Как же их прописать в HTML коде? Один кусочек кода обрамляет анкор ссылки, а другой кусочек кода ставится рядом с тем местом, куда нас нужно перебросить при нажатии на ссылку.

            Содержание
          1. Заголовок 1
          2. Заголовок 2
          3. Заголовок 3

          А в тексте статьи нужно написать так:

          Заголовок 1… Заголовок 2… Заголовок 3…

          Может быть более опытные вебмастера меня в чем-то поправят. Я просто советую то, что попробовала на практике сама.

          Если у вас остались какие-то вопросы, буду рада увидеть их в комментариях.

          Агеева Вероника.

          Возможно вас еще заинтересует:

          Здравствуйте, уважаемые читатели блога сайт. Сегодня в рамках этой рубрики я хочу поговорить о разнообразных Html списках, которые можно создать на основе специально предназначенных для этого тегов UL, OL, LI и DL. С помощью пары UL и LI создаются маркированные списки, с помощью OL и LI - нумерованные, а с помощью элементов DL, DT и DD создаются так называемые листинги определений. Так же мы рассмотрим вкратце принципы создания вложенных конструкций.

          Хочу напомнить вам, что мы уже успели , успели поговорить про основы современной , а так же верстки табличной (). Кроме этого мы затронули основы , ну и узнали через .

          Маркированные списки на основе тэгов UL и LI

          Для создания маркированных списков используется тег UL, а для создания нумерованных – OL. Эти теги являются парными и блочными, точно так же, как и элемент LI.

          Между открывающим и закрывающим тегом располагаются отдельные пункты списка, которые в свою очередь заключаются в открывающий и закрывающий элемент LI. Сверху и снизу Html списков браузер добавляет отступы в одну строку, подобные отступам, создаваемым тэгом абзаца.

          Давайте посмотрим, например, маркированный вариант, который может выглядеть так:

          • Первая строка
          • Вторая
          • Последний элемент

          Внутри открывающего и закрывающего тегов UL могут стоять только элементы LI, а уже внутри самих этих элементов (пунктов) можно вставлять любой контент (текст, картинки, заголовки, абзацы, ссылки и даже другие списки).

          Т.е. UL служит только для организации маркированного (не упорядоченного) листинга, а все, что вы будете видеть на web странице внутри него, реализуется с помощью содержимого элементов LI.

          Для UL можно менять вид маркера, прописывая в нем разные значения для атрибута «Type». Если «Type» (управление внешним видом маркеров) для элемента UL не указан, то будет отображаться вид маркера, принятого по умолчанию (disc — закрашенный в цвет текста кружок):

            • — закрашенный кружок (по умолчанию);
              • — не закрашенный кружок;
                • – квадрат

          В приведенных примерах атрибут «Type» мы прописывали в элементе UL, применяя данный тип маркеров для всех пунктов. Но атрибут «Type» можно прописать и для каждого отдельного тега LI, задав для этого пункта свой собственный тип маркера.

          Пример маркированного списка с различными типами маркера для каждого пункта:

          1. Маркер в виде закрашенного диска
          2. Маркер в виде не закрашенного диска
          3. Квадрат

          Нумерованные списки в Html на основе тэга OL

          Для создания нумерованного листинга используются теги OL, внутри которых опять же будут расположены элементы LI. OL и LI, как я уже упоминал, являются блочными (т.е. стремятся занять все доступное им место по ширине) и внутри OL нельзя будет размещать ничего кроме элементов LI.

          Получается, что OL и UL — это служебные тэги, которые нужны только для того, чтобы указать браузеру, какой именно вид списка мы формируем (маркированный или же нумерованный). В случае нумерованного — слева от каждого пункта мы будем видеть не маркер, а цифру и стоящую за ней точку:

          1. Первая строка
          2. Второй пункт
          3. Третья строка

          Как я уже упоминал чуть выше, у элементов UL, OL и LI имеется возможность использовать атрибут TYPE. Он позволяет настроить тип маркера или задать, какими цифрами или буквами будут нумероваться пункты листинга. Для нумерованного списка параметры этого атрибута могут принимать следующие значения:

            1. — нумерация будет выполняться обычными арабскими цифрами (этот же вариант будет использоваться по умолчанию, при отсутствии атрибута «Type»);
              1. заглавные буквы в качестве нумерации;
                1. — строчные буквы;
                  1. — заглавные римские цифры;
                    1. — строчные римские цифры;

                    Пример нумерованного списка с различными типами нумерации для каждого пункта:

                    1. с нумерацией большими римскими цифрами
                    2. Нумерация маленькими латинскими буквами
                    3. Нумерация малыми римскими цифрами

                    При создании нумерованных списков имеется так же возможность начать нумерацию не с единицы, а с заданного в атрибуте START числа. Например:

                    1. Первый элемент, номер которого задан в теге OL атрибутом start="23"
                    2. Следующий пункт, с номером на единицу большим
                    3. Еще на единицу больше

                    Для OL так же можно начать новую нумерацию с любого значения, начиная с любого пункта, прописав в открывающем LI этого пункта атрибут VALUE с требуемым числом. Например:

                    1. Первый пункт с номером один
                    2. Этот элемент получит номер, указанный в атрибуте value="32"
                    3. Пункт с большим номером

                    Оформление внешнего вида списков в CSS (таблицах стилей)

                    Но, как правило, сейчас внешний вид маркеров задается не через атрибут TYPE, а , для которых прописываются соответствующие свойства.

                    Здесь я просто приведу пример различных маркеров для ненумерованных списков, внешний вид которых задается через отдельный файл с таблицами каскадных стилей.

                    • Первый пункт
                    • Второй
                    • Последний

                    Но а о мы поговорим в последующих статьях. Именно таким способом задается внешний вид маркеров для UL на этом блоге. В качестве маркеров используются картинки: для обычных пунктов не нумерованного списка — , для вложенных пунктов ненумерованного — .

                    Специальные и вложенные списки в Html коде

                    Третий и последний вид называется «списки определений» и задаются они с помощью трех тегов — DL, DT и DD. DL сообщает браузеру, что далее последует список определений.

                    Обычно такой вид используется (ну, или предполагалось, что он будет использоваться) для написания словарных статей, состоящих из терминов (заключенных в теги DT) и их описаний (заключенных в теги DD).

                    Первый термин
                    Описание
                    Второй термин
                    Его описание

                    Если вы посмотрите на приведенный выше пример, то заметите, что элемент DD (описание термина) сдвигается (на 40 пикселей) относительно элемента DT (самого термина).

                    Вообще, DL, DT и DD являются блочными тегами, причем, внутри элемента DT можно вставлять только контент со строчными тегами (получается, что внутри DT нельзя будет использовать блочные элементы заголовков и абзацев). А внутри тегов DD можно вставлять любые элементы и строчные и блочные.

                    Вложенный список в Html создается по аналогии с простым, но внутри основного списка часть пунктов заключается еще раз в открывающий и закрывающий тег UL или OL.

                    Обратите внимание, что закрывающий LI того пункта, в котором будет создан вложенный пункт, ставится лишь после всего кода вложенного списка (это очень важно для его правильного отображения на web странице). Вложенный список может выглядеть примерно, так:

                    1. Первый пункт основного нумерованного
                    2. Второй пункт
                      • Первый элемент вложенного маркированного
                      • Второй
                      • Третий и последний пункт маркированного
                    3. Третий элемент нумерованного

                    Удачи вам! До скорых встреч на страницах блога сайт

                    Вам может быть интересно

                    Как вставить в HTML ссылку и картинку (фото) - теги IMG и A Select, Option, Textarea, Label, Fieldset, Legend - теги Html формы выпадающих списков и текстового поля
                    Html формы для сайта - теги Form, Input и Select, Option, Textarea, Label и другие для создания элементов вебформ
                    Как задаются цвета в Html и CSS коде, подбор RGB оттенков в таблицах, выдаче Яндекса и других программах
                    Embed и object - Html теги для отображения медиа контента (видео, флеш, аудио) на веб страницах
                    Теги и атрибуты заголовков H1-H6, горизонтальной линии Hr, переноса строки Br и абзаца P по стандарту Html 4.01
                    Таблицы в Html - теги Table, Tr и Td, а так же Colspan, Cellpadding, Cellspacing и Rowspan для их создания
                    Что такое язык гипертекстовой разметки Html и как посмотреть список всех тэгов в валидаторе W3C
                    Теги Font (Face, Size и Color), Blockquote и Pre - устаревшее форматирование текста в чистом HTML (без использования CSS)
                    Iframe и Frame - что это такое и как лучше использовать фреймы в Html
                    Img - Html тег для вставки картинки (Src), выравнивания и обтекание ее текстом (align), а так же задания фона (background)

                    HTML-списки используются для группировки связанных между собой фрагментов информации. Существует три вида списков:

                    маркированный список

                      — каждый элемент списка
                    • отмечается маркером,
                      нумерованный список
                        — каждый элемент списка
                      1. отмечается цифрой,
                        список определений — — состоит из пар термин
                        определение.

                        Каждый список представляет собой контейнер, внутри которого располагаются элементы списка или пары термин-определение. Элементы списка ведут себя как блочные элементы, располагаясь друг под другом и занимая всю ширину блока-контейнера. Каждый элемент списка имеет дополнительный блок, расположенный сбоку, который не участвует в компоновке.

                        Создание HTML-списков

                        1. Маркированный список

                        Маркированный список представляет собой неупорядоченный список (от англ. Unordered List) . Создаётся с помощью парного тега

                        . В качестве маркера элемента списка выступает метка, например, закрашенный кружок.

                        Браузеры по умолчанию добавляют следующее форматирование блоку списка:

                        Каждый элемент списка создаётся с помощью парного тега

                      2. (от англ. List Item) .
                        доступны .
                      • Microsoft
                      • Google
                      • Apple
                      Рис. 1. Маркированный список

                      2. Нумерованный список

                      Нумерованный список создаётся с помощью парного тега . Каждый пункт списка также создаётся с помощью элемента

                    • . Браузер нумерует элементы по порядку автоматически и если удалить один или несколько элементов такого списка, то остальные номера будут автоматически пересчитаны.

                      Блок списка также имеет стили браузера по умолчанию:

                    • доступен атрибут value , который позволяет изменить номер по умолчанию для выбранного элемента списка. Например, если для первого пункта списка задать
                    • , то остальная нумерация будет пересчитана относительно нового значения.

                      Для тега

                        доступны следующие атрибуты:

                        Таблица 1. Атрибуты тега
                        Атрибут Описание, принимаемое значение
                        reversed Атрибут reversed задает отображение списка в обратном порядке (например, 9, 8, 7…).
                        start Атрибут start задает начальное значение, от которого пойдет отсчет нумерации, например, конструкция
                          первому пункту присвоит порядковый номер «10». Также можно одновременно задавать тип нумерации, например,
                            .
                        type Атрибут type задает вид маркера для использования в списке (в виде букв или цифр). Принимаемые значения:
                        1 — значение по умолчанию, десятичная нумерация.
                        A — нумерация списка в алфавитном порядке, заглавные буквы (A, B, C, D).
                        a — нумерация списка в алфавитном порядке, строчные буквы (a, b, c, d).
                        I — нумерация римскими заглавными цифрами (I, II, III, IV).
                        i — нумерация римскими строчными цифрами (i, ii, iii, iv).
                        1. Microsoft
                        2. Google
                        3. Apple
                        Рис. 2. Нумерованный список

                        3. Список определений

                        Списки определений создаются с помощью тега

                        . Для добавления термина применяется тег
                        , а для вставки определения — тег
                        .

                        Блок списка определений имеет следующие стили браузера по умолчанию:

                        Для тегов

                        ,
                        и
                        доступны .

                        Режиссер:
                        Петр Точилин
                        В ролях:
                        Андрей Гайдулян
                        Алексей Гаврилов
                        Виталий Гогунский
                        Мария Кожевникова

                        Рис. 3. Список определений

                        4. Вложенный список

                        Зачастую возможностей простых списков не хватает, например, при создании оглавления никак не обойтись без вложенных пунктов . Разметка для вложенного списка будет следующей:

                        • Пункт 1.
                        • Пункт 2.
                          • Подпункт 2.1.
                          • Подпункт 2.2.
                            • Подпункт 2.2.1.
                            • Подпункт 2.2.2.
                          • Подпункт 2.3.
                        • Пункт 3.

                        Рис. 4. Вложенный список

                        5. Многоуровневый нумерованный список

                        Многоуровневый список используется для отображения элементов списка на разных уровнях с различными отступами. Разметка для многоуровневого нумерованного списка будет следующей:

                        1. пункт
                        2. пункт
                          1. пункт
                          2. пункт
                          3. пункт
                            1. пункт
                            2. пункт
                            3. пункт
                          4. пункт
                        3. пункт
                        4. пункт

                        Такая разметка по умолчанию создаст для каждого вложенного списка новую нумерацию, начинающуюся с единицы. Чтобы сделать вложенную нумерацию, нужно использовать следующие свойства:
                        counter-reset сбрасывает один или несколько счётчиков, задавая значение для сброса;
                        counter-increment задаёт значение приращения счётчика, т.е. с каким шагом будет нумероваться каждый последующий пункт;
                        content — генерируемое содержимое, в данном случае отвечает за вывод номера перед каждым пунктом списка.

                        Ol { /* убираем стандартную нумерацию */ list-style: none; /* Идентифицируем счетчик и даем ему имя li. Значение счетчика не указано - по умолчанию оно равно 0 */ counter-reset: li; } li:before { /* Определяем элемент, который будет нумероваться — li. Псевдоэлемент before указывает, что содержимое, вставляемое при помощи свойства content, будет располагаться перед пунктами списка. Здесь же устанавливается значение приращения счетчика (по умолчанию равно 1). */ counter-increment: li; /* С помощью свойства content выводится номер пункта списка. counters() означает, что генерируемый текст представляет собой значения всех счетчиков с таким именем. Точка в кавычках добавляет разделяющую точку между цифрами, а точка с пробелом добавляется перед содержимым каждого пункта списка */ content: counters(li,".") ". "; }
                        Рис. 5. Многоуровневый нумерованный список

                    Задача

                    Отобразить маркированый список горизонтально без маркеров.

                    Решение

                    Тег маркированного списка

                      по умолчанию выводит элементы
                    • вертикально друг над другом. Для создания элементов навигации, в некоторых случаях, удобно выводить список горизонтально. Для получения такого отображения списка есть несколько способов.

                      Вам уже должно быть известно, что в HTML есть блочные и строчные элементы. Строчные элементы не создают своих блоков, пример таких элементов - это теги или . Блочные элементы отображаются с новой строки и создают прямоугольный блок, пример таких тегов

                      или

                      Так вот, тег

                    • также является блочным элементом.

                      Чтобы тег

                    • не вёл себя как блочный элемент, можно при помощи CSS сделать его строчным.

                      За то, как элемент будет отображён в документе отвечает CSS свойство display . Рассмотрим три его значения (хотя их больше):

                      • block - элемент отображается как блочный.
                      • inline - элемент отображается как строчный.
                      • inline-block - блочно-строчный элемент, подробнее про этот тип элементов читайте ниже, мы будем его использовать.

                      Сначала сделаем горизонтальный список превратив его пунткы в строчные элементы. В стиле CSS пропишем правило, в котором селектору li установлено свойство display со значением inline .

                      Список горизонтально

                      Итак, этот стиль сработал и получили горизонтальное расположение пунктов списка:

                      Рисунок 1. Работа примера №1.

                      У этого метода есть недостатки. Дело в том, что inline элементы имеют некоторые ограничения, по сравнению с блочными элементами. Например им нельзя задавать ширину и высоту, а блочным можно.

                      Например нам нужно чтобы элемент создаваемого нами меню имел ширину 150px и высоту 40px . Попробуем изменить стиль на следующий, то есть добавим два правила устанавливающих размер пункта меню:

                      Эти правки не приведут ни к каким изменениям. Чтобы элементы меню располагались горизонтально и можно было устанавливать их ширину и высоту им нужно установить тип inline-block . Изменим код нашего примера:

                      Список горизонтально

                      Этот код работает и изменения видны:


                      Рисунок 2. Работа примера №2.

                      Но могут быть разные варианты, например нам нужно отобразить в меню вложенные списки:

                      Вложенный список.

                      Вот результат работы этого кода:


                      Рисунок 3. Работа примера №3.

                      Мы видим что блоки выравниваются по высоте не так, как нам хотелось бы. Конечно, можно указать для всех блоков одинаковую высоту, но не всегда нам заранее известно её точное значение, и оно может меняться.

                      А собственно, почему так происходит?

                      Наши блоки имеют свойство display со значением inline-block . Это значит что у них есть качества как блочных элементов (возможность указать ширину и высоту), так и строчных элементов. То что мы наблюдаем - это качество строчных элементов.

                      Давайте рассмотрим строку с символами "А" разной величины:

                      А А А А А А А

                      Мы видим что все буквы по вертикали выравнены по нижней линии. Точнее по базовой линии, но сейчас не будем влазить в дебри. Так вот, с нашими блоками произошло то же самое.

                      Для выравния текста по вертикали служит свойство vertical-align . В нашем примере №3 нужно использовать значение top , которое выравняет верхнюю границу элемента по верху самого высокого элемента строки.

                      Пока применим его к строке с символами "А" разной величины:

                      А А А А А А А

                      Кажется, что буквы немного "скачут". Я установил CSS границу border самой высокой букве, чтобы было видно, что скачков на самом деле нет, есть пустое пространство между верхней границей (по которой происходит выравнивание) и верхней точкой символа "А".

                      Свойство vertical-align нужно применять к каждому строчному элементу, оно не наследуется. Вы можете прочитать подробней про это свойство: vertical-align .

                      После этого отступления продолжим размещать элементы списка горизонтально.

                      Второй способ

                      Разместить элементы списка горизонтально можно используя свойство float . Это свойство указывает по какой стороне выравнивается элемент, имеет две позиции: left и right .

                      Вот пример с использованием этого кода:

                      Список горизонтально

                      Вот результат работы кода:

                      Рисунок 4. Работа примера.

                      Вроде пример работает. Но в использовании этого свойства есть один нюанс. Сейчас мы его рассмотрим. Для примера возьмём код, в котором есть два горизонтальных списка с разным способом расположения элементов горизонтально: display и float :

                      Список горизонтально

                      Вот результат работы кода:

                      Рисунок 5. Работа примера.

                      В этих примерах контейнеры списка

                        имеют красную границу толщиной 1 пиксел. Но верхний список, в котором используется свойство display , включает в себя элементы списка. А вот элементы списка созданного с использованием свойства float выпадают из своего контейнера.

                        При этом на первый взгляд всё работает. Но давайте поменяем местами наши списки. Поставим список с классом menu-1 в коде перед списком с классом menu-2 (сейчас он ниже).

                        Вот что мы получим в результате:

                        Рисунок 6. Работа примера.

                        Пункты нижнего меню также обтекают вержнее меню, ведь действие свойства float никто не отменял и оно распространяется на все последующие элементы.

                        Как решить эту проблему?

                        Для этого нужно использовать свойство clear , оно отменяет обтекание элементом другого элемента, если у того установлено свойство float .

                        Вот изменённый пример с использованием свойства clear :

                        Список горизонтально

                        Видно что нижний список уже не обтикает верхний, элементы не наезжают друг на друга. Но в первом списке теги

                      • всё ещё располагаются вне контейнера
                          .

                          Рисунок 7. Работа примера.

                          Кроме того, в работе нам не всегда известно какой элемент будет следовать за элементом использующим float . Идеальный был бы вариант закрытия работы свойства float в том же блоке, в котором он открыт.

                          Это делается при помощи псевдоэлемента. Вот код:

                          Список горизонтально

                          Теперь у нас 100% рабочий код.

                          Рисунок 8. Работа примера.

                          Этот приём со свойством float обычно используют при вёрстке сайтов для выравнивания столбцов, которые создаются тегами

                          . Таким способом мы получаем нормальное построение столбцов с требуемым выравниванием по высоте. Когда мы создаём меню, то нам, в большенстве случаев, не важна высота блоков, она практически всегда одинакова. Поэтому использование правила {display : inline-block } в этих случаях вполне оправдано.

                          Но для полноты раскрытия темы мы тут ознакомились со всеми возможными вариантами. Хотя может есть и другие способы, например использование CSS-таблиц, но поисковики настойчиво рекомендуют использовать таблицы только по их прямому назначению, а не для организации элементов навигации или ещё как-либо.

В продолжение темы:
Аппаратные решения

Многие пользователи создают на жестком диске разделы – это диски C, D и далее по списку. К сожалению, одна из наиболее неприятных проблем, с которой может столкнуться...

Новые статьи
/
Популярные