Как сделать список в строку css

Как сделать список в html в строку

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

Решение

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

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

HTML5 CSS 2.1 IE Cr Op Sa Fx

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

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

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

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

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

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

Стандартом пятой версии html поддерживается 3 вида списков: нумерованные списки, маркированные списки и списки определений. Также предоставляется возможность вкладывать списки друг в друга, создавая вложенные многоуровневые списки.

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

Нумерованный список — это набор элементов (пунктов списка), имеющих определённую последовательность. Каждый пункт нумерованного списка имеет уникальный маркер, указывающий на порядок следования данного пункта относительно других пунктов списка. По умолчанию маркерами пунктов нумерованного списка являются числа. Первый пункт идёт под числом 1, второй под числом 2 и так далее.

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

Для создания нумерованных списков в HTML используется тег <ol>, внутри которого располагаются элементы списка с данными. Каждый пункт списка указывается с помощью тега <li> :

Примечание: тег <ol> в качестве дочерних элементов может содержать только теги <li> , то есть всё содержимое нумерованного списка должно размещаться внутри элементов <li> . Тег <li> , в свою очередь, не имеет ограничений на содержимое, поэтому в нём можно размещать абзацы, картинки, ссылки, таблицы, другие списки и т.д.

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

Маркированный список &#8212; это ненумерованные, то есть неупорядоченные списки элементов, последовательность которых не имеет никакого значения. Все пункты маркированного списка имеют одинаковые маркеры, по умолчанию они отображаются в виде маленьких чёрных кругов.

Для создания маркированных списков в HTML применяется тег <ul>, внутри которого располагаются элементы самого списка (как и в случае с нумерованными списками используется тег <li>, который содержит в себе всё отображаемое содержимое списка):

Виды маркеров

Виды маркеров нумерованного списка можно изменить с помощью атрибута type . Данный атрибут поддерживает пять видов маркеров:

Значение Описание
1 Десятичные числа (1, 2, 3..)
a Список в алфавитном порядке, строчные буквы (a, b, c..)
A Список в алфавитном порядке, заглавные буквы (A, B, C..)
i Римские цифры, строчные (i, ii, iii, iv..)
I Римские цифры, заглавные (I, II, III, IV..)

Маркированные списки не имеют атрибута type , поэтому средствами HTML изменить вид маркера у маркированного списка не получится. Для изменения вида маркера, в этом случае, можно воспользоваться CSS свойством list-style-type, с помощью которого, помимо значения по умолчанию, можно выбрать ещё два вида маркера: circle или square .

Изменение маркеров у списков:

CSS свойство list-style-type , помимо видов маркеров для маркированных списков, имеет множество различных видов маркеров и для нумерованных списков. Но не всегда изменения одного стандартного вида маркера на другой бывает достаточно для того, чтобы красиво оформить список. Для оформления списков лучше использовать CSS, который позволяет не только изменять вид маркера, но и заменять маркеры на картинки, контролировать их расположение и управлять отступом. Как всё это делать вы можете посмотреть тут.

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

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

Чтобы создать горизонтальный список, надо для пунктов списка прописать CSS свойство display со значением inline или inline-block , в зависимости от того, какие ещё свойства вы собираетесь использовать.

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

Как горизонтальный список превратить в горизонтальное меню, вы можете посмотреть здесь.

Как разместить элементы списка горизонтально?

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

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

Вам уже должно быть известно, что в HTML есть блочные и строчные элементы. Строчные элементы не создают своих блоков, пример таких элементов – это теги <span> или <strong> . Блочные элементы отображаются с новой строки и создают прямоугольный блок, пример таких тегов <div> или <p> . Так вот, тег <li> также является блочным элементом.

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

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

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

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

Знак > в селекторе указывает что мы обращаемся только к дочерним элементам <li> тега <ul> с классом menu-top . Читайте подробнее про дочерние селекторы.

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

CSS: как разместить элементы списка горизонтально: работа примера №1

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

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

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

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

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

CSS: как разместить элементы списка горизонтально: работа примера №2

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

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

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

CSS: как разместить элементы списка горизонтально: работа примера №3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

CSS: как разместить элементы списка горизонтально: работа примера №4

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

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

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

CSS: как разместить элементы списка горизонтально: работа примера №5

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

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

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

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

CSS: как разместить элементы списка горизонтально: работа примера №6

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

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

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

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

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

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

CSS: как разместить элементы списка горизонтально: работа примера №7

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

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

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

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

CSS: как разместить элементы списка горизонтально: работа примера №8

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

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

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

HTML Списки

HTML поддерживает списки трех разных типов, для каждоrо из которых предусмотрены свои собственные теrи:

  • <ol> &#8211; нумерованный (с помощью цифр или букв) список, каждый элемент которого имеет порядковый номер (букву);
  • <ul> &#8211; маркированный (не нумерованный) список, рядом с каждым элементом которого помещается маркер (а не цифровые или буквенные символы, обозначающие порядковый номер);
  • <dl> &#8211; список определений состоит из пар «имя/значение», в том числе терминов и определений.

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

