Это должно дать вам одно изображение, отображаемое в полном размере браузера, даже если у вас есть <!DOCTYPE>
(который я рекомендую включить do , так как это лучше практиковать):
html, body {
width: 100%; height: 100%;
margin: 0; padding: 0;
}
body {
image-rendering: pixelated;
background-image: url("https://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Square_definition.svg/178px-Square_definition.svg.png");
background-size: contain;
background-position: center;
background-repeat: no-repeat;
}
Обратите внимание, что важно убедиться, что элементы html
и body
имеют размер 100% (и удалить все поля по умолчанию + отступы, добавленные браузером).
Примечание. Я использовал случайный пример изображения.
РЕДАКТИРОВАТЬ: Д. Пардал справедливо указал, что этот ответ не объясняет наблюдаемую разницу.
Большая часть объяснений исходит из факта что:
- Добавление
<!DOCTYPE html>
переводит документ в «стандартный режим» - «Стандартный режим» диктует, что высота элемента
body
по умолчанию равна минимальному размеру, необходимому для его содержания. content
Оригинальная версия без <!DOCTYPE html>
имеет <body>
, который заполняет страницу. Применяя фоновое изображение к этому <body>
, с background-size: 100% 100%
заполняет всю страницу. Добавление DOCTYPE
уменьшает высоту body
.
"Почему изображение вообще видно, если его высота равна высоте <body>
, равной 0?"
Поскольку тело имеет поля по умолчанию, применяемые браузером, и они учитываются по высоте фонового изображения.
"Почему изображение не повторяется в первое место? "
Это повторялось! Первое повторение, однако, было достаточно большим, чтобы заполнить весь родитель. Это можно проверить, удалив DOCTYPE
и уменьшив размер изображения до background-size: 20% 20%;
.