首页 > 其他分享 >PC 端网页特效

PC 端网页特效

时间:2022-09-27 13:45:51浏览次数:40  
标签:返回 特效 网页 动画 元素 element PC offset 边框

一、元素偏移量 offset 系列

(一)offset 概述

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

(1)获得元素距离带有定位父元素的位置;

(2)获得元素自身的大小(宽度高度);

(3)注意:返回的数值都不带单位

2、offset 系列常用属性:

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

 

 

 

 

 

 

 

 

(二)offset 与 style 区别

1、offset

(1)offset 可以得到任意样式表中的样式值

(2)offset 系列获得的数值是没有单位的

(3)offsetWidth 包含padding + border + width

(4)offsetWidth 等属性是只读属性,只能获取不能赋值

(5)所以,我们想要获取元素大小位置,用offset更合适

2、style

(1)style 只能得到行内样式表中的样式值

(2)style.width 获得的是带有单位的字符串

(3)style.width 获得不包含padding 和 border 的值

(4)style.width 是可读写属性,可以获取也可以赋值

(5)所以,我们想要给元素更改值,用style更合适

 二、元素可视区 client 系列

(一)

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

2、

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

 

 

 

 

 

(二)立即执行函数

1、语法格式:

(function() {})()  或者  (function(){}())

2、主要作用:创建一个独立的作用域,避免了命名冲突的问题

 (三)

1、下面三种情况都会触发 load 事件:

(1)a 标签的超链接

(2)F5或者刷新按钮(强制刷新)

(3)前进后退按钮

2、但是火狐中,有个特点,有个“往返缓存”,这个缓存中不仅保存着页面数据,还保存了DOM和JavaScript的状态,实际上是将整个页面都保存在内存里。

所以此时后退按钮不能刷新页面。

此时可以使用 pageshow 事件来触发。这个事件在页面显示时触发,无论页面是否来自缓存。在页面加载页面中,pageshow会在load事件触发后触发;根据事件对象中的persisted来判断是否是缓存中的页面触发的pageshow事件,注意这个事件给window添加。

三、元素滚动 scroll 系列

(一)元素 scroll 系列属性

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

scroll系列属性 作用
element.scrollTop 返回被卷去的上侧距离,返回数值不带单位
element.scrollLeft 返回被卷去的左侧距离,返回数值不带单位
element.scrollWidth 返回自身实际的宽度,不含边框,返回数值不带单位
element.scrollHeight 返回自身实际的高度,不含边框,返回数值不带单位

 

 

 

 

 

 

(二)页面被卷去的头部兼容性解决方案

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

(1)声明了 DTD,使用 document.documentElement.scrollTop

(2)未声明 DTD,使用 document.body.scrollTop

(3)新方法window.pageYOffset 和 window.pageXOffset,IE9开始支持

 

(三)三大系列总结

1、

三大系列大小对比 作用
element.offsetWidth 返回自身包括padding、边框、内容区的宽度,返回数值不带单位
element.clientWidth 返回自身包括padding、内容区的宽度,不含边框,返回数值不带单位
element.scrollWidth 返回自身实际的宽度,不含边框,返回数值不带单位

 

 
 

 

2、它们的主要用法:

(1)offset系列经常用于获取元素位置:offsetLeft、offsetTop
(2)client经常用于获取元素大小:clientWidth、clientHeight
(3)scroll经常用于获取滚动距离:scrollTop、scrollLeft
(4)注意页面滚动的距离通过 window.pageXOffset 获得

(四)mouseenter 和 mouseover的区别
mouseenter 鼠标事件
1、当鼠标移动到元素上时就会触发 mouseenter 事件
2、类似 mouseover ,它们两者之间的差别是:
mouseover 鼠标经过自身盒子会触发,经过子盒子还会触发。mouseenter 只会经过自身盒子触发
3、之所以这样,就是因为mouseenter不会冒泡
4、跟mouseenter搭配鼠标离开 mouseleave 同样不会冒泡

四、动画函数封装

(一)动画实现原理
1、核心原理:通过定时器 setInterval() 不断移动盒子位置
2、实现步骤:
(1)获得盒子当前位置
(2)让盒子在当前位置加上1个移动距离
(3)利用定时器不断重复这个操作
(4)加一个结束定时器的条件
(5)注意此元素需要加定位,才能使用element.style.left

 (二)动画函数给不同元素记录不同定时器

1、如果多个函数都使用这个动画函数,每次都要var 声明定时器。我们可以给不同的元素使用不同的定时器(自己专门用自己的定时器)

2、核心原理:利用 JS 是一门动态语言,可以很方便的给当前对象添加属性

 (三)缓动效果原理

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

2、思路:

(1)让盒子每次移动的距离慢慢变小,速度就会慢慢落下来

(2)核心算法:(目标值-现在的位置)/ 10  作为每次移动的距离步长

(3)停止的条件是:让当前盒子位置等于目标位置就停止定时器

 (四)动画函数多个目标值之间移动

可以让动画函数从800移动到500.

当我们点击按钮时候,判断步长是正值还是负值。

1、如果是正值,则步长往大了取整

2、如果是负值,则步长向小了取整

(五)动画函数封装到单独JS文件里面

因为以后经常使用这个动画函数,可以单独封装到一个JS文件里面,使用的时候引用这个JS文件即可。

1、单独新建一个JS文件

 五、常见网页特效案例

(一)节流阀

1、防止轮播图按钮连续点击造成播放过快

2、节流阀目的:当上一个函数动画内容执行完毕,再去执行下一个函数动画,让事件无法连续触发

3、核心实现思路:利用回调函数,添加一个变量来控制,锁住函数和解锁函数

4、开始设置一个变量 var flag = true;

if(flag) {flag = false;do something}  关闭水龙头

利用回调函数动画执行完毕,flag = true 打开水龙头

 

标签:返回,特效,网页,动画,元素,element,PC,offset,边框
From: https://www.cnblogs.com/hunanxyz/p/16662843.html

相关文章

  • Scratch网页版本地部署
    目录设置我们创建一个目录Scratch,在本机上的路径为D:\Code\Scratch ClosureLibrary安装我们使用Git将这个包下载到本地,命令如下gitclonehttps://github.com/goog......
  • 2022ICPC网络赛第二场 - A
    构造+费马小定理2022ICPC网络赛(II)A[题目详情-AYetAnotherRemainder(pintia.cn)](https://codeforces.com/contest/1734/problem/E)题意有一个大整数\(x(1<=x<......
  • The 2022 ICPC Asia Regionals Online Contest (II) B
    BNon-decreasingArray我们可以知道两个操作都是一样的那我们直接记dp[i][j]为前i个数选了j个数并且以ai为结尾的max状态转移直接枚举dp[k][j-1]+(a[i]-a[k])^2即可......
  • 2022icpc网络赛 A题B题
    AYetAnotherRemainder费马小定理\(10^{p-1}\%p==1\)考虑第\(p-1\)行字符串为\(a_1a_2a_3a_4a_5a_6\)假设当前模数p为3那考虑第2行然后第一个数是\(a_1+a_3+a_......
  • 【XML】学习笔记第三章-namesapce
    目录命名空间命名空间概述命名空间语法命名空间的声明命名空间作用域对命名空间的使用元素对命名空间的使用属性对命名空间的使用DTD对命名空间的支持命名空间命名空间概......
  • PCIE背景知识学习(2)
    PCIE背景知识学习(2)PCI中断处理(PCIInterruptHandling)PCI设备使用4个边带信号(sideband)作为中断信号,分别为INTA#、INTB#、INTC#、INTD#,并从中选取一个来向系统发送中断......
  • PCIE背景知识学习(3)
    PCIE背景知识学习(3)PCI-X特性(PCI-XFeatures)拆分事务模型(Split-TransactionModel)在传统的PCI读事务中,总线Master向总线上某个设备发起读取。如前面的内容所述,若Target......
  • 爬虫基础——静态网页与动态网页
    爬虫基础——静态网页与动态网页在爬虫前应首先名确待爬取的页面是静态的,还是动态的,只有确定了页面类型,才方便后续对网页进行分析和程序编写。对于不同的网页类型,编写爬......
  • ICPC2022 Online Contest 2 游记
    总结,8个题,前期罚时爆炸,后期坐牢。开局先找到签到题【E】。题意是给定\(a_1\)要求构造数组\(a_i\),满足\(\gcd(a_i,a_{i-1})==1\)且\(a_i>1\)。显然直接贪一波,......
  • ICPC2022 网络赛2 L
    L给一个长度为\(n\)的字符串\(s\),它只包含I,C,P三种字符。有\(q\)个询问,每次问\(s[l:r]\)子串中有多少个子序列是ICPC。\(n,q\leq2\times10^6\)题解硬算。固定I,P的......