Как убрать верхний отступ в css

Рассмотрим практический пример
Итак, для наглядности и лучшего восприятия проблемы предлагаю все посмотреть и, так сказать, «пощупать» на практике. Берем любое изображение и одеваем его в div. Ниже вы видите пример кода: HTML
div> img src="img.png" width="250px" alt=""/> div>
При оформлении стилей зальем внутренний фон блока красным цветом. При нормальных условиях картинка полностью займет все место внутри блока и перекроет красный фон. Прописываем код для оформления CSS
div display:block; width:250px; margin:0px auto;/*Центруем блок*/ background:#ff0000;/*Зальем блок красным цветом, чтобы визуализировать отступ*/ > body background:#eee; >

В результате чего браузер нам покажет следующую картину Судя по красной полосе в нижней части контейнера можно констатировать, что непонятный отступ имеет место. Воспользовавшись панелью веб-мастера в браузере, стало известно, что отступ составил 5,511 пикселей. Очень забавляет тот факт, что во всех популярных браузерах этот баг присутствует, а вот всеми любимый Internet Explowerd в этом случае отрабатывает безупречно.
Причина появления отступа
Как человек с высшим техническим образованием смею Вас заверить, что ничего не происходит просто так, у всего есть причины. Разобравшись в этом вопросе я еще раз в этом убедился. Весь конфуз заключается в стандартных свойствах элементов. По умолчанию тег img имеет свойства строчного элемента, что в свою очередь означает, что элемент будет выравниваться по базовой линии текста. Эта линия располагается чуть выше нижнего края блока, так как для текста существует обязательный запас- место под «хвосты» букв.
Решение проблемы
Для исправления этого мелкого недочета достаточно присвоить изображению свойства блочного элемента. С этим нам поможет свойство display, прописываем картинке display: block; и избавляемся от ненужных проблем. Также можно подключить вертикальное выравнивание через свойство vertical-align. Это тоже поможет избавиться от нежелательного отступа.
В каких браузерах работает?
| 6.0+ | 5.0+ | 9.5+ | 4.0+ | 3.0+ | — | — |
Отступы в CSS (margin и padding)
В этой статье пойдёт речь о двух CSS свойствах: margin и padding. Оба они задают отступ. Но в одном случае это внешний отступ от других элементов, а во втором — внутренний отступ от содержимого. Эти свойства являются одними из наиболее часто используемых при создании сайтов. Разберём каждое по отдельности.
Внешний отступ (margin)
Для демонстрации отступа нам потребуется два блока div. Создадим их:
Как можно догадаться, внешний блок ограничивает ширину внутреннего. А внутренний ограничивает высоту внешнего. Чтобы различать блоки, подкрасим их рамки: внутренний будет красным, внешний синим. Получится такой результат:
Как видно из примера, рамки совпадают, потому что нет отступов. Теперь сделаем внешний отступ в 10px для внутреннего, красного, элемента так:
На странице браузера получится такой результат:
- margin-left — отступ слева
- margin-right — отступ справа
- margin-top — отступ сверху
- margin-bottom — отступ снизу
Получится такой результат:
Как и с другими универсальными свойствами, которым можно передавать сразу 4 значения для 4 сторон (или углов), свойству margin можно передать 2 значения. К примеру так: «margin: 10px 20px«. Тогда верхний и нижний отступ будут равны 10px, а правый и левый будут равны 20px. А если передать 3 значения «margin: 10px 20px 30px«, то соответственно верхний отступ получится 10px, правый и левый — 20px, а нижний 20px.
Свойство margin может принимать ещё и значние «auto«. Это значение центрирует элемент по горизонтали.
С помощью значения auto у margin можно центрировать только блочные элементы. Для строчных используйте text-align: center.
Попробуем продемонстрировать эту центровку:
В результате внутренний элемент будет иметь отступ сверху и снизу в 10px и находиться по центру родительского:
Этот приём центрирования используется практически на всех сайтах, на которых контент расположен в центре экрана.
Внутренний отступ (padding)
Внутренний отступ можно сделать через CSS свойство padding. Оно принимает значения аналогично свойству margin. Можно указать от одного до четырёх значений, чтобы задать разные отступы для разных сторон. Для демонстрации результатов работы этого свойства используем текст с выравниванием во всю ширину контейнера (text-align: justify;)
Тише, мыши, кот на крыше, а котята ещё выше. Кот пошёл за молоком, а котята кувырком. Кот пришёл без молока, а котята ха-ха-ха.
Результат будет таким:
Тише, мыши, кот на крыше, а котята ещё выше. Кот пошёл за молоком, а котята кувырком. Кот пришёл без молока, а котята ха-ха-ха.
- padding-left — отступ слева
- padding-right — отступ справа
- padding-top — отступ сверху
- padding-bottom — отступ снизу
Проблема расширения (box-sizing)
У свойства padding существует проблема. Это свойство расширяет элемент на величину отступа. Для наглядности создадим два одинаковых по ширине элемента «width: 200px;«, но у одного установим свойство padding:
Без отступа С отступом
В браузере получится такой результат:
Без отступаС отступом
Оба элемента имеют одинаковую ширину «width: 200px;«. Но нижний на 60 пикселей шире из-за того, что слева и справа есть отступ padding (по 30 px каждый), который расширяет этот элемент. Чтобы такого не происходило, необходимо задать элементу свойство box-sizing в значении border-box (по умолчанию оно в значении content-box):
Без отступа С отступом
Тогда вместо того, чтобы раздвигать границы элемента, будет сужаться область внутри него.
Без отступаС отступом
Расширение элементов из-за внутреннего отступа padding иногда сильно мешает. Особенно при создании мобильных версий сайтов. Из-за них чаще всего на мобильных устройствах появляется горизонтальная прокрутка. Поэтому заранее убедитесь, что поставили свойство box-sizing в значение border-box для самых больших элементов на странице .
Как убрать отступ сверху css
В CSS отступ сверху можно сделать с помощью следующих свойств:
- padding-top — установка внутреннего отступа
- margin-top — установка внешнего отступа
Основное отличие в том, в какую сторону направлен отступ. При использовании padding отступ будет внутри блока, следовательно, контент в блоке будет сдвинут на то значение, которое указано в свойстве. При использовании margin отступ создаётся от всего блока. Оба свойства можно использовать одновременно, создавая и внутренний и внешний отступ для элемента
.content margin-top: 20px; >
Чтобы сбросить отступ, необходимо указать значение 0 нужному типу отступа:
.content padding-top: 0; >
Как убрать системные отступы?
https://jsfiddle.net/jndwsvyp/1/
Нигде не прописывал отступы, а белые полосы с боков и сверху есть, как это исправить и почему это возникло?
P.S. Предложения из серии:
margin: -8px;
не рассматриваются, потому что это колхоз.
- Вопрос задан более трёх лет назад
- 5272 просмотра
3 комментария
Простой 3 комментария

