Я пытался создать эффект параллакса, используя чистый CSS на основе Google Performant Parallaxing . Это предполагает использование perspective
, translateZ
и scale
. Это также включает использование множества «слоев» изображений PNG, наложенных друг на друга. Однако на этих слоях возникла проблема.
В этом примере показан только один слой изображения PNG, потому что этого достаточно, чтобы показать проблему. Вот изображение проблемы (пробел в левой части div).
Проблема возникает в следующей ситуации: вертикальная полоса прокрутки body
видна, горизонтальная полоса прокрутки body
скрыта из-за переполнения, а для изображения с параллаксом установлена ширина 100%. Как ни странно, эту проблему можно решить, просто установив ширину изображения 100vw вместо 100%. Вот код, показывающий проблему.
html, body {
margin: 0;
width: 100%;
height: 100vh;
overflow-x: hidden;
}
body {
perspective: 100px;
}
.background {
width: 100%;
height: 101vh;
background: url('https://i.pinimg.com/originals/13/17/ba/1317ba3fb0901d7b6be59f9c21d39d12.jpg');
transform: translateZ(-300px) scale(4);
}
<div class="background"></div>
Почему появляется пробел на изображении, если его ширина составляет 100%, а не 100vw?