js特效01动画效果及页面固定导航栏

day01体验动画效果

<script>
    var timer=null;
    var btn=document.getElementById('btn');
    var btn1=document.getElementById('btn1');
    var box=document.getElementById('box');
    btn.onclick=function() {
        animate (box,200);
        }
    btn1.onclick=function() {
        animate (box,400);
        }
//封装动画函数
//需求:能够让任对象移动到指定的位置
function animate (obj,target) {//传入任意对象obj,指定位置target。
    clearInterval(obj.timer);//每次执行前先清除定时器,防止重复设置定时器。
        obj.timer=setInterval(function () {//加上定时器
            var leader=obj.offsetLeft;//获取当前对象的位置
            var step=10;//设置步长
            /*if (leader<target) {
                step=step;
            }else{
                step=-step;
            };*/
            step=leader<target?step:-step;
            if (Math.abs(leader-target)>=Math.abs(step)) {//距离大于步长值,
                leader=leader+step;//动画公式
                obj.style.left=leader+"px";//leader只是数字,需要加单位
                }
                else{
                    obj.style.left=target+"px";//手动放到终点
                    clearInterval(obj.timer);
                }
        },15)
    }
</script>

小结:设置定时器后清理定时器:清理定时器时需要有定时器的id,timer
var timer=null;
timer=setInterval(function () {},15);
clearInterval(timer);

2.1 scroll系列 页面滚动坐标

window.onscroll=function () {
    //scroll ().top//被卷去的头部。调用这个函数就相当于调用了这个对象
    //scroll ().left//被卷去的头部
console.log(scroll().top);
};
//封装scroll函数
//封装获取页面被卷去的头部高度和左侧宽度的 兼容函数
function scroll() {
    var scrollTop=window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
    var scrollLeft=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;
        var o={};
        o.top=scrollTop;
        o.left=scrollLeft;
        return o;//返回一个对象,函数的返回值是什么,就相当于调用了什么。
}

页面滚动坐标scroll代码简化:

代码简化:对象点出来的属性 没有字面量简洁。
function scroll() {
        return{
            top:window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0,
            left:window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0
    } ;//返回一个对象,函数的返回值是什么,就相当于调用了什么。
}

2.3 页面固定导航栏
需求:窗体滚动的时候 判断页面被卷去的头部的高度 如果大于topPart的高度 就要把nacBar变成固定定位

<script>
    //获取元素
    var topPart=document.getElementById('topPart');
    var nacBar=document.getElementById('nacBar');
    var mainPart=document.getElementById('mainPart');
    //页面滚动
    window.onscroll=function(){
        if(scroll().top>topPart.offsetHeight) {
            navBar.className="fixed";//改变定位,
            //固定定位脱离标准流,不占位置,后边的就跳上来了
            //为了防止 后面的内容跳上来 可以给后面的内容加上paddingTop值。
            mainPart.style.paddingTop=navBar.offsetHeight+"px";
        }else{
            navBar.className="";
            mainPart.style.paddingTop=0;

        };
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值