<!DOCTYPE html>
<html>
<head>
<style>
*{
margin: 0;
padding: 0;
}
.result{
width: 100%;
height: 50px;
background: #ccc;
position: fixed;
top: -50px;
}
.result.active{
top: 0;
}
</style>
<script src="js/jquery-1.11.3.min.js"></script>
</head>
<body style="height:4500px;">
<div class="result"></div>
<script>
$(function(){
var fs = true;
$(window).scroll(function(event) {
if( $(window).scrollTop() > 50 ){
if(fs){
$(".result").stop().animate({
top: 0
},300);
fs = false;
}
}
else{
$(".result").stop().animate({
top: "-50px"
},300);
fs = true;
}
});
});
</script>
</body>
</html>
实现效果:想实现滚动条位置大于指定值出现滚动横条。小于则隐藏。
出现问题:滚动到指定位置以后,动画很慢进入,小于指定值也会很慢收回。这是为什么?
scroll 的触发效率是很高的,一次滚动可能就触发了100次,你在写判断
$(window).scrollTop()>50
,未进行节流的控制,导致触发了多次的$(".result").animate()
,建议在使用scroll()
,尽量内部定义节流阀函数,提高性能.简单的实现
高级实现
函数防抖与节流