#javascript #scroll #horizontal-scrolling #smooth-scrolling #locomotive-scroll
Вопрос:
Я использую Локомотив-Скролл (https://locomotivemtl.github.io/locomotive-scroll/) для плавной и горизонтальной прокрутки это легко и хорошо работает. Тем не менее, я хотел бы также интегрировать раздел вертикальной прокрутки.
Я перепробовал много вещей, ни одна из которых не работает полностью. Я сталкиваюсь в основном с тремя проблемами:
- Я не понимаю, почему мое решение в определенной степени работает, и я не могу найти ни одного учебника по локомотивной прокрутке, который шел бы дальше добавления свойства прокрутки данных
- Я не нашел способа изменить направление вертикальной прокрутки вниз на вверх
- Если я изменю размер окна, прокрутка локомотива затормозится и может быть восстановлена только перезагрузкой
Мое текущее решение (я бы считал себя новичком):
const scroller = new LocomotiveScroll({
el: document.querySelector('#scrollable'),
smooth: true,
direction: 'horizontal'
});
* {
box-sizing: border-box;
margin: 0;
padding: 0;
font-family: 'Helvetica Neue', sans-serif;
font-size: 2vh;
}
.section {
height: 100vh;
}
#section-one {
width: 100vw;
}
#section-two {
width: 400vh;
background-color: blanchedalmond;
}
#section-three {
width: 100vw;
}
.heading {
font-size: 5rem;
font-weight: 500;
text-transform: uppercase;
}
.home__statement {
width: 100vw;
position: relative;
}
.heading.one {
position: absolute;
left: 10vw;
top: 25vh;
}
.heading.two {
position: absolute;
left: 10vw;
top: 35vh;
}
.heading.three {
position: absolute;
left: 10vw;
top: 45vh;
}
#sticky-container{
width: 100vw;
height: 100vh;
background-color: cadetblue;
}
.vertical-canvas {
position: absolute;
top: -300vh;
height: 400vh;
width: 100vw;
background-image: linear-gradient(red, yellow);
}
.example-1 {
height: 50%;
width: 100vw;
background-color:rgba(175, 18, 18, 0.3);;
}
.elem {
width: 100px;
height: 100px;
background-color: cornsilk;
}
.example-2 {
height: 25%;
width: 100vw;
background-color: rgba(46, 165, 46, 0.3);
}
.example-3 {
height: 25%;
width: 100vw;
background-color: rgba(75, 92, 168, 0.3);
}
<div id="scrollable" data-scroll-container>
<section class="section" id="section-one" data-scroll-section>
<div class="home__statement">
<span class="heading one" id="statement__line-one">Some text blabla</span>
<div>
</section>
<section class="section" id="section-two" data-scroll-section>
<div id="sticky-container"
data-scroll
data-scroll-sticky
data-scroll-target="#section-two"
data-scroll-speed="-1">
<div class="vertical-canvas"
data-scroll
data-scroll-sticky
data-scroll-target="#section-two"
data-scroll-direction="vertical">
<div class="example-1" id="ex1">
<div class="elem"></div>
</div>
<div class="example-2"></div>
<div class="example-3"></div>
</div>
<div>
</section>
<section class="section" id="section-three" data-scroll-section>
<div class="home__statement">
<span class="heading one" id="statement__line-one">Some text blabla</span>
<div>
</section>
Ответ №1:
Вы не можете инициализировать как горизонтальную, так и вертикальную прокрутку в одном и том же [контейнере для прокрутки данных]
Для того, чего вы хотите достичь, вы можете использовать gsap scrollTrigger, но вы должны реализовать scrollTrigger с помощью locmotive
Чем вы сможете добиться любого эффекта, который захотите