PC端网页特效

元素偏移量offset
获取元素距离带有定位父元素的位置
获取元素自身的大小。高度和宽度
注意:返回的数值都不带单位。

在这里插入图片描述
offsetParent该属性返回的是父及元素的对象。必须返回带有定位父及,如果没有找到body。parentNode,返回最近的父及,父及不需要定位。

在这里插入图片描述
立即执行函数:(function() {})(),作用是创建一个独立的作用域。不需要单独调用它。
也可以写作(function(形参) {} (实参)),多个立即执行函数之间用分号隔开。也可以给匿名函数声明函数名,如(function fun() {})()

pageshow:重新加载页面触发的事件。
Element.clientWidth 属性表示元素的内部宽度,以像素计。该属性包括内边距 padding,但不包括边框 border、外边距 margin 和垂直滚动条(如果有的话)。
在这里插入图片描述
在这里插入图片描述
scroll元素属性:
在这里插入图片描述
在这里插入图片描述
页面被卷去头部用window.pageYOffset获取宽度,如果是水平用window.pageXOffset.注意:元素被卷去的头部是element.scrollTop.
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以上三个主要用法:
offset系列经常用于获取元素位置: offsetLeft offsetTop
client经常用于获取元素的大小:clientWidth clientHeight
scroll经常用于获取滚动距离: scrollTop scrollLeft
注意页面滚动的距离通过window.pageXOffset获得。

mouseover和mouseenter的区别:
mouseover鼠标经过自身盒子会触发,经过子盒子也会触发,mouseenter只经过自身盒子会触发。
moseover子盒子没有触发事件就会根据冒泡事件到父盒子,而父盒子有冒泡事件就会触发.mouseenter没有冒泡事件。同样mouseleave也没有冒泡事件。

动画实现原理:
通过定时器不断移动盒子的位置。实现该原理最重要是在盒子上加上绝对定位。

	 function animate(obj,target) {
        obj.time = setInterval(function() { //obj得到参数是对象,obj.time是给对象赋值。为什么这么做,
                                            //因为如果声明为var time,就会每次调用时在内存中就会开辟新的空间,这样就			  会很占用资源。
                                            //对象已经在内存开辟空间,直接给对象的属性赋值,就不会在开辟新的空间。当然每个对象的定时器也不同。
                                            
            if (obj.offsetLeft >= target) {
                clearInterval(obj.time);
            }
            obj.style.left = obj.offsetLeft + 3 + 'px';
        },50)
    }
    var div = document.querySelector('div');
    var span = document.querySelector('span');
    animate(div,400);
    animate(span,200);

减缓动画:

		function slowAnimate(obj,target) {
        obj.time = setInterval(function(){
            var step = (target - obj.offsetLeft) /10; //计算步长的公式.每次移动多长距离,每次得步长在减少
            if (obj.offsetLeft == target) {
                clearInterval(obj.time);

            }
            obj.style.left = obj.offsetLeft + step + 'px';//每次移动的距离加上之前距离body左边距离就是它总共距离左边的距离
        },20)
    }
    var div = document.querySelector('div');
    var span = document.querySelector('span');
    slowAnimate(div,400);
    slowAnimate(span,300);

click();此方法是手动调用事件,比如:btn.addEventLiatener(‘click’,function(){})可以写成btn.click(),实现得功能一样。

节流阀:
目的是防止轮播图按钮连续点击造成播放过快。
节流阀原理是当上一个动画函数执行完毕,再去执行下一个函数动画,让事件无法连续触发。
思路:利用回调函数,添加一个变量来控制,锁住函数和解锁函数。比如先设置变量 flag = true,然后if(flag){flag = false;回调函数},因为把flag设置为false,其他函数无法执行,等到回调函数执行完毕,把false改为true,其他函数才能执行。

滚动窗口至文档中特定的位置。window.scroll(x,y);x x,y不需要带单位。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值