【问题标题】:Skrollr & relative mode fails to workSkrollr 和相关模式无法正常工作
【发布时间】:2013-08-13 09:01:09
【问题描述】:

我正在尝试使用 skrollr 库 (https://github.com/Prinzhorn/skrollr) 来创建我认为的一个简单的功能,这意味着当底部顶部属性被触发时(顶部距离底部视口上方 25 像素时) ) 不透明度将为 0,然后当用户向下滚动时,当元素的底部位于底部视口上方 25 像素时,不透明度将增加到 1。

但是,当我加载 html 文件时,它在控制台中声明所有元素要么是 skrollable-after 要么 skrollable-between,而后面的两个元素肯定不是这种情况(至少当视口模糊时后两个元素)。最后一个元素被声明为可滚动的,而实际上它远低于视口的底部。

我确实认为加载各种资产可能存在问题,但 s.refresh() 并没有改变任何东西(至少在我使用它的方式上)。

HTML如下,其中skrollr.js是Github上最新的源文件(0.6.11)。

任何指导将不胜感激。

<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="style.css">
<script type="text/javascript" src="skrollr.js"></script>
</head>
<body>
<div class="column"><p>Column 1</p>
</div>

<div class="column"><p>Column 2</p>

    <div class="imp-text-one" data--25-bottom-top="opacity: 0;" data--25-bottom-bottom="opacity: 1">This is important text</div>

    <div class="placeholder"></div>

    <div class="imp-text-two" data--25-bottom-top="opacity: 0;" data--25-bottom-bottom="opacity: 1">This is also important text</div>

    <div class="placeholder"></div>

    <div class="imp-text-three" data--25-bottom-top="opacity: 0;" data--25-bottom-bottom:"opacity: 1">
    This is VERY important text</div>

</div>

<script type="text/javascript">
   s = skrollr.init();
</script>
<script>
 window.onload = function(){
     s.refresh();
}
</script>
</body>
</html>

CSS如下:

.column {
width: 50%; 
float: left;
}

body {
margin: 0;
padding: 0;
}

.imp-text-one {
padding: 50px 10px 50px 10px;
border-style: solid;
}

.imp-text-two {
padding: 50px 10px 50px 10px;
border-style: solid;
}

.placeholder {
height: 400px;
}

.imp-text-three {
padding: 50px 10px 50px 10px;
border-style: solid;
}

【问题讨论】:

    标签: javascript html css scrollable


    【解决方案1】:

    这是data-[offset]-(viewport-anchor)-[element-anchor] 而不是data-[offset]-(element-anchor)-[viewport-anchor]。

    例如,您的第一个元素有两个关键帧都相对于视口底部。但它甚至从未接近底部!

    正确:

    <div class="imp-text-one" data--25-top-bottom="opacity: 0;" data--25-bottom-bottom="opacity: 1">This is important text</div>
    
    <div class="placeholder"></div>
    
    <div class="imp-text-two" data--25-top-bottom="opacity: 0;" data--25-bottom-bottom="opacity: 1">This is also important text</div>
    
    <div class="placeholder"></div>
    
    <div class="imp-text-three" data--25-top-bottom="opacity: 0;" data--25-bottom-bottom:"opacity: 1">
    This is VERY important text</div>
    

    编辑:您需要添加适当的文档类型,例如&lt;!DOCTYPE html&gt;。否则浏览器会切换到 skrollr 无法处理的 quirks 模式。

    【讨论】:

    • 感谢您的回复!从技术上讲,我想要重新创建的效果显示在页面上的 crispymtn.com 标题下方“你和我们:一个爱情故事”。因此,我认为底部视口需要参考(如果我的问题没有很好地解释这一点,请道歉)。
    • 点在第一个元素上。我已经删除了这个元素的数据属性。
    • 非常感谢。也是为了首先制作 skrollr(即使这意味着你必须忍受像我这样的业余爱好者!)
    猜你喜欢
    • 2016-03-16
    • 1970-01-01
    • 2018-07-22
    • 1970-01-01
    • 1970-01-01
    • 2018-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多