W3docs

HTML тег <div>

Узнайте, как использовать тег <div> для группировки HTML-элементов и их стилизации с помощью CSS. Примеры атрибутов class, id, style и других.

Тег <div> — это контейнер, предназначенный для определения раздела или секции. Это блочный элемент, который сам по себе не влияет на содержимое, но используется главным образом для группировки HTML-элементов с целью их стилизации с помощью CSS или обработки скриптами.

Поскольку <div> является блочным элементом, каждый такой элемент начинается с новой строки и растягивается на всю доступную ширину. Он не несёт никакого семантического смысла — это обычный универсальный блок. Используйте <div> для группировки блочного содержимого; для группировки или стилизации строчного содержимого (нескольких слов внутри предложения) лучше воспользоваться строчным аналогом — тегом <span>.

Два абзаца, сгруппированных внутри div с зелёным фоном, и одно слово, обёрнутое в span с синим текстом

Позиционирование блоков, определяемых тегом <div>

Совет

Рекомендуем использовать тег <div> только в тех случаях, когда ни один из семантических элементов, введённых в HTML5 (таких как <nav>, <main> или <article>), не подходит.

Так как <div> является блочным элементом, перед ним и после него автоматически вставляется перенос строки.

Внутрь тега <div> можно помещать любые HTML-элементы, включая другой <div>.

Опасно

Блочные элементы, такие как <div>, нельзя вкладывать внутрь тегов <p>: абзац будет разбит в том месте, где встречается тег <div>.

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

Синтаксис

Тег <div> является парным. Содержимое записывается между открывающим (<div>) и закрывающим (</div>) тегами.

Пример HTML-тега <div>:

Пример HTML-тега <div>

<!DOCTYPE html>
<html>
  <head>
    <title>The &lt;div&gt; Tag</title>
  </head>
  <body>
    <h1> The &lt;div&gt; Tag </h1>
    <div style="background-color:#8ebf42">
      <p>We use the &lt;div&gt; tag to group two paragraphs for applying a background to the text, and to add color to this
        <span style="color:#1c87c9">word</span> we place it within &lt;span&gt; tag.</p>
      <p> Pay attention, that the &lt;div&gt; tag is a block-level element, so a line break is placed before and after
        it.</p>
    </div>
  </body>
</html>

<div> и семантические элементы

<div> — подходящий инструмент, когда нужен лишь универсальный блок для применения стилей или скриптов. Но если блок представляет смысловую область страницы — навигацию, заголовок, статью — предпочтите соответствующий семантический элемент HTML5. Семантические теги описывают что именно содержится внутри, что помогает поисковым системам, программам чтения с экрана и другим разработчикам понимать структуру разметки.

Сравните одну и ту же структуру, написанную двумя способами:

<!-- Before: generic divs, no meaning -->
<div class="header">...</div>
<div class="nav">...</div>
<div class="main">...</div>
<div class="footer">...</div>

<!-- After: semantic elements, self-describing -->
<header>...</header>
<nav>...</nav>
<main>...</main>
<footer>...</footer>

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

Внимание

Остерегайтесь «div-супа». Обёртывание всего в вложенные элементы <div><div class="nav">, <div class="header"> и так далее — приводит к разметке, которую сложно читать, а вспомогательные технологии не получают от неё никакой полезной информации. Прежде чем добавить <div>, подумайте, не подойдёт ли лучше <nav>, <header>, <main>, <article>, <section> или <footer>.

<div> и <span>

Теги <div> и <span> — оба являются универсальными, лишёнными семантики контейнерами; разница между ними — в типе создаваемого блока:

  • <div> — блочный элемент. Начинается с новой строки, занимает всю доступную ширину и используется для группировки крупных фрагментов содержимого (абзацев, списков, других div).
  • <span> — строчный элемент. Располагается в строке текста и используется для стилизации или выделения небольшого фрагмента содержимого — слова или фразы.
<p>The word <span style="color:#1c87c9">highlighted</span> sits inside the text flow.</p>

<div style="background-color:#8ebf42">
  <p>This whole block is grouped and given a background.</p>
</div>

Простое правило: используйте <div> для группировки блочного содержимого, а <span> — для обёртывания строчного содержимого.

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

В зависимости от содержимого и целей страницы можно применять различные техники (или их комбинации) для определения положения каждого блока. Для современных макетов в первую очередь следует использовать CSS Grid (для двумерных макетов с рядами и колонками) и Flexbox (для одномерных рядов или колонок). Более старые техники, описанные ниже, — float, отрицательные отступы и абсолютное позиционирование — по-прежнему работают, но сегодня редко являются лучшим выбором.

CSS Grid

CSS Grid — это современный стандартный способ создания двумерных макетов, то есть макетов, в которых блоки <div> располагаются одновременно в рядах и колонках. Вы определяете сетку на контейнере с помощью display: grid и описываете её дорожки, после чего дочерние блоки автоматически заполняют ячейки.

Пример HTML-тега <div> с CSS Grid:

Пример HTML-тега <div> с CSS Grid

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      .grid-container {
        display: grid;
        grid-template-columns: 1fr 1fr 1fr;
        gap: 10px;
        padding: 10px;
        background-color: #1faadb;
      }
      .grid-container > div {
        height: 60px;
        border-radius: 3px;
        background-color: #8ebf42;
      }
    </style>
  </head>
  <body>
    <div class="grid-container">
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
    </div>
  </body>
