JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/ScrollMagic/2.0.5/ScrollMagic.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/ScrollMagic/2.0.5/plugins/debug.addIndicators.min.js"></script>
<div class="block">
<h1>Hello world!</h1>
</div>
<div class="block">
<h1>Hello world!</h1>
</div>
<div class="block">
<h1>Hello world!</h1>
</div>
<div class="block">
<h1>Hello world!</h1>
</div>
<div class="viewer-wrap">
<section class="scene section" id="sticky">
<div class="viewer"></div>
</section>
</div>
<div class="block">
<h1>Hello world!</h1>
</div>
<div class="block">
<h1>Hello world!</h1>
</div>
CSS
html,
body {
height: 100%;
margin: 0;
padding: 0;
}
body {
width: 100%;
}
.block {
width: 100%;
height: 500px;
background: tomato;
}
.header {
color: white;
}
.section {
background: #FFFFFF;
color: black;
}
.scene {
height: 350px;
width: 100%;
background: #EAEAEA;
}
h1 {
font-size: 40px;
color: #fff;
margin: 0;
}
.center {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-webkit-justify-content: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-box-align: center;
-webkit-align-items: center;
-ms-flex-align: center;
align-items: center;
height: 100%;
}
.viewer-wrap {
background: tomato;
}
.viewer {
height: 100%;
margin-left: auto;
margin-right: auto;
width: 100%;
background-image: url(http://mav.klendev.ru/5278/static/km/ComplexFoodtracks/css/base/Baw-01.png);
background-repeat: no-repeat;
background-position: 50% 0;
background-size: 100% 350px;
}
.viewer.frame1 {
background-image: url(http://mav.klendev.ru/5278/static/km/ComplexFoodtracks/css/base/Baw-01.png);
}
.viewer.frame2 {
background-image: url(http://mav.klendev.ru/5278/static/km/ComplexFoodtracks/css/base/Baw-01.png);
}
.viewer.frame3 {
background-image: url(http://mav.klendev.ru/5278/static/km/ComplexFoodtracks/css/base/Baw-02.png);
}
.viewer.frame4 {
background-image: url(http://mav.klendev.ru/5278/static/km/ComplexFoodtracks/css/base/Baw-02.png);
}
.viewer.frame5 {
background-image: url(http://mav.klendev.ru/5278/static/km/ComplexFoodtracks/css/base/Baw-02.png);
}
.viewer.frame6 {
background-image: url(http://mav.klendev.ru/5278/static/km/ComplexFoodtracks/css/base/Baw-03.png);
}
.viewer.frame7 {
background-image: url(http://mav.klendev.ru/5278/static/km/ComplexFoodtracks/css/base/Baw-03.png);
}
.viewer.frame8 {
background-image:...
JavaScript
var viewer = document.querySelector('.viewer'),
frame_count = 9,
offset_value = 100;
// init controller
var controller = new ScrollMagic.Controller({
globalSceneOptions: {
triggerHook: 0,
reverse: true
}
});
// build pinned scene
new ScrollMagic.Scene({
triggerElement: '#sticky',
duration: frame_count * offset_value,
reverse: true
})
.setPin('#sticky')
//.addIndicators()
.addTo(controller);
// build step frame scene
for (var i = 1, l = frame_count; i <= l; i++) {
new ScrollMagic.Scene({
triggerElement: '#sticky',
offset: i * offset_value
})
.setClassToggle(viewer, 'frame' + i)
//.addIndicators()
.addTo(controller);
}