Как реализовать паралакс?
как тут https://toccata.com.ua/
.image {
background-image: url(http://toccata.com.ua/uploads/main-bg.jpg);
background-size: cover;
background-attachment: scroll;
background-position: top center;
padding: 200px 0;
}
body {
margin: 0;
padding: 0;
width: 100%;
min-height: 100vh;
overflow-x: hidden;
color: #333333;
background-color: #fff;
line-height: 1.2;
font-weight: normal;
font-style: normal;
}
.image h1, .image p {
color: #fff;
}
<section class="image">
<div class="container">
<h1>title title</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Doloremque in provident enim placeat tenetur repudiandae illum consequatur quaerat adipisci autem! Recusandae amet inventore aut modi, itaque eaque incidunt totam nemo.</p>
</div>
</section>
<section class="content">
<div class="container">
<h1>title title</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Doloremque in provident enim placeat tenetur repudiandae illum consequatur quaerat adipisci autem! Recusandae amet inventore aut modi, itaque eaque incidunt totam nemo.</p>
</div>
</section>
<section class="content">
<div class="container">
<h1>title title</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Doloremque in provident enim placeat tenetur repudiandae illum consequatur quaerat adipisci autem! Recusandae amet inventore aut modi, itaque eaque incidunt totam nemo.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Doloremque in provident enim placeat tenetur repudiandae illum consequatur quaerat adipisci autem! Recusandae amet inventore aut modi, itaque eaque incidunt totam nemo.</p>
</div>
</section>
Ответы (1 шт):
Автор решения: DiD
→ Ссылка
Ох, ну сколько можно одно и тоже спрашивать...
В общем, как-то так...
window.addEventListener('scroll', (e) => {
const { top } = document.body.getBoundingClientRect();
bg.style.top = (top / 3) + 'px';
});
#bg { background-size: cover;
background-attachment: scroll;
background-position: top center;
background-image: url(http://toccata.com.ua/uploads/main-bg.jpg);
height: 100vh; width: 100vw; top: 0;
position: fixed; z-index: -2;
/* элемент на заднем плане под body */}
section { background: #fff; }
.container { padding: 0 1rem 0 1rem; }
.image { background: transparent; }
/* в .image больше нет картинки, но сам блок нужен как
распорка, занимающая место. */
.image .container { padding: 30vh 1rem 0 1rem;
text-shadow: 0 0 3px #000, /* тут просто усилил тень */
0 0 3px #000,
0 0 3px #000,
0 0 3px #000; }
/* html { scroll-snap-type: y mandatory; } */
body { margin: 0; padding: 0;
width: 100%; min-height: 100vh;
overflow-x: hidden; color: #333333;
background-color: transparent;
line-height: 1.2; font-weight: normal;
font-style: normal;
/* <body> должен быть прозрачным */ }
h1 { padding: 0; margin: 0;
background: #fff; color: #000;
position: sticky; top: 0;
/* Заголовки сделал прилипающими */ }
.image p { color: #fff; }
section { height: 100vh;
/* Высоту секции поставил по высоте окна, можно поменять */
/* scroll-snap-align: start;
Это принудительно останавливает скрол на нужных местах */}
<section class="image">
<h1>title1</h1>
<div class="container">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Doloremque in provident enim placeat tenetur repudiandae illum consequatur quaerat adipisci autem! Recusandae amet inventore aut modi, itaque eaque incidunt totam nemo.</p>
</div>
</section>
<div id="bg"></div>
<section class="content">
<h1>title2</h1>
<div class="container">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Doloremque in provident enim placeat tenetur repudiandae illum consequatur quaerat adipisci autem! Recusandae amet inventore aut modi, itaque eaque incidunt totam nemo.</p>
</div>
</section>
<section class="content">
<h1>title3</h1>
<div class="container">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Doloremque in provident enim placeat tenetur repudiandae illum consequatur quaerat adipisci autem! Recusandae amet inventore aut modi, itaque eaque incidunt totam nemo.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Doloremque in provident enim placeat tenetur repudiandae illum consequatur quaerat adipisci autem! Recusandae amet inventore aut modi, itaque eaque incidunt totam nemo.</p>
</div>
</section>