第十二章:PC端网页特效
12.1:元素偏移量 offset系列
-
offset
概述offset
翻译过来就是偏移量,我们使用offset系列相关属性可以动态的得到该元素的位置(偏移)、大小等。- 获得元素距离带有定位父元素的位置。
- 获得元素自身的大小(宽度高度)。
注意:返回的数值都不带单位。
offset系列常用属性:
offset系列属性 作用 element.offsetParent 返回作为该元素带有定位的父级元素,如果父级都没有定位则返回body element.offsetTop 返回元素相对带有定位父元素上方的偏移 element.offsetLeft 返回元素相对带有定位父元素左边的偏移 element.offsetWidth 返回自身包括 padding
、边框、内容去的宽度,返回数值不带单位element.offsetHeight 返回自身包括 padding
、边框、内容去的高度,返回数值不带单位 -
offset
与style
区别offset
offset
可以得到任意样式表中的样式值。offset
系列获得的数值是没有单位的。offsetWidth
包含padding + border + width
。offsetWidth
等属性是只读属性,只能获取不能赋值。- 所以,想要获取元素大小为止,用
offset
更合适。
style
style
只能得到行内样式表中的样式值。style.width
获得的是带有单位的字符串。style.width
获得不包含padding
和border
的值。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 返回自身实际的高度,不含边框,返回值不带单位。 -
页面被卷去的头部兼容性解决方案
需要注意的是,页面被卷去的头部,有兼容性问题,因此被卷去的头部通常有如下几种写法:
- 声明了DTD,使用
document.documentElement.scrollTop
- 未声明DTD,使用
document.body.scrollTop
- 新方法,
window.pageYOffset
和window.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
- 声明了DTD,使用
-
mouseenter
和mouseover
的区别mouseover
鼠标经过自身会触发,经过子盒子还会触发。moussenter
只会经过自身盒子触发。- 因为
mouseenter
不会冒泡,所以去子元素的时候不会触发。 - 跟
mouseenter
搭配鼠标离开mouseleave
同样不会冒泡。
12.4:动画函数封装
-
动画实现原理
核心原理:通过定时器
setInterval()
不断移动盒子位置。实现步骤:
- 获得盒子当前位置。
- 让盒子在当前位置加上1个移动距离。
- 利用定时器不断重复这个操作。
- 加一个结束定时器的条件。
- 注意此元素需要添加定位,才能使用
element.style.left
。
-
缓动画效果原理
缓动画就是让元素运动速度有所变化,最常见的是让速度慢慢停下来。
思路:
- 让盒子每次移动的距离慢慢变小,速度就会慢慢落下来。
- 核心算法:(目标值 - 现在的位置) / 10 ,做为每次移动的距离步长。
- 停止的条件是:让当前盒子位置等于目标位置就停止定时器。
- 注意步长值需要取整。