Wrapper css html: Как стилизовать wrapper в CSS

html — Для чего теги «оборачивают» Wrapper’ом?

Вопрос задан

Изменён 5 лет 2 месяца назад

Просмотрен 31k раз

Для чего теги «оборачивают» Wrapper’ом и почему у Wrappera часто ставят position:relative? Что вообще дает использование wrapper’а?

  • html
  • css
4

Это может быть связано с position:absolute для вложенного элемента. Дело в том, что без обёртки с position:relative координаты такого элемента будут отсчитываться относительно всего документа, а с обёрткой — относительно обёрточного элемента.

Это всего лишь контейнер для удобства, заключая блоки в обертку проще центрировать, задавать общую ширину.

…. и т.д. Релейтив ставят если собираются абсолютно позиционировать внутренние блоки.

В целом, wrapper используют для удобства позиционирования. Самому wrapper, присваивают минимум свойств.

Например:

.wrapper { max-width: 960px; padding-right: 10px; padding-left: 10px; }

А иногда вообще оставляют его без них. Почему просто не оставлять див без класса? Во первых, противоречит некоторым методологиям (например БЭМ). Во вторых, слово «wrapper» переводится как «обертка» и дает понять, тем кто будет работать с кодом после вас, зачем этот div нужен (при беглом просмотре). Также, он может послужить прослойкой для функционирования различных скриптов.

Исчерпывающая статья

Банальный пример… Допустим нам надо чтобы блок вытягивался снизу верх, но при этом должен быть где-то в середине… И тут без обертки не обойтись… Потому, что ему надо задать абсолютное позиционирование и bottom: 0;… Но без обертки его абсолютное позиционирование будет относительно body и будет выглядеть так.

..

div {
  position: absolute;
  bottom: 0;
  width: 200px;
  height: 50px;
  background: red;
  transition: all .5s;
}

div:hover {
  height: 100px;
}
<div></div>

А с оберткой то, что надо…

#wrap {
  position: relative;
  top: 100px;
  width: 200px;
  height: 50px;
  background: red;
}

#wrap>div {
  position: absolute;
  bottom: 0;
  width: 200px;
  height: 50px;
  background: red;
  transition: all .5s;
}

#wrap>div:hover {
  height: 100px;
}
<div>
  <div></div>
</div>

Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации

Почта

Необходима, но никому не показывается

Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки

html — Есть ли класс wrapper для bootstrap?

Вопрос задан

5 лет 5 месяцев назад

Изменён 5 лет 3 месяца назад

Просмотрен 2k раз

Есть ли в bootstrap обертка (wrapper) для странички(HTML)?
Может быть неправильно задал вопрос, но мне нужно сделать общий padding для странички.

  • html
  • css
  • вёрстка
  • bootstrap
  • адаптивная-верстка
  1. У бутстрапа нет общей обертки.

  2. Если вы хотите задать вертикальный внутренний отступ, то спокойно можете добавить его к body.

  3. Если вы хотите задать горизонтальный отступ:

a) Если вы планируете сделать отступ больше чем половина gutter, то можете просто добавить эти отступы для container

. В 4 бутстрапе только для отступов есть отдельные классы. Таким образом вы можете обойтись только средствами бутсрап:

span {
  display: block;
  padding: 5px;
  margin-top: 5px;
  border: 1px solid #ddd;
  background: #eee;
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" integrity="sha384-PsH8R72JQ3SOdhVi3uxftmaW6Vc51MKb0q5P2rRUpPvrszuE4W1povHYgTpBfshb" crossorigin="anonymous">

<div>
  <div>
    <div>
      <span>1 of 2</span>
    </div>
    <div>
      <span>2 of 2</span>
    </div>
  </div>
  <div>
    <div>
      <span>1 of 3</span>
    </div>
    <div>
      <span>2 of 3</span>
    </div>
    <div>
      <span>3 of 3</span>
    </div>
  </div>
</div>

б) Можно поменять в переменных основной отступ — тогда изменятся паддинги у контейнера, маргины у row, и паддинги у col и соответсвенно изменится отступ между колонками. В третьем бустрапе для этого можно воспользоваться кастомизатором.

