skrollr 关键帧未正确执行
skrollr keyframes not executing properly
和 skrollr 玩得开心。据我了解,一旦您传递了您设置为数据属性的任何像素,无论您在其中拥有什么 css 代码,都应该 运行。我在这里错过了什么?我只是想 show/hide 一些段落,因为它们到达了开始和结束像素,但它们出现在标记之前并且之后不会自行消失。例如,为什么 p2 出现在第 50 帧之前?为什么它不消失?
http://codepen.io/anon/pen/rLVGjw
var s = skrollr.init({
forceHeight: true,
render: function(data){
document.querySelector(".whereami").innerHTML = data.curTop;
}
});
body {
background: #000;
}
p {
position: absolute;
top: 200px;
left: 200px;
}
<script src="
https://cdnjs.cloudflare.com/ajax/libs/skrollr/0.6.30/skrollr.min.js"></script>
<div class="whereami" style="position: fixed; top: 0; left: 0; color: #fff">0</div>
<main>
<p data-0="opacity: 1" data-50="opacity: 0">p1</p>
<p data-0="opacity: 0" data-50="opacity: 1" data-100="opacity: 0">p2</p>
<p data-0="opacity: 0" data-150="opacity: 1" data-200="opacity: 0">p3</p>
<p data-0="opacity: 0" data-200="opacity: 1" data-250="opacity: 0">p4</p>
<p data-0="opacity: 0" data-250="opacity: 1" data-300="opacity: 0">p5</p>
<br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br />
p2 显示在 50px 滚动之前,因为它在 "data-0" 上的不透明度为 0,然后在 "data-50" 上的不透明度为 1,这意味着在该 50px 滚动中不透明度将从 0 变为 1。这意味着它将与 p1 重叠,p1 的不透明度在相同的 50 px 中从 1 变为 0。
你需要有这样的东西:
<p data-0="opacity: 1" data-50="opacity: 0">p1</p>
<p data-50="opacity: 0" data-100="opacity: 1" data-150="opacity: 0">p2</p>
想法是不要让同一滚动值中的段落重叠。您在 50px 处完成 0 到 50px 之间的过渡,然后开始将新段落从 50px 过渡到您认为需要多少,其余元素依此类推。
我在你的 codepen 中尝试了以下代码的前 3 段,动画效果如你所愿:
<p data-0="opacity: 1" data-50="opacity: 0">p1</p>
<p data-50="opacity: 0" data-100="opacity: 1" data-150="opacity: 0">p2</p>
<p data-150="opacity: 0" data-200="opacity: 1" data-250="opacity: 0">p3</p>
和 skrollr 玩得开心。据我了解,一旦您传递了您设置为数据属性的任何像素,无论您在其中拥有什么 css 代码,都应该 运行。我在这里错过了什么?我只是想 show/hide 一些段落,因为它们到达了开始和结束像素,但它们出现在标记之前并且之后不会自行消失。例如,为什么 p2 出现在第 50 帧之前?为什么它不消失?
http://codepen.io/anon/pen/rLVGjw
var s = skrollr.init({
forceHeight: true,
render: function(data){
document.querySelector(".whereami").innerHTML = data.curTop;
}
});
body {
background: #000;
}
p {
position: absolute;
top: 200px;
left: 200px;
}
<script src="
https://cdnjs.cloudflare.com/ajax/libs/skrollr/0.6.30/skrollr.min.js"></script>
<div class="whereami" style="position: fixed; top: 0; left: 0; color: #fff">0</div>
<main>
<p data-0="opacity: 1" data-50="opacity: 0">p1</p>
<p data-0="opacity: 0" data-50="opacity: 1" data-100="opacity: 0">p2</p>
<p data-0="opacity: 0" data-150="opacity: 1" data-200="opacity: 0">p3</p>
<p data-0="opacity: 0" data-200="opacity: 1" data-250="opacity: 0">p4</p>
<p data-0="opacity: 0" data-250="opacity: 1" data-300="opacity: 0">p5</p>
<br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br />
p2 显示在 50px 滚动之前,因为它在 "data-0" 上的不透明度为 0,然后在 "data-50" 上的不透明度为 1,这意味着在该 50px 滚动中不透明度将从 0 变为 1。这意味着它将与 p1 重叠,p1 的不透明度在相同的 50 px 中从 1 变为 0。
你需要有这样的东西:
<p data-0="opacity: 1" data-50="opacity: 0">p1</p>
<p data-50="opacity: 0" data-100="opacity: 1" data-150="opacity: 0">p2</p>
想法是不要让同一滚动值中的段落重叠。您在 50px 处完成 0 到 50px 之间的过渡,然后开始将新段落从 50px 过渡到您认为需要多少,其余元素依此类推。
我在你的 codepen 中尝试了以下代码的前 3 段,动画效果如你所愿:
<p data-0="opacity: 1" data-50="opacity: 0">p1</p>
<p data-50="opacity: 0" data-100="opacity: 1" data-150="opacity: 0">p2</p>
<p data-150="opacity: 0" data-200="opacity: 1" data-250="opacity: 0">p3</p>