Представьте, вы хотите повесить на стене картинку, которую вставили в рамочку. Расстояние по вертикали и горизонтали от края картинки до рамки - это padding, а расстояние от рамки до потолка, пола, левой и правой стены, или же расстояние до другой картинки - это margin, сама же рамка - это border.
margin
Устанавливает величину отступа от каждого края элемента. Отступом является расстояние по вертикали, или горизонтали, от внешнего края рамки текущего элемента до внутренней границы родительского элемента, или до внешнего края элемента, который расположен рядом с текущим элементом.
margin-top - свойство, создающее поле сверху.
margin-right - свойство, создающее поле справа.
margin-bottom - свойство, создающее поле снизу.
margin-left - свойство, создающее поле слева.
Единицами измерения могут быть пиксели (px), сантиметры (cm), процентное соотношение (%), и т.д.
Записывается свойство так: margin:10px 5px 15px 20px;
Где 10px - поле сверху, 5px - поле справа, 15px - поле снизу, 20px - поле слева.
Запись начинается с верхнего поля, и по часовой стрелке.
Если значения каких-то полей совпадают, то применяется сокращенная запись:
margin:10px 5px 15px 20px; Верхнее поле - 10px
Правое поле - 5px
Нижнее поле - 15px
Левое поле - 20px
margin:10px 5px 15px; Верхнее поле - 10px
Правое и левое поле - 5px
Нижнее поле - 15px
margin:10px 5px; Верхнее и нижнее поле - 10px
Правое и левое поле - 5px
margin:10px; Все 4 поля по 10px
Если же вы хотите изменить какое-то одно значение, например отступ слева, то, пишем так:
margin-left:10px;
Если вы хотите "вылезть" за границу блока, то применяются отрицательные значения:
margin-left:-10px;
Объединение вертикальных полей. Схлопывание.
Если значения каких-то полей совпадают, то применяется сокращенная запись:
margin:10px 5px 15px 20px; Верхнее поле - 10px
Правое поле - 5px
Нижнее поле - 15px
Левое поле - 20px
margin:10px 5px 15px; Верхнее поле - 10px
Правое и левое поле - 5px
Нижнее поле - 15px
margin:10px 5px; Верхнее и нижнее поле - 10px
Правое и левое поле - 5px
margin:10px; Все 4 поля по 10px
Если же вы хотите изменить какое-то одно значение, например отступ слева, то, пишем так:
margin-left:10px;
Если вы хотите "вылезть" за границу блока, то применяются отрицательные значения:
margin-left:-10px;
Объединение вертикальных полей. Схлопывание.
Представьте ситуацию: два блочных элемента находятся друг над другом и им заданы поля margin. Для верхнего блока установлено значение margin: 60px, а для нижнего – margin: 30px. Логично было бы предположить, что два граничащих поля двух элементов просто соприкоснутся и в итоге промежуток между блоками будет равен 90 пикселям.
Однако дела обстоят по-другому. На самом деле в такой ситуации проявляется эффект, который называют схлопыванием, когда из двух примыкающих полей элементов выбирается наибольший по размеру. В нашем примере итоговый промежуток между элементами будет равен 60 пикселям.
Схлопывание margin работает только для верхних и нижних полей элементов и не относится к полям с правой и левой сторон. Окончательная величина промежутка высчитывается в разных ситуациях по-разному:
- Когда оба значения margin положительные, итоговый размер поля будет равен бóльшему значению.
- Если одно из значений является отрицательным, то для вычисления размера поля нужно получить сумму значений. Например, при значениях 20px и -18px размер поля будет равен: 20 + (-18) = 20 — 18 = 2 пикселя.
- Если оба значения отрицательные, сравниваются модули этих чисел и выбирается число, бóльшее по модулю (следовательно, меньшее из отрицательных чисел). Пример: необходимо сравнить значения полей -6px и -8px. Модули сравниваемых чисел равны 6 и 8 соответственно. Отсюда следует, что 6 < 8, то есть, -6 > -8. Итоговый размер поля равен -8 пикселей.
- В случае, когда значения указаны в разных единицах CSS, они приводятся к одной, после чего сравниваются и выбирается бóльшее значение.
- Размер margin для дочерних элементов определяется еще более интересно: если у потомка поле margin больше, чем у родителя, то приоритет отдается ему. В этом случае размеры верхнего и нижнего полей родителя станут такими, как задано у потомка. При этом расстояния между родителем и потомком не будет.
padding
Устанавливает расстояние, или внутренний отступ, между внутренним краем рамки элемента и его содержимым. Обратите внимание, что добавление внутренних полей будет влиять на общий размер элемента.
padding-top - свойство, создающие поля сверху.
padding-right - свойство, создающие поля справа.
padding-bottom - свойство, создающие поля снизу.
padding-left - свойство, создающие поля слева.
Единицами измерения могут быть пиксели (px), сантиметры (cm), процентное соотношение (%), и т.д.
Записывается свойство так: padding:10px 5px 15px 20px;
Где 10px - поле сверху, 5px - поле справа, 15px - поле снизу, 20px - поле слева.
Запись начинается с верхнего поля, и по часовой стрелке.
Записывается свойство так: padding:10px 5px 15px 20px;
Где 10px - поле сверху, 5px - поле справа, 15px - поле снизу, 20px - поле слева.
Запись начинается с верхнего поля, и по часовой стрелке.
Если значения каких-то полей совпадают, то применяется сокращенная запись:
padding:10px 5px 15px 20px; Верхнее поле - 10px
Правое поле - 5px
Нижнее поле - 15px
Левое поле - 20px
padding:10px 5px 15px; Верхнее поле - 10px
Правое и левое поле - 5px
Нижнее поле - 15px
padding:10px 5px; Верхнее и нижнее поле - 10px
Правое и левое поле - 5px
padding:10px; Все 4 поля по 10px
Если значения каких-то полей совпадают, то применяется сокращенная запись:
padding:10px 5px 15px 20px; Верхнее поле - 10px
Правое поле - 5px
Нижнее поле - 15px
Левое поле - 20px
padding:10px 5px 15px; Верхнее поле - 10px
Правое и левое поле - 5px
Нижнее поле - 15px
padding:10px 5px; Верхнее и нижнее поле - 10px
Правое и левое поле - 5px
padding:10px; Все 4 поля по 10px