Rustam Bainazarov @SmthTo Куратор тега Вёрстка
Для этого есть любой reset.css.

SmthTo, ты принципиально ответы не пишешь в ответы, а только в комментарии?)

Rustam Bainazarov @SmthTo Куратор тега Вёрстка
Сергей Горячев, отвечу мемом: прост)))1)
Решения вопроса 1
Евгений Акулинин @forkhammer
Fullstack-разработчик (Django, Angular)
html, body
А вообще подключи reset.css
Ответ написан более трёх лет назад
Нравится 3 2 комментария
greg_13 @greg_13 Автор вопроса
Так, это сработало, но хотелось бы всё же уточнить, а как вообще эта проблема возникает?
И что за «reset.css»?
Евгений Акулинин @forkhammer
Отступы создает стандартный CSS, встроенный в браузер. У каждого браузера свой набор стилей по-умолчанию. Чтобы привести все к одному виду используют наборы стилей, например reset.css https://meyerweb.com/eric/tools/css/reset/
Ответы на вопрос 2

Марти Макфлай @alex_shevch
Frontend Developer
Каждый браузер устанавливает свои значения стилей по умолчанию для различных HTML-элементов. С помощью CSS Reset мы можем нивелировать эту разницу для обеспечения кроссбраузерности стилей.
https://marksheet.io/css/reset.css
Просто подключаешь эти стили для каждого нового проекта.