в) Если вы планируете сделать отступ меньше чем половина gutter и оставить прежнее расстояние между колонками, тогда можно обернуть содержимое во wrapper c отрицательным оступом и добавить странице горизонтальный overflow, тогда следует помнить, что содержимое может обрезаться и чуть внимательнее относитесь к этому при тестировании.

г) Так же в бустрапе есть возможность делать колонки без отступа .no-gutter — тогда ваши паддинги у контейнера могут быть любой ширины.

Судя по поиску его там нет, вы это можете проверить простым поиском в файлах

bootstrap. Остаётся только создать самому.

1

Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации

Почта

Необходима, но никому не показывается

Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки

html — Как правильно сделать оболочку CSS?

Лучший способ сделать это зависит от вашего конкретного варианта использования.

Однако, если мы говорим о общих рекомендациях по реализации CSS-оболочки, вот мое предложение: ввести дополнительный элемент

со следующим классом :

 /**
 * 1. Центрируйте содержимое. Да, это немного самоуверенно.
 * 2. Используйте `max-width` вместо `width`
 * 3. Добавьте набивку по бокам.
 */
.обертка {
    поле справа: авто; /* 1 */
    поле слева: авто; /* 1 */
    максимальная ширина: 960 пикселей; /* 2 */
    отступ справа: 10px; /* 3 */
    отступ слева: 10px; /* 3 */
}
 

… для тех из вас, кто хочет понять почему , вот 4 основные причины, которые я вижу:

В принятом в настоящее время ответе Арон говорит ширина

. Я не согласен и вместо этого предлагаю max-width .

Установка ширины блочного элемента предотвратит его растяжение до краев контейнера. Поэтому элемент Wrapper будет занимать указанную ширину. Проблема возникает, когда окно браузера меньше ширины элемента. Затем браузер добавляет на страницу горизонтальную полосу прокрутки.

Использование max-width в этой ситуации улучшит обработку браузером маленьких окон. Это важно при создании сайта, пригодного для использования на небольших устройствах. Вот хороший пример, демонстрирующий проблему:

 /**
 * Проблема с этим возникает
 * когда размер окна браузера меньше 960 пикселей.
 * Затем браузер добавляет на страницу горизонтальную полосу прокрутки.
 */
.ширина {
    ширина: 960 пикселей;
    поле слева: авто;
    поле справа: авто;
    граница: 3 пикселя сплошная #73AD21;
}
/**
 * Вместо этого, используя max-width, в этой ситуации
 * улучшит работу браузера с маленькими окнами.
 * Это важно, когда сайт можно использовать на небольших устройствах.
 */
.Максимальная ширина {
    максимальная ширина: 960 пикселей;
    поле слева: авто;
    поле справа: авто;
    граница: 3 пикселя сплошная #73AD21;
}
/**
 * Кредиты за подсказку: W3Schools
 * https://www.w3schools.com/css/css_max-width.
asp */
 
Ширина этого элемента div: 960 пикселей;

Этот элемент div имеет max-width: 960px;

Таким образом, с точки зрения отзывчивости, кажется, что max-width — лучший выбор! —


Я видел много разработчиков все еще забываю один пограничный случай. Допустим, у нас есть Wrapper с максимальная ширина установлена ​​на 980px. Пограничный случай возникает, когда ширина экрана устройства пользователя составляет ровно 980 пикселей. Содержимое будет точно приклеиваться к краям экрана, не оставляя места для передышки.

