Для чего теги «оборачивают» Wrapper’ом?
Для чего теги «оборачивают» Wrapper’ом и почему у Wrappera часто ставят position:relative ? Что вообще дает использование wrapper’а?
Отслеживать
51.4k 87 87 золотых знаков 267 267 серебряных знаков 505 505 бронзовых знаков
задан 17 апр 2016 в 18:36
41 1 1 золотой знак 1 1 серебряный знак 4 4 бронзовых знака
В текущем виде на ваш вопрос невозможно дать лаконичный ответ. Для получения ответа поясните, в чем именно вы видите проблему, какие технологии используете и что хотите видеть в ответе.
17 апр 2016 в 18:41
@Grundy, видимо, идентификатор #wrapper имеется в виду, и участник не знает, что можно задавать любые значения атрибутом id и class , а wrapper приводится только для примера. Berty, для чего wrapper , например, как в этом примере Вы хотели узнать? Спасибо.
17 апр 2016 в 18:59
@Саша Черных,я тут первый раз,так что,извиняюсь за неточную формулировку)Да,я бы хотел узнать.
17 апр 2016 в 19:29
Когда понадобится, сам поймёшь.
27 фев 2018 в 22:39
4 ответа 4
Сортировка: Сброс на вариант по умолчанию
Это может быть связано с position:absolute для вложенного элемента. Дело в том, что без обёртки с position:relative координаты такого элемента будут отсчитываться относительно всего документа, а с обёрткой — относительно обёрточного элемента.
Отслеживать
ответ дан 17 апр 2016 в 18:58
6,904 2 2 золотых знака 27 27 серебряных знаков 57 57 бронзовых знаков
Это всего лишь контейнер для удобства, заключая блоки в обертку проще центрировать, задавать общую ширину. и т.д. Релейтив ставят если собираются абсолютно позиционировать внутренние блоки.
Отслеживать
ответ дан 17 апр 2016 в 19:36
1,087 3 3 золотых знака 15 15 серебряных знаков 41 41 бронзовый знак
В целом, wrapper используют для удобства позиционирования. Самому wrapper , присваивают минимум свойств.
А иногда вообще оставляют его без них. Почему просто не оставлять див без класса? Во первых, противоречит некоторым методологиям (например БЭМ). Во вторых, слово «wrapper» переводится как «обертка» и дает понять, тем кто будет работать с кодом после вас, зачем этот div нужен (при беглом просмотре). Также, он может послужить прослойкой для функционирования различных скриптов.
Создание и стилизация CSS таблиц: от основ к адаптивности
В CSS, table wrapper box – это как обертка вокруг вашей таблицы . Представьте, что это коробка, которая держит все части таблицы вместе, чтобы она выглядела аккуратно и организованно на веб-странице.
Table wrapper box решает проблему управления и стилизации таблиц. Это делает таблицы не только красивыми, но и функциональными, позволяя им адаптироваться под разные экраны и устройства. ️ Это упрощает написание программ, делая веб-страницы более доступными и удобными для пользователей.
Понимание этого концепта помогает создавать более чистый и организованный код, что важно для эффективной разработки веб-проектов. Особенно это актуально, когда дело доходит до создания адаптивных дизайнов, где каждый элемент на странице должен корректно отображаться на любом устройстве.
Пример
Представьте, что вы создаете веб-страницу для кафе, где хотите красиво отобразить меню. Ваша задача — сделать так, чтобы меню выглядело аккуратно и стильно. Для этого вы решаете использовать таблицу, где каждое блюдо будет представлено в отдельной строке, а информация о нем — в столбцах (название, цена, ингредиенты).
Скопировать код
.menu-table < display: table; border-collapse: collapse; width: 100%; >.menu-row < display: table-row; >.menu-item
Такой подход решает несколько проблем:
- Гибкость в стилизации: В отличие от стандартных HTML таблиц, использование display: table; и связанных свойств позволяет легче настраивать внешний вид таблицы, делая ее более гармоничной с остальным дизайном сайта.
- Адаптивность: Так как мы не привязаны к жесткой структуре таблицы, мы можем легче адаптировать отображение для различных устройств, например, изменяя расположение элементов для мобильных телефонов.
Использование «table wrapper box» позволяет создавать структурированные и визуально привлекательные таблицы, при этом обеспечивая большую гибкость и адаптивность, что особенно важно для современных веб-страниц.
Основы модели CSS таблиц
CSS table box model – это мощный инструмент для веб-разработчиков, позволяющий преобразовать HTML элементы в боксы, которые затем можно стилизовать и управлять ими с помощью CSS. Это основа для понимания, как работает table wrapper box, и ключ к созданию структурированных и стильных таблиц.
Создание таблиц с помощью CSS
Создание таблиц с помощью CSS начинается с понимания, как использовать свойства display: table , table-row и table-cell для структурирования данных. Эти свойства позволяют вам создавать таблицы без использования традиционных HTML тегов таблицы, предоставляя большую гибкость в стилизации и адаптивности.
Пример создания таблицы с CSS:
Скопировать код
.table < display: table; border-collapse: collapse; width: 100%; >.row < display: table-row; >.cell
Этот код создает структуру таблицы, используя CSS классы. Класс .table используется для создания обертки таблицы, .row для строк, и .cell для ячеек. Это дает вам полный контроль над внешним видом и поведением таблицы на вашей веб-странице.
Преимущества и недостатки таблиц на CSS
Преимущества использования CSS для стилизации таблиц включают в себя гибкость в дизайне и адаптивность. С помощью CSS вы можете легко изменять внешний вид таблицы, добавлять анимации и делать таблицы адаптивными для различных устройств и размеров экрана.
Однако есть и недостатки. Сложные таблицы, созданные с помощью CSS, могут быть менее доступными для некоторых пользователей и поисковых систем. В некоторых случаях, особенно когда данные действительно должны быть представлены в форме таблицы для печати или анализа, лучше использовать стандартные HTML таблицы.
Адаптивный дизайн и таблицы на CSS
Адаптивный дизайн – это неотъемлемая часть современного веб-разработки. Использование table wrapper box позволяет создавать таблицы, которые легко адаптируются под различные устройства и размеры экрана. Например, вы можете изменять размеры столбцов и строк, скрывать или отображать определенные данные в зависимости от размера экрана, используя медиа-запросы и другие CSS техники.
Альтернативы и современные подходы
Хотя таблицы на CSS предлагают гибкость и адаптивность, существуют другие инструменты, такие как Flexbox и Grid Layout, которые предоставляют еще больше возможностей для организации контента на веб-страницах. Эти технологии позволяют создавать сложные макеты с более простым и понятным кодом, обеспечивая при этом высокую адаптивность и кроссбраузерную совместимость.
В заключение, понимание и использование CSS table box model и table wrapper box открывает перед веб-разработчиками широкие возможности для создания структурированных, стильных и адаптивных таблиц. Это важный навык, который поможет сделать ваши веб-проекты более доступными, удобными для пользователя и эстетически привлекательными.
Класс wrapper в html зачем он нужен?
Я не могу понять зачем в процессе верстки все оборачивать в div с классом «wrapper» в html.
Ну вот зачем? Сложно все назначить на body?
- Вопрос задан более трёх лет назад
- 23163 просмотра
1 комментарий
Простой 1 комментарий