</html>

Одна запись grid-template-columns: 1fr 1fr 1fr создаёт три равные колонки, а шесть блоков <div> автоматически переносятся в два ряда.

Flexbox

Когда нужно расположить элементы только по одной оси — в ряд или в колонку — Flexbox является наиболее подходящим инструментом. На современных сайтах макеты на основе float заменяются Flexbox и Grid. Главная идея Flexbox состоит в том, что с его помощью можно управлять выравниванием, направлением, порядком и размером элементов внутри контейнера.

Пример Flexbox с HTML-тегом <div>:

Пример HTML-тега <div> с Flexbox

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      .flex-container {
        display: flex;
        align-items: center; /* Use another value to see the result */
        width: 100%;
        height: 200px;
        background-color: #1faadb;
      }
      .flex-container > div {
        width: 25%;
        height: 60px;
        margin: 5px;
        border-radius: 3px;
        background-color: #8ebf42;
      }
    </style>
  </head>
  <body>
    <div class="flex-container">
      <div></div>
      <div></div>
      <div></div>
    </div>
  </body>
</html>

Свойство CSS float

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

Пример HTML-тега <div> со свойством CSS float:

Пример HTML-тега <div> со свойством CSS float

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      .content {
        overflow: auto;
        border: 3px solid #666;
      }
      .content div {
        padding: 10px;
      }
      .content a {
        color: darkblue;
      }
      .blue {
        float: right;
        width: 45%;
        background-color: #1faadb;
      }
      .green {
        float: left;
        width: 35%;
        background-color: #8ebf42;
      }
    </style>
  </head>
  <body>
    <div class="content">
      <div class="blue">
        <p>This is some paragraph inside div tag.</p>
        <a href="#">This is some hyperlink inside div tag.</a>
        <ul>
          <li>List item 1</li>
          <li>List item 2</li>
        </ul>
      </div>
      <div class="green">
        <p>This is some paragraph inside div tag.</p>
        <ol>
          <li>List item 1</li>
          <li>List item 2</li>
        </ol>
      </div>
    </div>
  </body>
</html>

Результат

Пример тега div со свойством CSS float

Отрицательные отступы (устаревшая техника)

Информация

Отрицательные отступы — нишевый, преимущественно устаревший приём позиционирования. Для новых макетов предпочитайте CSS Grid или Flexbox, которые достигают тех же перекрытий и смещений значительно предсказуемее. Этот пример приведён для справки.

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

Пример с отрицательными отступами:

Пример HTML-тега <div> с отрицательными отступами

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      .content div {
        padding: 2%;
      }
      .content a {
        color: darkblue;
      }
      .main-content {
        width: 30%;
        margin-left: 32%;
      }
      .blue {
        width: 25%;
        margin-top: -10%;
        background-color: #1faadb;
      }
      .green {
        width: 20%;
        margin: -35% auto auto 70%;
        background-color: #8ebf42;
      }
    </style>
  </head>
  <body>
    <div class="content">
      <div class="main-content">
        <a href="#">This is some hyperlink inside div tag.</a>
      </div>
      <div class="blue">
        <p>This is some paragraph inside div tag.</p>
        <a href="#">This is some hyperlink inside div tag.</a>
        <ul>
          <li>List item 1</li>
          <li>List item 2</li>
        </ul>
      </div>
      <div class="green">
        <p>This is some paragraph inside div tag.</p>
        <ol>
          <li>List item 1</li>
          <li>List item 2</li>
        </ol>
      </div>
    </div>
  </body>
</html>

Позиционирование relative+absolute

Если нужно расположить div относительно конкретного элемента, можно использовать комбинацию position: relative и position: absolute.

Пример позиционирования relative+absolute для HTML-тега <div>:

Пример HTML-тега <div> со свойством CSS position

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      .content { 
        position: relative; 
        height: 400px;
        border: 1px solid #666;
      }
      .content div { 
        position: absolute; 
        width: 35%; 
        padding: 10px; 
      }
      .blue { 
        right: 20px;
        bottom: 0;
        background-color: #1faadb; 
      }
      .green { 
        top: 10px; 
        left: 15px; 
        background-color: #8ebf42; 
      }
    </style>
  </head>
  <body>
    <div class="content">
      <div class="blue">
        <p>This is some paragraph inside div tag.</p>
      </div>
      <div class="green">
        <p>This is some paragraph inside div tag.</p>
      </div>
    </div>
  </body>
</html>
Опасно

position: relative не влияет на позиционирование элементов в нормальном потоке, если не добавить смещения.

Атрибуты

Тег <div> не имеет собственных атрибутов. На практике он использует глобальные атрибуты — чаще всего id, class, style, data-* и aria-* — для стилизации, скриптинга или обеспечения доступности. Также поддерживаются атрибуты событий.

АтрибутЗначениеОписание
alignleft right center justifyУстарел. Использовался для выравнивания содержимого внутри тега <div>. Не поддерживается в HTML5 — вместо него используйте свойство CSS text-align.

Практика

Практика
Какова основная функция HTML-тега div?
Какова основная функция HTML-тега div?
Was this page helpful?