Я думаю, что другие комментаторы игнорируют ваш запрос о помощи, чтобы не «обрезать» изображение, когда они продолжают предлагать background-size: cover
.
Вот то, что я собрал, ваши требования:
- Изображение, которое будет фоном, позади содержания вашего сайта.
- Фоновое изображение имеет определенное соотношение сторон и не должно быть обрезано
- Если окно браузера не соответствует формату изображения, оно должно позволять прокрутку по вертикали, но всегда должно соответствовать ширине окна.
Решение только для css ...
body {
position: relative;
margin: 0;
}
body::before {
content: '';
display: block;
position: absolute;
top: 0;
left: 0;
right: 0;
z-index: -1;
height: 0;
/* height / width = ratio% */
/* 2853px / 869px = 328.3084% */
padding-bottom: 328.3084%;
padding-bottom: calc(2853 / 869 * 100%);
background: url('//placekitten.com/869/2853') center top / 100% auto no-repeat;
}
Замените URL-адрес URL-адресом вашего изображения, и, если размеры пикселя изображения изменятся, обновите их, как я прокомментировал, как padding-bottom
должен быть рассчитан.
Это создает отдельный фоновый элемент внутри тела сайта и, тем не менее, позволяет вам иметь любой контент, который вы хотите внутри своего сайта. Но имейте в виду, что если вы находитесь на очень маленьком экране, скажем, 320px / 480px, и содержание веб-сайтов становится очень высоким из-за узкой ширины экрана, это фоновое изображение можно прокручивать и передавать для учета содержимого. Это не нарушит этот код, но я бы просто предложил добавить цвет фона или текстуру в ваш HTML-элемент, который будет показан под изображением в этом случае. Удачи.