WapSter @wapster92 Куратор тега Вёрстка
Ну если тебе не нужно не оборачивай.
Решения вопроса 1
Stalker_RED @Stalker_RED
Вот так без стилей совершенно непонятно зачем. Откроойте css, посмотрте какие стили применяются к wrapper-у, и станет понятно. Может на body они не применяются в принципе, или на body одни, а на wrapper-е другие.

Вот на тостере, например, вместо wrapper-а layout. Не позволяет растягиваться контенту на больших мониторах.
Ответ написан более трёх лет назад
Нравится 3 3 комментария
Root Wood @Root_Wood Автор вопроса
Я в том смысле, вот я начинаю новый проект. Какие могут быть у меня причины обернуть все в wrapper, зачем мне это делать?
Для ширины только? Ну а разве сложно у body выставить ширину?

Ну а разве сложно у body выставить ширину?
https://css-live.ru/articles/luchshij-sposob-reali. Прочтите раздел Тег против дополнительного

WapSter @wapster92 Куратор тега Вёрстка
Root_Wood, у боди вообще не стоит ничего указывать кроме параметров шрифта, и может быть ещё фона и то перед этим задав body какой-нибудь класс.
Как стилизовать wrapper в CSS
Контент сайта должен находиться в элементе, имеющем такую ширину, чтобы его было легко читать. Для достижения этого мы можем использовать то, что называется wrapper, обёртка или контейнер. Есть несколько способов использования обёртки в CSS, и все они могут вызвать некоторые затруднения.
В этой статье я объясню вам всё, что нужно знать о контейнерах в CSS: как они работают и как их использовать. Обратите внимание, в статье я могу употреблять термины wrapper, обёртка и контейнер, но все они означают одно и то же.
Готовы? Давайте разбираться!
Обновлено: 2023-09-08 20:38:55 Сергей Бензенко автор материала
Кратко о контейнерах
Когда вы слышите слово обёртка или контейнер – это буквально означает, что группа элементов обёрнута другим элементом или содержится в нём. Не используя дополнительные объекты, мы можем добавить обёртку к элементу , как показано ниже.
body
Однако добавлять wrapper к элементу в современных условиях было бы не очень практично. Контейнер не позволяет дочерним элементам выходить за его границы. Посмотрите на следующую фигуру:

