Внутренние (padding) и внешние (margin) отступы в CSS

margin css и padding css

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

И в этой статье хочу Вам рассказать именно про отступы css. Первым делом нужно отметить, что есть два типа отступов, внутренние (padding) и внешние (margin).

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

структура блочного блока

margin — это внешний отступ, который формируется за рамки текущего блока до рамки родительского блока.

padding — это внутренний отступ (поле) который формируется, начиная с содержимого блока до рамки (границы) текущего блока

Внешние и внутренние отступы задаются только для блочных элементов (таких как div, p, ul, form, заголовки h1,h2…h6 и другие). Для того чтобы задать отступы строчным элементам (таким как a, span), нужно сделать их блочными. Для этого в стилях, задайте им правило display: block;

Для тех, кто не знаком с английским, сразу разберемся с переводом названий сторон.

  • Top — верхний отступ
  • Right — Правый отступ
  • Bottom — Нижний отступ
  • Left — Левый отступ

Внутренние отступы (padding)

И так, начнем с внутренних отступов, их еще называют и поля. Как вы уже поняли из выше представленной структуры блочного блока, внутренние отступы задаются с помощью правил padding-top, padding-right, padding-bottom и padding-left. То или иное правило используется в зависимости, от какой стороны хотите задать отступ.

Для примера, зададим внутренний левый отступ, в размере 50px, для блока div, внутри которого есть некий контент.

Html код:

<div>
    Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.
</div>

CSS код:

div{
    padding-left: 50px;
    width: 200px;
    border: 1px solid #000;
}

Смотрим на результат:

padding-left у блока div

Внутренние отступы влияют на ширину и высоту блока в целом.

Общая ширина блока формируется за счет контента, за счет внутренних отступов и за счет ширины границы. Для того чтобы Вам наглядно это демонстрировать, откроем заново предыдущий пример в браузере ( я пользуюсь браузером mozilla firefox), нажимаем на правый клик мыши по блоку и выбираем пункт Inspect Element (Q). Если Вы пользуйтесь браузером Chrome то также нажмите на правый клик мыши по блоку и выберите последний пункт Inspect (Ctrl + shift + i).

Общая ширина блока div

Как видно из скриншота, ширина контента равна 200px, это та ширина, которую мы задали в стилях, через свойство width. Левый отступ равен 50px и толщина рамки вокруг блока равна одному пикселю.

Если посчитать то получается так:
200px (контент) + 50px(padding-left) + 1px(левая рамка) + 1px(правая рамка) = 252px (общая ширина блока)

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

А вертикальные отступы действуют на высоту блока. Аналогично, как и ширина, высота считается почти по той же формуле: Высота контента + внутренние отступы (верхний и нижний) + толщина верхней и нижней рамки.

Внешние отступы (margin)

Аналогично, как и для внутренних отступов, внешние отступы задаются с помощью правил margin-top, margin-right, margin-bottom, margin-left. То или иное правило также используется в зависимости, от какой стороны хотите задать отступ.

Как я уже показал выше, внешние отступы формируются за предела рамки текущего блока, до рамки родительского блока. Для примера, возьмем уже созданный нами блок div и зададим ему верхний внешний отступ в размере 100px. Для этого в его свойствах добавим правило margin-top: 100px;.

div{
    padding-left: 50px;
    width: 200px;
    border: 1px solid #000;
    margin-top: 100px;
}

Смотрим в браузере на результат:

верхний отступ (margin-top) для блока div

Также можно задать и отрицательный отступ, только в этом случае результат будет другим. То есть если задать такой отступ блоку div то он выйдет за предела рамки своего родительского блока на то расстояние которая равно значение отрицательного отступа. Например, если блоку div задать margin-top: -100px; то он выйдет за пределом body на 100px.

Вот результат отрицательного отступа:

Отрицательный margin

Более подробно об отрицательном отступе Вы можете прочитать в этой статье Отрицательные значения внешних полей в CSS

Для внутренних отступов (padding) отрицательное значение не имеет никакого смысла.

Сокращенные записи margin и padding

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

Перейдем к делу. Допустим нужно задать какому-то блоку верхний отступ в 10px, правый отступ в 30px, нижний отступ 15px и левый отступ 50px. Для того чтобы не писать отдельное правило для каждой стороны, таким образом:

div{
    margin-top: 10px;
    margin-right: 30px;
    margin-bottom: 15px;
    margin-left: 50px;
}

Лучше воспользоваться сокращенным правилом и написать вот так:

div{
    margin: 10px 30px 15px 50px;
}

Результат в браузере будет тот же, но CSS код будет более оптимизированным.

Значения задаются поочередно по часовой стрелке для каждой стороны. Сначала для верхней стороны (top), потом для правой(right), для нижней(bottom) и для левой(left).

Аналогично задается и для внутренних отступов.

Еще пару вариантов сокращения свойств margin и padding

Для того чтобы задать одинаковый отступ, к примеру 10px, сразу всем сторонам лучше всего написать так:

div{
    padding: 10px;
}

Если вы хотите задать одинаковые значения для верхней и нижней стороны, а также другое значение, которое будет одинаковым для левой и правой стороны, то напишите так:

div{
    padding: 20px 15px;
}

С начало задается значение для вертикальных сторон (вверх и вниз) потом для горизонтальных сторон (влево и вправо).

Таким образом, можно выровнять автоматически блок div по центру окна браузера. Для этого, этому блоку задаем такое правило:

div{
    width: 500px;
    margin: 0 auto;
}

Сверху и снизу отступы будут нулевыми, а слева и справа будут подставляться автоматически.
Ширину естественно можно изменить, главное чтобы она была указана.

Как выровнять блок по центру другим способом (более сложным) вы можете прочитать в этой статье Выравнивание сайта по центру экрана

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

div{
    margin: 15px 43px 0;
}

Сначала задается верхний отступ (в примере 15px) потом задаем одинаковое значения для левого и правого отступа (в примере 43px) и третье значение отвечает за нижний отступ.

Вот и все что я хотел Вам сказать про внутренние (padding) и внешние (margin) отступы в CSS. Теперь Вы знаете, как их использовать при верстке или доработки сайта. Желаю Вам успехов!

Похожие статьи:

Понравилась статья?

Тогда поделитесь ею с друзьями и подпишитесь на новые интересные статьи.

Поделиться с друзьями:

Подписаться на новые статьи:

Delivered by FeedBurner

Поддержите пожалуйста мой проект!

%next_previous_article%

Если у Вас есть какие-то вопросы или предложения, то можете писать их в комментариях или мне на почту sergiu1607@gmail.com. И если Вы заметили какую-то ошибку в статье, то прошу Вас, сообщите мне об этом, и в ближайшее время я всё исправлю.

Добавляйтесь ко мне в друзья в:

Добавляйтесь в мои группы:

Подпишитесь на мои каналы:

Автор статьи: Мунтян Сергей

Копирование материалов с сайта sozdatisite.ru ЗАПРЕЩЕНО!!!

Дата добавления: %date%