skrollr.js是一款轻量级且强大的js库,关于这款js库的相关的详细教程却不多。
所以这里根据国内一些大神们的笔记和skrollr官方文档进行总结,方便自己以后查阅,也方便大家学习。
这里主要参考了 Shimily大神的skrollr中文教程,在这个基础上进行改进和完善。有什么不妥之处,还希望大家能够及时指出,共同修改。
1. 引入源码文件 skrollr.min.js 或者是 skrollr.js
2.页面加载完成后,初始化skrollr
3.在HTML代码中,给标签元素添加类似data-200="height:20px"
属性,来进行控制样式变化。
v
WOOOT
注意事项:
background-color:rgb(0,255,0)
,不要使用background-color:blue
,否则没有过度效果。WOOOT
1.absolute mode
格式 data-[offset]-[anchor]
offset: 可以使任意整数,默认值是0
anchor: 可以是start或者end
2.relative mode
格式 data-[offset]-(viewport-anchor)-[element-anchor]
offset:可以使任意整数,默认值是0
viewport-anchor:表示视口的底部或者顶部可以是top、center、bottom
element-anchor:表示相对元素的顶部或者底部 可以是top、center、bottom
3.特别提醒
4.备注
1.自动给元素添加Class
class="skrollr"
并且会移除 class="no-skrollr"
(如果存在的话)。class="skrollr-desktop"
或者class="skrollr-mobile"
以表明运行的平台class ="skrollable-before"
, class ="skrollable-between"
或者class ="skrollable-after"
。skrollr会根据关键帧所在的位置确定添加哪一个。2.自动补全css属性
left:0%
,但是后二个关键帧没有设置,那么skrollr会在后一个关键帧处,自动将该css属性设置为前一个关键帧处的属性值left:0%
。
3.注意事项
margin:0px 0px 0px 0px;
对应 margin:0px 100px 50px 3px;
但是不能对应 margin:10px;
值的数量必须保持一致,否则会出错。transform: scale(10) translate(20px);
可以对应 transform: scale(25) translate(60px);
但是不可以对应 transform:translate(60px) scale(25);
我们在初始化skrollr的时候,可以通过设置一些参数,来控制滚动条运动的时候的一些效果,这里列出一些非常常用的参数。
1.smoothScrolling
smoothScrolling:true
情况下,滚动条停止的时候动画不会立即停止,而是有一个过渡,过渡时间可以记性设置。在smoothScrolling:false
情况下,没有过渡,滚动条停止的时候,动画也立即停止。
smoothScrolling:false
,那么整个页面上的元素都没有了过渡效果。在这种情况下,如果想给指定的元素设置过渡效果,可以采用添加属性data-smooth-scrolling="on"
2.smoothScrollingDuration
3.constants
4.forceHeight
data-1500="background-color:rgb(255,0,0)"
。在forceHeight:true
的情况下,页面会一直往下滚到1500px的位置;在forceHeight:false
的情况下,会阻止继续滚动,滚动到页面的底部,也就是1000px处,就停止。
4.mobileCheck=function() {...}
5.mobileDeceleration
6.edgeStrategy
edgeStrategy:'set'
:如果滚动条的位置在第一帧之前,那么元素保持第一帧的状态;如果滚动条的位置在最后一帧之后,那么元素保持最后一帧的状态。edgeStrategy:'ease'
:效果同上。只不过ease会根据easing里面定义的函数变化。我觉得不用太过理会这一变化。.edgeStrategy:'reset'
:滚动条的位置在所定义的关键帧范围之外的时候,元素的状态和关键帧没有任何关系了。这个时候,元素会显示没有添加关键帧之前的样式,即按照自己写的普通的css样式显示。7.skrollrBody
skrollrBody
的数值,那么我们需要给 skrollr容器元素 添加id="skrollr-body"
。如果我们修改了skrollrBody
的数值,那么相对应的 skrollr容器元素 的id值也要修改。否则在移动设备上无法正常使用skrollr.js
8.beforerender
{
curTop: 10, //the current scroll top offset
lastTop: 0, //the top value of last time
maxTop: 100, //the max value you can scroll to. curTop/maxTop will give you the current progress.
direction: 'down' //either up or down
}
false
will prevent rendering.8.render
9.easing
linear
:线性运动,是默认的运动函数。如果不对元素设置运动函数,元素会线性运动。quadratic
: 二次方程式运动函数cubic
: 三次方程式运动函数cubic
: 三次方程式运动函数begin/end
:分别返回0和1,没有动画。直接从第一帧的状态调到最后一帧的状态。swing
:开始的时候很慢,但是后面会慢慢加速sqrt
:开始的时候很快,但是后面会慢慢减速bounce
:像球一样运动,进入 网站,查看图解
WOOOT
1.skrollr.get()
2.refresh([elements])
elements
对象,这些传入的elements
对象可以是Array, NodeList 或者jquery对象。3.getScrollTop()
4.getMaxScrollTop()
5.setScrollTop(top[, force = false])
force=true
,那么会直接无动画的到达设置的scrollTop。默认情况下是有动画的
6.isMobile()
7.animateTo(top[, options])
top
设置的位置,而且是有过渡动画的。我认为这是一个很好用API。duration
:过渡时间,单位是ms。默认值是1000mseasing
:运动函数,默认是lineardone
:回调函数,动画执行完成后执行
8.stopAnimateTo()
9.on(name, fn)
beforerender, render, keyframe
添加事件侦听函数。
10.off(name)
以上便是我对skrollr.js这个轻量级js库的总结。
如果文章中有错误的地方,或者遗漏了某些重要的知识点,欢迎大家及时指出,我会及时修正。
最后还是要说一句,如果你的英文不是特别差的话,推荐大家读读英文原版文档。
看到全英文,不用慌,慢慢读,你肯定看得懂。