📝 Html Css

Списки в HTML

P
Автор
Pyland
📅
Опубликовано
30.06.2026
⏱️
Время чтения
2 мин
👁️
Просмотров
85
🌱
Уровень
Начальный
🐦 💼 ✈️

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

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

Используется, когда порядок элементов не важен:

<ul>
  <li>Python</li>
  <li>FastAPI</li>
  <li>PostgreSQL</li>
  <li>Docker</li>
</ul>

Браузер по умолчанию добавляет маркеры (точки) и отступ слева. Позже CSS позволит полностью изменить внешний вид.

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

Используется, когда порядок важен — инструкции, шаги, рейтинги:

<ol>
  <li>Установить Python 3.12</li>
  <li>Создать виртуальное окружение</li>
  <li>Установить зависимости: <code>pip install -r requirements.txt</code></li>
  <li>Запустить сервер: <code>python manage.py runserver</code></li>
</ol>

Атрибуты <ol>:

Атрибут Значение Описание
start число Начать нумерацию не с 1
reversed Обратная нумерация
type 1, A, a, I, i Вид нумерации
<ol start="3" type="A">
  <li>Третий пункт обозначен буквой C</li>
  <li>Четвёртый — D</li>
</ol>

Список определений <dl>

Подходит для глоссариев, FAQ и пар «термин — описание»:

<dl>
  <dt>Корутина</dt>
  <dd>Функция, выполнение которой можно приостановить и возобновить. Объявляется через <code>async def</code>.</dd>

  <dt>Event loop</dt>
  <dd>Цикл событий — центральный механизм asyncio, управляющий выполнением корутин.</dd>

  <dt>Awaitable</dt>
  <dd>Объект, который можно использовать с оператором <code>await</code>: корутина, Task или Future.</dd>
</dl>

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

Списки можно вкладывать друг в друга — каждый вложенный список должен быть внутри <li>:

<ul>
  <li>Backend
    <ul>
      <li>Python
        <ul>
          <li>FastAPI</li>
          <li>Django</li>
        </ul>
      </li>
      <li>Go</li>
    </ul>
  </li>
  <li>Frontend
    <ul>
      <li>HTML / CSS</li>
      <li>JavaScript</li>
    </ul>
  </li>
</ul>

Не злоупотребляйте вложенностью: три уровня — разумный максимум.

Навигация как список

Навигационное меню семантически является списком ссылок. Стандартный паттерн:

<nav>
  <ul>
    <li><a href="/">Главная</a></li>
    <li><a href="/posts/">Статьи</a></li>
    <li><a href="/about.html">Обо мне</a></li>
    <li><a href="/contact.html">Контакты</a></li>
  </ul>
</nav>

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

Стилизация маркеров через CSS

/* Убрать стандартные маркеры */
ul.tags {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  gap: 0.5rem;
}

/* Свои маркеры через ::before */
ul.checklist li {
  list-style: none;
  padding-left: 1.5rem;
  position: relative;
}

ul.checklist li::before {
  content: "✓";
  position: absolute;
  left: 0;
  color: #22c55e;
}

/* Нумерованный список с кастомными числами */
ol.steps {
  list-style: none;
  counter-reset: steps-counter;
}

ol.steps li {
  counter-increment: steps-counter;
  padding-left: 2.5rem;
  position: relative;
}

ol.steps li::before {
  content: counter(steps-counter);
  position: absolute;
  left: 0;
  background: #3b82f6;
  color: white;
  width: 1.5rem;
  height: 1.5rem;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.75rem;
}

Пример: боковая панель тегов DevBlog

<aside class="sidebar">
  <h3>Теги</h3>
  <ul class="tags">
    <li><a href="/tags/python/">Python</a></li>
    <li><a href="/tags/fastapi/">FastAPI</a></li>
    <li><a href="/tags/asyncio/">asyncio</a></li>
    <li><a href="/tags/docker/">Docker</a></li>
  </ul>

  <h3>Недавние посты</h3>
  <ol>
    <li><a href="/posts/decorators/">Декораторы в Python</a></li>
    <li><a href="/posts/asyncio-guide/">Руководство по asyncio</a></li>
    <li><a href="/posts/pydantic-v2/">Pydantic v2: что нового</a></li>
  </ol>
</aside>

Когда сомневаетесь, какой список использовать: если порядок важен — <ol>, если это пары «термин—значение» — <dl>, во всех остальных случаях — <ul>.

Ваша реакция на статью

💬 Комментарии (0)

🔐 Войдите в систему, чтобы оставить комментарий
🚪 Войти
💭

Комментариев пока нет

Станьте первым, кто поделится мнением об этой статье!

🔗 Похожие

Похожие статьи

Продолжите изучение с этими материалами

📝

AI-агенты: ReAct loop и автономные действия

Чат-бот отвечает на вопросы. Агент — действует: вызывает инструменты, получает реальные данные и использует их...

📅 30.06.2026 👁️ 100
📝

RAG: чат с документами через векторный поиск

RAG (Retrieval-Augmented Generation) — паттерн для работы с собственными документами. Вместо того чтобы переобучать модель,...

📅 30.06.2026 👁️ 88
📝

Pod: минимальная единица в Kubernetes

В Docker ты запускаешь контейнер. В Kubernetes минимальная единица — Pod. Это не просто обёртка...

📅 30.06.2026 👁️ 84

Понравилась статья?

Подпишитесь на наши обновления и получайте новые статьи первыми. Развивайтесь вместе с PyLand!