У нас есть боковые и центральные элементы, которые существуют внутри другого элемента, оборачивающего их. Конечно, у элемента wrapper есть своя ширина.
Без контейнера дочерние элементы соприкасались бы с границами экрана. Это выглядело бы довольно раздражающе для пользователя, особенно на большом экране.

Фигура, продемонстрированная выше, показывает, что элементы растягиваются, если их ничто не оборачивает. Пользователю не стоит видеть такую картину. Давайте объясню, почему .
Почему страница должна иметь обёртку
Использование контейнера на странице даёт много преимуществ, о которых вы, как дизайнер или разработчик, должны знать. Вот некоторые из них:
- Контейнеры делают контент более читабельным. Без обёртки такой контент как текст или картинки может растянуться на полную ширину экрана. На маленьких экранах это может быть приемлемо, но на больших выглядит неприятно.
- Обертки группируют элементы так, что становится легче настраивать расстояние между ними.
- Без обертки было бы сложно разделить элементы дизайна на колонки.
Добавляем ширину

Первая вещь, о которой стоит подумать, создавая wrapper, – это его ширина. Насколько широким вы хотите его видеть? Это зависит от вашего дизайна. Как правило, чаще всего используется ширина контейнера в диапазоне 1000px – 1300px. Самый популярный фреймворк Bootstrap, например, использует ширину в 1170px.
.wrapper
Однако не рекомендуется использовать свойство width, так как из-за этого может появиться горизонтальная прокрутка экрана, если его размер меньше 1170px. Но вы можете от неё избавиться, добавив свойство max-width.
.wrapper
Это будет работать, но вы также можете убрать свойство width и использовать только max-width, как показано ниже:
.wrapper
Теперь, когда мы добавили контейнеру ширину, давайте расположим его в центре.
Центрирование контейнера

Чтобы разместить контейнер в центре, вы должны присвоить свойству margin значение auto с левой и правой стороны. Смотрите пример, приведенный ниже:
.wrapper
Согласно спецификации CSS, auto margin работает следующим образом:
Если свойствам margin-left и margin-right присвоено значение auto, то размер отступа с обеих сторон будет одинаковым. Это горизонтально центрирует объект, относительно краёв содержащего блока.
Я использовал параметр «margin: 0 auto», который сбрасывает значение margin сверху и снизу до нуля, а справа и слева устанавливает значение auto. Пользуясь этим способом, можно ожидать некоторых последствий, о которых я расскажу в этой статье чуть позже.
Пока что рекомендую установить значения margin вручную.
.wrapper
Добавляем padding слева и справа

Важно не забыть добавить padding с левой и правой стороны. Если размер окна просмотра меньше максимальной ширины контейнера, то края контейнера будут соприкасаться с границами окна просмотра.
.wrapper
Добавляя padding, мы можем быть уверены, что слева и справа будет отступ в 16px, даже если ширина окна просмотра меньше максимальной ширины контейнера.
Свойство padding действует как подстраховка, не допускающая прилегания границ контейнера к границам окна просмотра, в случае нехватки места.
Использование процентной ширины для контейнера
Я получил ответ об использовании процентной ширины (типа max-width: 90%) для контейнера, вместо добавления padding-left и padding-right.

В случае использования этого метода, ширина, равная 90% от окна просмотра, будет слишком крупной на больших экранах. Это можно исправить, используя медиа-запросы.
.wrapper < max-width: 90%; margin-left: auto; margin-right: auto; >/* Медиа-запрос для большого экрана */ @media (min-width: 1170px) < .wrapper < max-width: 1170px; >>
Применяя процентную ширину, мы совершаем дополнительный шаг. Можно легко избежать этот шаг, используя фиксированное значение ширины. Другое решение говорит, что мы можем совместить width: 90% со свойством max-width: 1170px.
.wrapper
Это довольно интересный подход, но я бы предпочел самостоятельно добавить padding, вместо того чтобы полагаться на процентную ширину.
Способ отображения контейнера
Так как контейнер – это , он по умолчанию является блочным элементом. Вопрос в том, что делать, если мы хотим, чтобы он отображался в виде сетки, и всё его содержимое располагалось на сетке?
Что ж, я бы не рекомендовал так делать, потому что это противоречит концепции разделения обязанностей. «Обёртка» оборачивает другие элементы, и на этом всё. Если вам нужен контейнер с сеткой, добавьте в существующий контейнер элемент со свойством display: grid. Это более простой, понятный и доступный способ.
Так делать не рекомендуется, потому что использование элемента wrapper на другой странице может случайно повредить вашу вёрстку.
.wrapper
Лучшим решением будет следующее:
.featured-news
Заметьте, что я добавил отдельный элемент , чтобы он содержал контент. Пожалуйста, не обращайте внимания на классы и соглашения по именованию в этом примере. Мы можем найти гораздо лучшее решение, создав названия классов, которые могут быть использованы повторно на разных страницах сайта. Однако соглашения по именованию выходят за рамки этой статьи.
Добавляем отступ между контейнерами
Помните, я не рекомендовал использовать сокращенную версию кода для центрирования контейнера? Я говорю об этой версии:
.wrapper
Она может привести к неполадкам, если на странице несколько контейнеров, и вы хотите добавить отступ между ними. Если вы зачем-то добавили другую вариацию класса к элементу wrapper, по определённым причинам у вас может не получиться добавить отступ.
.wrapper-variation < margin-top: 50px; >.wrapper
Свойство margin не будет работать для элемента wrapper-variation, потому что оно противоречит свойству margin: 0 auto. Сокращенное свойство будет отменять полное. Чтобы избежать подобной путаницы, в таких случаях рекомендуется использовать полные свойства.
Теперь давайте перейдём к созданию отступа. В каждом проекте я подготавливаю несколько служебных классов и использую их по необходимости. Обратите внимание на следующую модель:

Благодаря подобному подходу, сам контейнер остаётся без изменений, а отступ добавляется к дополнительным служебным классам в CSS. Теперь вы, наверное, спросите, зачем мне создавать несколько контейнеров на странице, если я могу создать один? В HTML-коде, приведенном выше, между двумя контейнерами есть элемент .
Здесь было бы полезно использовать декларацию !important, так как основная цель служебных классов в CSS, – сделать определенное свойство обязательным. Мы гарантируем это, добавляя !important.
Контейнер внутри полноэкранного раздела
Могут быть случаи, когда фон секции занимает 100% ширины окна просмотра, а внутри секции находится контейнер. Это похоже на то, что я показывал в предыдущем примере.
Структура HTML-страницы может выглядеть так:
Элемент занимает 100% ширины окна просмотра. Вы можете добавить к нему фоновый цвет или изображение. Внутри него контейнер не позволяет содержимому занять всю ширину окна просмотра.

На картинке, приведенной выше, у элемента есть фоновое изображение, которое занимает всю ширину окна просмотра. Контент внутри него ограничен шириной контейнера.
Нужен ли контейнер для первой секции?
Бывает по-разному. Давайте рассмотрим два наиболее часто используемых варианта дизайна первой секции (Hero Section).
В первом варианте содержимое располагается по центру и ограничивается определенной шириной.

Во втором варианте содержимое растягивается по ширине основного контейнера.

Чтобы лучше понять эти две модели, давайте разберёмся, как построить каждую из них.
Первая секция с контентом в центре
Возможно, вы не устоите перед соблазном разместить содержимое первой секции и центрировать всё без учета контейнера.
How to make bread at home
.
Sign up
Имея такой HTML-код, вы бы центрировали содержимое с помощью text-align.
.hero
Это будет выглядеть здорово до тех пор, пока вы не измените размер окна браузера. Вы можете столкнуться проблемами, рассматриваемыми далее.
Содержимое касается краёв
Так как padding справа и слева отсутствует, содержимое будет касаться краёв без каких-либо отступов. Это плохо для пользователя, ведь в подобной ситуации сложно просматривать и читать контент.

