Список в ряд css

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

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

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

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

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

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

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

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

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

Знак > в селекторе указывает что мы обращаемся только к дочерним элементам
тега

    с классом menu-top . Читайте подробнее про дочерние селекторы.

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

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

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

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

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

Читайте также:  Формат mobi чем открыть на андроид

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также:  Vagrant установка на windows

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    .

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

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

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

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

Читайте также:  Like в sql запросе

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

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

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

Internet Explorer Chrome Opera Safari Firefox Android iOS
6.0+ 1.0+ 7.0+ 3.0+ 1.0+ 1.0+ 1.0+

Задача

Вывести маркированный список в одну строку и убрать отображение маркеров.

Решение

Элементы списка по умолчанию выстраиваются вертикально друг под другом, но иногда требуется разместить их по горизонтали, например, для создания различных меню. В таком случае к селектору LI следует добавить стилевое свойство display со значением inline , оно преобразует блочный элемент в строчный (пример 1).

Пример 1. Горизонтальный список

HTML5 CSS 2.1 IE Cr Op Sa Fx

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

Рис. 1. Горизонтальный список

Из-за того, что вокруг списка автоматически добавляются отступы, их следует изменить, добавляя свойства margin и padding к селектору UL , как показано в примере.

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

Главным в данном примере является то, что к селектору li добавлен стилевой атрибут display со значением inline , который преобразует блочный элемент во встроенный. Также, чтобы убрать отступы вокруг списка, добавлены параметры margin и padding к селектору ul .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *