Заповнення простору, що залишився на екрані, вмістом Div у HTML

CSS

Оптимізація макетів для вмісту повної висоти

Створення веб-програми, яка ефективно використовує весь простір екрана, є поширеною проблемою. Забезпечення того, щоб вміст заповнював висоту всього екрана, особливо коли є динамічний заголовок, вимагає ретельного планування та впровадження. Заголовок часто містить такі важливі елементи, як логотипи та дані облікового запису, і його висота може бути різною.

Мета полягає в тому, щоб розділ вмісту займав простір, що залишився на екрані, не покладаючись на таблиці. Це може бути складно, особливо коли елементи всередині div вмісту потрібно адаптувати до висоти у відсотках. У цій статті досліджується, як створити такий макет за допомогою сучасних методів CSS.

Команда опис
flex-direction: column; Встановлює вертикальну основну вісь гнучкого контейнера, упорядковуючи дочірні елементи зверху вниз.
flex: 1; Дозволяє flex-елементу розростатися та заповнювати доступний простір у flex-контейнері.
grid-template-rows: auto 1fr; Визначає макет сітки з двох рядків, де перший рядок має автоматичну висоту, а другий рядок займає простір, що залишився.
overflow: auto; Вмикає прокручування, якщо вміст переповнює контейнер, додаючи смуги прокручування за потреби.
height: 100vh; Встановлює висоту елемента на 100% висоти вікна перегляду.
grid-template-rows Визначає розмір кожного рядка в макеті сітки.
display: flex; Визначає flex-контейнер, увімкнувши модель макета flexbox для його дітей.

Використання сучасних методів верстки CSS

У першому сценарії ми використовуємо зробити a заповнити простір, що залишився на екрані. The клас встановлено на display: flex і . Це розташовує заголовок і вміст вертикально. Заголовок має фіксовану висоту, тоді як вміст використовує щоб заповнити простір, що залишився. Цей підхід гарантує, що елемент div вмісту динамічно налаштовується, щоб займати будь-яку висоту, що залишилася, незалежно від висоти заголовка. The властивість дозволяє прокручувати вміст div, якщо вміст перевищує видиму область, зберігаючи чистий макет без проблем із переповненням.

У другому сценарії використовується для макета. The клас встановлено на з grid-template-rows: auto 1fr. Це створює сітку з двох рядків: перший рядок (заголовок) автоматично регулює свою висоту, а другий рядок (вміст) заповнює простір, що залишився. Подібно до прикладу Flexbox, div вмісту має властивість для елегантної обробки вмісту переповнення. Обидва методи усувають потребу в таблицях, використовуючи сучасні методи компонування CSS для досягнення гнучкого та адаптивного дизайну, який підлаштовується під різну висоту заголовків і гарантує, що вміст заповнює решту сторінки.

Використання Flexbox для заповнення простору екрана, що залишився

HTML і CSS за допомогою Flexbox

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Flexbox Layout</title>
  <style>
    body, html {
      margin: 0;
      height: 100%;
    }
    .container {
      display: flex;
      flex-direction: column;
      height: 100vh;
    }
    .header {
      background-color: #f8f9fa;
      padding: 10px;
    }
    .content {
      flex: 1;
      background-color: #e9ecef;
      overflow: auto;
    }
  </style>
</head>
<body>
  <div class="container">
    <div class="header">
      <h1>Header</h1>
    </div>
    <div class="content">
      <p>Content goes here...</p>
    </div>
  </div>
</body>
</html>

Використання сітки CSS для заповнення простору, що залишився на екрані

HTML і CSS з використанням Grid Layout

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Grid Layout</title>
  <style>
    body, html {
      margin: 0;
      height: 100%;
    }
    .container {
      display: grid;
      grid-template-rows: auto 1fr;
      height: 100vh;
    }
    .header {
      background-color: #f8f9fa;
      padding: 10px;
    }
    .content {
      background-color: #e9ecef;
      overflow: auto;
    }
  </style>
</head>
<body>
  <div class="container">
    <div class="header">
      <h1>Header</h1>
    </div>
    <div class="content">
      <p>Content goes here...</p>
    </div>
  </div>
</body>
</html>

Розширені методи для макетів вмісту повної висоти

Ще один ефективний спосіб забезпечити a заповнює простір, що залишився на екрані, використовуючи одиниця в поєднанні з . The vh Одиниця представляє відсоток від висоти вікна перегляду, що робить його корисним для адаптивних дизайнів. Встановивши висоту div вмісту , ви можете динамічно регулювати висоту залежно від висоти заголовка. Цей підхід добре працює для заголовків із фіксованою або відомою висотою, гарантуючи, що div вмісту завжди заповнює вільний простір. Додатково використовуючи одиниць допомагає підтримувати узгоджену поведінку макета на різних розмірах екрана.

Для більш складних макетів можна використовувати JavaScript для динамічного обчислення та налаштування висоти елементів. Приєднавши слухачі подій до події зміни розміру вікна, ви можете перерахувати висоту div вмісту щоразу, коли розмір вікна змінюється. Цей метод забезпечує більшу гнучкість і може обробляти різну висоту заголовків і динамічний вміст. Поєднання JavaScript із CSS гарантує, що ваш макет залишається чуйним і адаптується до різних розмірів екрана та змін вмісту, пропонуючи надійне рішення для повнорозмірних розділів вмісту у веб-додатках.

  1. Як я можу використовувати функцію calc() для динамічних висот?
  2. The дозволяє виконувати обчислення для визначення значень властивостей CSS, наприклад щоб врахувати заголовок розміром 50 пікселів.
  3. Що таке одиниця vh у CSS?
  4. The одиниця означає висоту вікна перегляду, де дорівнює 1% від висоти вікна перегляду, що робить його корисним для адаптивного дизайну.
  5. Як обробляти динамічну висоту заголовка?
  6. Використовуйте JavaScript, щоб виміряти висоту заголовка та відповідним чином налаштувати висоту елемента div вмісту, щоб він динамічно заповнював простір, що залишився.
  7. Чи можна комбінувати Flexbox і Grid?
  8. Так, можна поєднувати і макети в межах одного проекту, щоб використовувати їхні переваги для різних вимог до макетів.
  9. Як забезпечити можливість прокручування у div вмісту?
  10. Установіть елементи div вмісту властивість до щоб додати смуги прокрутки, коли вміст перевищує висоту div.
  11. Які переваги використання JavaScript для коригування макета?
  12. JavaScript забезпечує коригування в реальному часі та гнучкість для обробки динамічного вмісту та змінних розмірів елементів, підвищуючи швидкість реагування макета.
  13. Чи можна уникнути використання таблиць для верстки?
  14. Так, сучасні методи компонування CSS, такі як і пропонують більш гнучкі та адаптивні рішення, ніж традиційні макети на основі таблиць.
  15. Як змусити div заповнювати решту висоти за допомогою CSS Grid?
  16. Встановіть контейнер сітки на , а другий рядок (вміст) має значення щоб заповнити решту висоти.
  17. Яку роль відіграє блок 100vh у макетах на повну висоту?
  18. The unit представляє повну висоту вікна перегляду, дозволяючи елементам адаптивно масштабуватися залежно від розміру вікна перегляду.
  19. Чи можна використовувати min-height для адаптивних макетів?
  20. Так, використовуючи гарантує, що елемент підтримує мінімальну висоту, що може допомогти керувати переповненням вмісту та підтримувати узгодженість макета.

Техніка завершення макета

Використовуючи сучасні методи CSS, як-от і , веб-розробники можуть ефективно створювати макети, у яких елемент div вмісту заповнює простір екрана, що залишився, забезпечуючи оперативність і адаптивність. Ці методи усувають потребу в застарілих макетах на основі таблиць і забезпечують більшу гнучкість дизайну.

Комбінування одиниць CSS, наприклад і функції, як з JavaScript для динамічних коригувань може ще більше підвищити реакцію макета. Це забезпечує безперебійну роботу користувача на різних пристроях і розмірах екрана, роблячи веб-додаток більш надійним і зручним для користувача.