第十二章:PC端网页特效

第十二章:PC端网页特效

12.1:元素偏移量 offset系列

  • offset概述

    offset翻译过来就是偏移量,我们使用offset系列相关属性可以动态的得到该元素的位置(偏移)、大小等。

    1. 获得元素距离带有定位父元素的位置。
    2. 获得元素自身的大小(宽度高度)。

    注意:返回的数值都不带单位。

    offset系列常用属性:

    offset系列属性作用
    element.offsetParent返回作为该元素带有定位的父级元素,如果父级都没有定位则返回body
    element.offsetTop返回元素相对带有定位父元素上方的偏移
    element.offsetLeft返回元素相对带有定位父元素左边的偏移
    element.offsetWidth返回自身包括padding、边框、内容去的宽度,返回数值不带单位
    element.offsetHeight返回自身包括padding、边框、内容去的高度,返回数值不带单位
  • offsetstyle区别

    1. offset
      • offset可以得到任意样式表中的样式值。
      • offset系列获得的数值是没有单位的。
      • offsetWidth包含padding + border + width
      • offsetWidth等属性是只读属性,只能获取不能赋值。
      • 所以,想要获取元素大小为止,用offset更合适
    2. style
      • style只能得到行内样式表中的样式值。
      • style.width获得的是带有单位的字符串。
      • style.width获得不包含paddingborder的值。
      • style.width是可读写属性,可以获取也可以赋值。
      • 所以,想要给元素更改值,则需要用style改变

12.2:元素可视区client系列

client翻译过来就是客户端,我们使用client系列的相关属性来获取元素可视区的相关信息。通过client系列的相关属性可以动态的得到该元素的边框大小,元素大小等。

client系列属性作用
element.clientTop返回元素上边框的大小
element.clientLeft返回元素左边框的大小
element.clientWidth返回自身包括padding、内容区的宽度,不含边框,返回值不带单位。
element.clientHeight返回自身包括padding、内容区的高度,不含边框,返回数值不带单位。

12.3:元素滚动scroll系列

  • 元素scroll系列属性

    scroll翻译过来就是滚动的。我们使用scroll系列的相关属性可以动态的得到该元素的大小,滚动距离等。

    scroll系列属性作用
    element.scrollTop返回被卷回的上侧距离,返回值不带单位
    element.scrollLeft返回被卷去的左侧距离,返回值不带参数
    element.scrollWidth返回自身实际的宽度,不含边框,返回值不带单位。
    element.scrollHeight返回自身实际的高度,不含边框,返回值不带单位。
  • 页面被卷去的头部兼容性解决方案

    需要注意的是,页面被卷去的头部,有兼容性问题,因此被卷去的头部通常有如下几种写法:

    1. 声明了DTD,使用document.documentElement.scrollTop
    2. 未声明DTD,使用document.body.scrollTop
    3. 新方法,window.pageYOffsetwindow.pageXOffset,ie9开始支持。
    function getScroll() {
    	return {
    left: window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0,
    top:  window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0};
    }
    使用的时候 getScroll().left
    
  • mouseentermouseover的区别

    1. mouseover鼠标经过自身会触发,经过子盒子还会触发。moussenter只会经过自身盒子触发。
    2. 因为mouseenter不会冒泡,所以去子元素的时候不会触发。
    3. mouseenter搭配鼠标离开mouseleave同样不会冒泡。

12.4:动画函数封装

  • 动画实现原理

    核心原理:通过定时器setInterval()不断移动盒子位置。

    实现步骤:

    1. 获得盒子当前位置。
    2. 让盒子在当前位置加上1个移动距离。
    3. 利用定时器不断重复这个操作。
    4. 加一个结束定时器的条件。
    5. 注意此元素需要添加定位,才能使用element.style.left
  • 缓动画效果原理

    缓动画就是让元素运动速度有所变化,最常见的是让速度慢慢停下来。

    思路:

    1. 让盒子每次移动的距离慢慢变小,速度就会慢慢落下来。
    2. 核心算法:(目标值 - 现在的位置) / 10 ,做为每次移动的距离步长。
    3. 停止的条件是:让当前盒子位置等于目标位置就停止定时器。
    4. 注意步长值需要取整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值