Слишком длинная строка на больших экранах
Будет очень сложно читать текст абзаца на больших экранах, так как строка слишком длинная. Сайт « Элементы типографического стиля, используемые в сети » рекомендует, чтобы в строке было 45-75 символов. Чем дальше от этого диапазона, тем сложнее будет читать текст, представленный на веб-странице.

Для устранения подобных проблем, можно использовать контейнер, который не даст строке текста стать слишком длинной и добавит отступ на мобильных устройствах.
How to make bread at home
.
Sign up
Я использовал класс hero__wrapper, так как этот контейнер может принадлежать только первой секции (Hero Section), поэтому его ширина может быть меньше ширины других контейнеров.
.hero__wrapper
Для центрирования содержимого вы можете применить любой метод, который хотите, в зависимости от варианта использования. В этом примере будет достаточно применить text-align: center, чтобы расположить контент в центре.
Контейнер стоит выравнивать по центру или по левой стороне?
Не знаю, есть ли однозначный ответ на этот вопрос, но я видел сайты, которые на экранах ноутбуков выравнивают контейнер по центру, а на экранах компьютеров – по левой стороне.
Сайт TechCrunch – хороший тому пример. Обратите внимание на то, что на больших экранах он выравнивается по левой стороне.

Лично я больше люблю сайты, которые выравниваются по центру и имеют симметричный отступ справа и слева. Возможно, поэтому я мало знаю о данной теме.
Используем переменные CSS для вариаций контейнеров
Редко случается так, что вам нужен контейнер только одного размера. Ширина контейнера может быть большой или маленькой, в зависимости от содержимого и варианта использования. Применяя переменные CSS, мы можем по-новому взглянуть на wrapper и сделать его максимально пластичным. Обратите внимание на следующее:
.wrapper
Возможно, вы заметили, что у функции var есть два значения: первое –
—wrapper-width, и второе – 1170px. Вторая переменная является резервной , то есть используется, если значение переменной —wrapper-width не установлено.
Что это значит? Это значит, что вы можете создать вариацию контейнера, установив свойство —wrapper-width, как показано ниже.
Таким образом, я создал вариацию контейнера:
- Без добавления новых классов;
- Не копируя и не вставляя стили;
- Более надежную и легко редактируемую с помощью DevTools.
Если вам не нравится использовать встроенные стили для изменения переменной CSS, вы можете вместо этого добавить новый класс. Смотрите пример, приведенный ниже:
.wrapper--small < --wrapper-width: 720px; /* это изменит ширину контейнера, установленную по умолчанию */ >
Используем свойство Display: Contents
Для начала я вас познакомлю с этим значением. Каждый элемент в CSS является блочным; и этот блок содержит контент, границы, внутренние и внешние отступы. Если вы примените display: contents, этот блок будет исключен из потока. Я могу представить это как удаление открывающего и закрывающего тэгов вокруг него.
.site-header__wrapper
Возможно, в примере, приведенном выше, вам понадобится растянуть header на всю ширину страницы, вместо того, чтобы вписывать его в контейнер.
.site-header__wrapper < display: contents; >.site-header
Таким способом элемент wrapper будет скрыт (в каком-то смысле). Теперь, когда мы применили display: flex к элементу site-header, объекты, принадлежавшие контейнеру, станут дочерними для элемента site-header.
Адаптивный фон, фиксированный контент
В своей книге о секретах CSS Лия Веру предложила интересную технику, которая может быть использована для секций с адаптивным фоном (фон, занимающий всю ширину окна просмотра), внутри которых есть контейнер. Давайте рассмотрим распространенный способ, позволяющий сделать это:
section < background-color: #ccc; >.wrapper
Принцип работы margin-left: auto и margin-right: auto заключается в вычислении половины ширины окна просмотра и вычитании из неё ширины контента. То же самое можно сделать, используя padding.

section
Мы ещё не закончили. На мобильных устройствах контент будет соприкасаться с границами экрана. Решить это можно следующим способом:
section < padding: 1rem; >@media (min-width: 1170px) < section < padding: 1rem calc(50% - 585px); >>
В качестве альтернативного решения можно использовать новую функцию CSS max(). Мы просто устанавливаем минимальный padding размером в 1rem, а вычисление 50% — 585px будет использовано в качестве другого значения.
section
Конец
Вот мы и стилизовали наш wrapper. У вас есть комментарий или предложение?