В нумерованный список браузер автоматически вставляет номера элементов по порядку, начиная с некоторого значения (обычно 1). Это позволяет вставлять и удалять пункты списка, не нарушая нумерации, так как остальные номера автоматически будут пересчитаны.
Нумерованные списки создаются с помощью блочного элемента <ol> (от англ. Ordered List &#8211; нумерованный список). Далее в контейнер <ol> для каждого пункта списка помещается элемент <li> (от англ. List Item &#8211; пункт списка). По умолчанию применяется нумерованный список с арабскими числами.
Тег <ol> имеет следующий синтаксис:

Элементы нумерованного списка должны содержать несколько элементов списка, как показано в следующем примере:

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

Пошаговая инструкция

  1. Достать ключ
  2. Вставить ключ в замок
  3. Повернуть ключ на два оборота
  4. Достать ключ из замка
  5. Открыть дверь

Иногда при просмотре существующих кодов HTML вы будете встречать аргумент type в элементе <ol> , который используется для указания типа нумерации (буквы, римские и арабские цифры и т.п.). Синтаксис:

Здесь: type &#8211; символы списка:

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

Если вы хотите, чтобы список начинался с номера, отличного от 1, следует указать это при помощи атрибута start тега <ol> .
В следующем примере показан нумерованный список с большими римскими цифрами и начальным значением XLIX:

Пример: Применение атрибутов type и start.

  1. Перепела
  2. Фазаны
  3. Куропатки
  4. Павлины

Нумерацию можно начинать и с помощью атрибута value, который добавляется к элементу <li> следующим образом:

В этом случае последовательная нумерация списка прервётся и с этого пункта нумерация начнётся заново, в данном случае с семи.

Пример использования атрибута value тега <li> , который позволяет изменить номер данного элемента списка:

Пример: Применение атрибута value

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

В этом примере "Первый пункт списка" будет иметь номер 1, "Второй пункт списка" &#8211; номер 7, а "Третий пункт списка" &#8211; номер 8.

Форматирование нумерованных списков с помощью CSS

Для изменения номеров списков стоит использовать свойство list-style-type таблицы стилей CSS:

Стили оформления нумерованных списков
Пример Значение Описание
а, Ь, с lower-alpha Строчные буквы
А, В, С upper-alpha Прописные буквы
i, ii, iii lower-roman Римские цифры, набранные строчными буквами
I, II, III upper-roman Римские цифры, набранные прописными буквами

На примере представленном далее НТМL-кода показано, как использовать стили для получения списка, пункты которого пронумерованы римскими цифрами, набранными буквами нижнеrо реrистра:

Пример: Применение свойства CSS list-style-type

  1. первый пункт списка
  2. второй пункт списка
  3. третий пункт списка

Маркированные списки

Маркированные списки по сути похожи на нумерованные только они не содержат последовательной нумерации пунктов. Маркированные списки создаются с помощью блочного элемента <ul> (от англ. Unordered List &#8211; ненумерованный список). Каждый элемент списка, как и в нумерованных списках, начинается с тега <li> . Браузер формирует отступ для каждого пункта списка и автоматически отображает маркеры.
Тег <ul> имеет следующий синтаксис:

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

Пример: Маркированный список

  • Windows Movie Maker
  • Pinnacle VideoSpin
  • AviSynth
  • Avidemux

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

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

Пример: Вложенные списки

  • Понедельник
    1. Отправить почту
    2. Визит к редактору
    • Выбор темы
    • Дкаративное оформление
    • Заключительный отчет
    1. Пересмотреть график
    2. Отправить изображения
    При вложении одного маркированного списка в другой браузер автоматически меняет стиль маркера для списка второго уровня. При этом, при вложении нумерованных списков стиль нумерации не меняется по умолчанию.

    Форматирование маркированных списков

    Для изменения внешнего вида маркера списков стоит использовать свойство list-style-type таблицы стилей CSS:

    Стили оформления маркированного списка
    Значение Описание
    disc маркер в форме кружков с заливкой
    circle маркер в форме кружков без заливки
    square маркер в форме квадрата с заливкой
    none пункты списка без маркера

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

    Как отобразить список в две строки?

    У меня есть список элементов, которые я хочу поместить в пространство, ограниченное по вертикали:

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

    Или, альтернативно (в моем случае порядок не важен)

    Свойство css column-count позволяет разбить список на столбцы, но оно принимает только фиксированное количество столбцов. Я не знаю, сколько элементов у меня будет (может быть от 1 до более 40), поэтому, если я установлю количество столбцов на 3, любой список с более чем 6 элементами будет слишком большим, и если есть только 4 элемента, то только в первом столбце будет два элемента, и он будет выглядеть неравномерно.

    Итак, в идеале мне нужно свойство row-count , но оно не существует. Я думаю, что я могу сделать это и в Javascript, но я ищу решение только для CSS.

    Я что-то пробовал: float:left на каждом li помещает список в один ряд. Чтобы разбить его на две строки, мне нужно не применять float:left к элементу N /2. Я не знаю, как это сделать.

    Я также знаю, что могу сделать это, разбив его на несколько ul , каждый с двумя li и float:left , но я бы не хотел портить HTML для чего-то совершенно презентационного.

    Есть ли у кого-нибудь решение этой проблемы?

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

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

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