PC 端网页特效

news/2024/5/18 23:43:35/文章来源:https://www.cnblogs.com/hunanxyz/p/16662843.html

一、元素偏移量 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 打开水龙头

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_203630.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用polkadot.js在substrate frontier上安装ERC20token合约

使用polkadot.js在substrate frontier上安装ERC20token合约参考资料Substrate Frontier Node Template github.com/substrate-developer-hub/frontier-node-template frontier-node-template/examples/contract-erc20/truffle/contracts/MyToken.json安装ERC20 token合约 sourc…

SwiftUI AR教程之应用程序中使用 RealityKit 生成 3D 文本(教程含完整源码)

项目文件 基本设置 我们将从 Xcode 上的“增强现实应用程序”模板开始: 我使用 SwiftUI 作为界面,使用 Swift 作为语言,使用 RealityKit 作为内容技术: 您现在应该拥有基本的增强现实应用程序模板代码。 使用 RealityKit 生成 3D 文本网格 我们将向我们的项目添加一个函…

快速入门SSMS的使用

快速入门SSMS的使用1.Install SSMS2.Demo2.1 Export DDL2.2 XXXXX3.XXXX4.Waken1.Install SSMS 官方地址 SSMS Website: https://learn.microsoft.com/zh-tw/docs/. 也可以直接下载 Download Website: https://aka.ms/ssmsfullsetup.双击安装 要有电脑的管理员权限 快速启动…

springboot基于JAVA游戏周边商城设计与实现毕业设计源码261622

Springboot游戏周边商城的开发 摘 要 现今人们的生活方式逐渐丰富,电脑和网络已经融入了人们生活中的滴滴点点,无时不刻的影响着我们的日常生活,网络游戏已经进入到了大多数人的生活之中。在游戏的世界中人们会得到很多游戏商品,然…

死锁检测组件原理及代码实现

一、引言 所谓死锁,是指多个线程或进程各自持有某些资源,同时又等待着别的线程或进程释放它们现在所保持的资源,否则就不能向前推进。如下图:线程各自占有一把锁,还需要申请别的线程当前持有的锁,形成锁资…

Cisco简单配置(十四)—第一跳冗余协议—HSRP

为什么使用第一跳冗余 默认网关限制 如果路由器或路由器接口(作为默认网关)发生故障,配置该默认网关的主机将与外部网络隔离。在交换网络中,每个客户端仅收到一个默认网关。即使存在第二个路由可以从本地网段传输数据包&#xf…

微信小程序 java高校新生报到宿舍安排管理系统python php

将小程序权限按管理员和用户这两类涉及用户划分。 (a) 管理员;管理员使用本程序涉到的功能主要有:个人中心、宿舍管理、学生管理、宿舍安排管理、缴费信息管理、程序管理等功能 (b)用户进入程序前台可以实现首页、互助沟通、我的等功能 uni-app框架&…

基于java校园志愿者管理系统(java毕业设计)

基于java校园志愿者管理系统 校园志愿者系统是基于java编程语言,mysql数据库,springboot框架,idea开发工具进行开发,本系统主要分为志愿者和管理员两个角色,其中志愿者的主要功能是查看系统公告,活动信息&…

红队工具合集,安全er值得拥有

背景 圈内很多师傅一直在做红队安全工具箱,用于在hvv、渗透等工作中提升工作效率。依照ATT&CK威胁图谱的指导,我们很容易整理出常用的红队工具合集,在这里为大家展示。 工具介绍 信息搜集 信息搜集一直是渗透测试工作开展的重中之重,找到无人关注的老旧应用,先对…

leetcode 617. Merge Two Binary Trees 合并二叉树(简单)

直接用递归调用给定函数,先判断如果root1为空返回root2,如果root2为空返回root1,都存在的情况下建立新节点node,然后对root1和root2的左子节点调用递归并赋给node的左子节点,再对root1和root2的右子节点调用递归并赋给node的右子节点,返回node即可。一、题目大意 给你两棵…

虚拟机安装

ubuntu 虚拟机安装配置,以 18.04 为例 一、安装步骤 > 安装 vmware wmware 下载地址 : download 点击进入下载界面 点击并下载 windows 平台下的安装包 安装时直接一键下一步即可,也可根据自己需求勾选,最后的注册码可以自行…

吃个晚饭的时间,看明白三相交流感应电机驱动原理

💕三相交流感应单机驱动方式 物理开关:(接触器开关、正反向控制,星三角启动) 变频驱动:(软启动、变频器调速、一般无星三角启动) 💕一、物理开关驱动 🤞该电…

一般勒索要钱,医疗勒索“要命”!重保时期别让患者病无所依

最近,美宾夕法尼亚州医疗机构遭受勒索软件攻击,攻击者访问75628个人的健康信息,包含姓名、地址、电子邮件地址、出生日期、医疗诊断等信息。事实上,近年来全球医疗系统遭遇网络攻击的事件时有发生。2022年8月法国一家医院遭到勒索…

基于JAVA的TCP网络QQ聊天工具系统

目 录 1 功能设计 1 1.1功能概述 1 1.2功能模块图 1 2 逻辑设计 2 3 界面设计 4 3.1注册界面: 4 3.2登录界面 5 3.3好友列表页面 5 3.4好友聊天页面 6 3.5服务器界面 7 4 各模块详细设计 7 4.1登录模块 7 4.2注册模块 9 4.3聊天模块 10 4.4数据库工具类 12 4.5封装的…

springboot+vue外卖点餐系统 计科专业毕业设计选题 java餐厅点餐系统 ssm外卖订餐系统 外卖配送管理系统 java点餐系统

springboot+vue外卖点餐系统 计科专业毕业设计选题 java餐厅点餐系统 ssm外卖订餐系统 外卖配送管理系统 java点餐系统💖💖作者:IT跃迁谷毕设展 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓And…

基于Logistic回归麻雀算法-附代码

基于Logistic回归麻雀算法 文章目录基于Logistic回归麻雀算法1.麻雀搜索算法2.改进麻雀算法2.1 逐维小孔成像反向学习优化发现者位置2.2 基于 Logistic 模型的自适应因子3.实验结果4.参考文献5.Matlab代码6.python代码摘要:针对麻雀搜索算法后期种群多样性减少、易陷…

ajax 和 react 最显着的区别是什么?

ajax 和 react 最显着的区别是什么?What’s the most remarkable difference between ajax and react? 目前,Ajax 和 React 之间最大的区别之一是它们是帮助不同网页或应用程序以某种方式工作以使用户体验尽可能愉快的进程。 其他 Ajax 和 React 的区别 是一种主要用作开发用…

【JDBC实战】水果库存系统 [功能实现](接口实现类FruitDAOImpl的功能实现)万字长文

CSDN话题挑战赛第2期 参赛话题:学习笔记 JDBC专栏 (点击进入专栏) 【1】idea添加mysql-jar包 【2】使用IDEA连接数据库,执行增删改操作。 【3】IDEA连接数据库,执行查询操作,返回结果集并输出。 【4】JDBC…

30+行业头部企业相聚杭城,创邻科技“Graph+X”生态合作伙伴大会成功举办

9月22日,2022创邻科技“GraphX”生态合作伙伴大会在浙江杭州圆满落幕!北明软件、京东数科、华为云、浙大网新、麒麟软件、同盾科技等30余家行业头部企业50多位企业家、技术领袖、行业精英,齐聚杭城,共享图技术多元场景的前沿资讯&…

免费综合网络研讨会:如何优化 JavaScript 应用程序的方法

免费综合网络研讨会:如何优化 JavaScript 应用程序的方法您是否考虑过提高 JavaScript 应用程序的性能? 加入 Dmytro Mezhenskyi , 开发专家 解码前端 , 上 2022 年 9 月 30 日——美国东部时间上午 11 点, 并了解可用于加速应用程序的各种优化技术。 网络研讨会将涵盖广泛…