Как правило, мы хотели бы иметь немного отступов по бокам. Вот почему, если мне нужно реализовать Wrapper с общей шириной 980 пикселей, я бы сделал это так:

 .wrapper {
   максимальная ширина: 960 пикселей; /** На 20 пикселей меньше, чтобы соответствовать отступам по бокам */
   
   отступ справа: 10px;
   отступ слева: 10px;
   
   /** ... опущено для краткости */
}
 

Таким образом, добавление padding-left и padding-right в ваш Wrapper может быть хорошей идеей, особенно на мобильных устройствах.

Или рассмотрите возможность использования box-sizing, чтобы отступы вообще не меняли общую ширину.


По определению Wrapper не имеет семантического значения. Он просто содержит все визуальные элементы и контент на странице. Это просто универсальный контейнер. Поэтому с точки зрения семантики

— лучший выбор.

Можно задаться вопросом, может ли элемент

подойти для этой цели. Однако вот что говорит спецификация W3C:

.

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

Элемент

имеет собственную семантику. Он представляет собой тематическую группировку контента. Тема каждого раздела должна быть определена, как правило, путем включения заголовка (элемент h2-h6) в качестве дочернего элемента раздела.

Примерами разделов могут быть главы, различные страницы с вкладками в диалоговом окне с вкладками или пронумерованные разделы диссертации. Домашняя страница веб-сайта может быть разделена на разделы для введения, новостей и контактной информации.

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

лучше всего подходит для обертки!


Вот связанный с этим вопрос. Да, в некоторых случаях вы можете просто использовать элемент в качестве оболочки. Однако я бы не рекомендовал вам это делать просто из-за гибкости и устойчивости к изменениям.

Вот пример использования, который иллюстрирует возможную проблему: представьте, если на более позднем этапе проекта вам нужно принудительно прикрепить нижний колонтитул к концу документа (нижняя часть окна просмотра, если документ короткий). Даже если вы можете использовать самый современный способ сделать это — с Flexbox, я думаю, вам понадобится дополнительный Wrapper <дел> .

Я бы сделал вывод, что по-прежнему рекомендуется иметь дополнительный

для реализации оболочки CSS. Таким образом, если позже требования к спецификациям изменятся, вам не нужно будет позже добавлять Wrapper и иметь дело с большим количеством перемещений стилей. В конце концов, мы говорим только об одном дополнительном элементе DOM.

html — CSS Language Speak: контейнер против оболочки?

спросил

Изменено 8 месяцев назад

Просмотрено 52к раз

В чем разница между контейнером и оберткой? И что имеется в виду под каждым?

  • HTML
  • CSS
1

Согласно этому ответу:

В языках программирования слово 9Контейнер 0007 обычно используется для структуры, которые могут содержать более одного элемента.

Оболочка вместо этого — это то, что обертывает один объект чтобы предоставить ему больше функций и интерфейсов.

Это определение соответствует значению слов и полезно для структур HTML, таких как:

 
  • <дел>...
  • <дел>...
  • <дел>...
  • <дел>...
  • <дел>...
4

Между ними нет никакой разницы.

Это именно то, что вам нравится называть

, который часто содержит все содержимое страницы

3

Я хотел бы добавить кое-что сюда:

С текущими стандартами CSS и лучшими практиками обычно у вас есть элемент-контейнер со свойством display: grid . это div содержит все столбцов и строк макета. Он также имеет широкое окно просмотра , фон , цвет, границу и тень . Эти свойства отображаются с использованием всей ширины браузера.

Теперь нужно добавить содержимое. Вам нужно создать еще один div, это max-width: 1256px , и теперь вы указываете margin: 0 auto и width: 100% .

Итак, структура будет:

 <раздел>
  <дел>
    <дел>
    <дел>
    <дел>
    <дел>
  

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

Поэтому в некоторых ситуациях:

Контейнер предназначен для стилизации всей ширины секции. Оболочка предназначена для стилизации и центрирования содержимого max-width внутри него.

3

Может быть разница, если вы решите дать им один.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *