← Назад к вопросам

Div - это строчный или блочный элемент

1.0 Junior🔥 281 комментариев
#HTML и CSS

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI2 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Div - блочный элемент

Div — это блочный элемент по умолчанию. Он имеет display: block, что означает, что он занимает всю доступную ширину и создает новые строки до и после себя.

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

Блочные элементы (Block)

Блочные элементы имеют следующие характеристики:

<style>
  .block {
    display: block; /* По умолчанию для div */
  }
</style>

<div>Первый div</div>
<div>Второй div</div>
<div>Третий div</div>

<!-- Вывод (каждый div на новой строке):
Первый div
Второй div
Третий div
-->

Характеристики блочных элементов:

  • Ширина — занимает 100% доступной ширины
  • Высота — занимает необходимую высоту
  • Новые строки — создает разрывы строк до и после себя
  • Отступы — margin и padding работают со всех сторон
  • Размеры — можно установить width и height

Примеры блочных элементов:

<div>, <p>, <h1>-<h6>, <section>, <header>, <footer>,
<main>, <article>, <aside>, <nav>, <ul>, <ol>, <form>

Строчные элементы (Inline)

Строчные элементы имеют другие характеристики:

<style>
  .inline {
    display: inline; /* По умолчанию для span */
  }
</style>

<span>Первый span</span>
<span>Второй span</span>
<span>Третий span</span>

<!-- Вывод (все на одной строке):
Первый span Второй span Третий span
-->

Характеристики строчных элементов:

  • Ширина — занимает только необходимую ширину
  • Высота — занимает высоту текста
  • Новые строки — не создает разрывы строк
  • Отступы — margin не работает сверху/снизу, padding работает
  • Размеры — нельзя установить width и height

Примеры строчных элементов:

<span>, <a>, <strong>, <em>, <img>, <button>, <input>

Inline-block (Гибрид)

Есть третий тип — display: inline-block, который объединяет свойства обоих:

<style>
  .inline-block {
    display: inline-block;
    width: 150px;
    height: 100px;
    margin: 10px;
    padding: 10px;
    background: #f0f0f0;
  }
</style>

<div class="inline-block">Блок 1</div>
<div class="inline-block">Блок 2</div>
<div class="inline-block">Блок 3</div>

<!-- Вывод: блоки располагаются в одну строку, но размеры можно контролировать -->

Характеристики inline-block:

  • Строчное расположение — располагается рядом с другими элементами
  • Размеры — можно установить width и height
  • Отступы — margin и padding работают со всех сторон

Полная таблица сравнения

СвойствоBlockInlineInline-block
Новая строкаДаНетНет
WidthДаНетДа
HeightДаНетДа
Margin сверху/снизуДаНетДа
PaddingСо всех сторонСо всех сторонСо всех сторон
Примерdiv, pspan, abutton

Как изменить поведение div

<style>
  /* 1. Блочный div (по умолчанию) */
  .div-block {
    display: block;
    width: 200px;
    background: #ffcccc;
  }

  /* 2. Строчный div */
  .div-inline {
    display: inline;
    background: #ccffcc;
  }

  /* 3. Inline-block div */
  .div-inline-block {
    display: inline-block;
    width: 100px;
    height: 100px;
    background: #ccccff;
    margin: 10px;
  }

  /* 4. Flex (современный подход) */
  .div-flex {
    display: flex;
    gap: 10px;
    background: #ffffcc;
  }

  /* 5. Grid (для сложных макетов) */
  .div-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
    background: #ffccff;
  }
</style>

<div class="div-block">Блочный div</div>
<div class="div-block">Второй блочный div</div>

<div>
  <span class="div-inline">Строчный div</span>
  <span class="div-inline">Еще строчный</span>
</div>

<div class="div-inline-block">Inline-block 1</div>
<div class="div-inline-block">Inline-block 2</div>

<div class="div-flex">
  <div>Flex item 1</div>
  <div>Flex item 2</div>
</div>

<div class="div-grid">
  <div>Grid item 1</div>
  <div>Grid item 2</div>
  <div>Grid item 3</div>
  <div>Grid item 4</div>
</div>

Практический пример: навигационное меню

<style>
  /* Неправильно: использование блочного div */
  .nav-block div {
    display: block; /* Каждый пункт на новой строе */
    padding: 10px;
    border: 1px solid #ccc;
  }

  /* Правильно: использование inline-block */
  .nav-inline-block div {
    display: inline-block;
    padding: 10px 15px;
    border: 1px solid #ccc;
    cursor: pointer;
  }

  /* Лучший подход: использование flex */
  .nav-flex {
    display: flex;
    gap: 0; /* Убираем зазор между кнопками */
  }

  .nav-flex div {
    padding: 10px 15px;
    border: 1px solid #ccc;
    cursor: pointer;
    flex: 1;
    text-align: center;
  }
</style>

<!-- Неправильно -->
<nav class="nav-block">
  <div>Home</div>
  <div>About</div>
  <div>Contact</div>
</nav>

<!-- Лучше -->
<nav class="nav-inline-block">
  <div>Home</div>
  <div>About</div>
  <div>Contact</div>
</nav>

<!-- Лучше всего -->
<nav class="nav-flex">
  <div>Home</div>
  <div>About</div>
  <div>Contact</div>
</nav>

Современный подход: Flexbox и Grid

В современной разработке вместо inline-block используют flex или grid:

<style>
  /* Flex для одномерного макета */
  .flex-container {
    display: flex;
    gap: 20px; /* Расстояние между элементами */
    justify-content: space-between; /* Распределить по оси X */
    align-items: center; /* Выровнять по оси Y */
  }

  /* Grid для двумерного макета */
  .grid-container {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
  }
</style>

<div class="flex-container">
  <div>Item 1</div>
  <div>Item 2</div>
  <div>Item 3</div>
</div>

<div class="grid-container">
  <div>Card 1</div>
  <div>Card 2</div>
  <div>Card 3</div>
  <div>Card 4</div>
  <div>Card 5</div>
  <div>Card 6</div>
</div>

Проверка на собеседовании

На собеседовании можешь продемонстрировать знание:

// Получить значение display элемента
const div = document.querySelector('div');
console.log(window.getComputedStyle(div).display);
// Вывод: 'block'

// Изменить display
div.style.display = 'inline-block';
console.log(window.getComputedStyle(div).display);
// Вывод: 'inline-block'

Ключевые выводы

  1. Div по умолчанию — блочный элемент (display: block)
  2. Блочные элементы занимают всю ширину и создают новые строки
  3. Строчные элементы занимают только необходимую ширину
  4. Inline-block объединяет свойства обоих типов
  5. Современный подход — использовать Flexbox или Grid вместо inline-block
  6. CSS свойство display определяет поведение элемента

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