当前位置: 首页 > news >正文

web前端之多行文本擦除效果、文本逐个显示或展示、创建元素标签、querySelector、createElement、appendChild、requestAnimationFrame

MENU

  • 版本一(requestAnimationFrame)
  • 版本二(setTimeout)
  • 版本三(css)


版本一(requestAnimationFrame)

前言

window.requestAnimationFrame()告诉浏览器——你希望执行一个动画,并且要求浏览器在下次重绘之前调用指定的回调函数更新动画。该方法需要传入一个回调函数作为参数,该回调函数会在浏览器下一次重绘之前执行。
备注:若你想在浏览器下次重绘之前继续更新下一帧动画,那么回调函数自身必须再次调用requestAnimationFrame()。requestAnimationFrame()是一次性的。
当你准备更新在屏动画时你应该调用此方法。这将使浏览器在下一次重绘之前调用你传入给该方法的动画函数(即你的回调函数)。回调函数执行次数通常是每秒60次,但在大多数遵循W3C建议的浏览器中,回调函数执行次数通常与浏览器屏幕刷新次数相匹配。为了提高性能和电池寿命,在大多数浏览器里,当requestAnimationFrame()运行在后台标签页或者隐藏的<iframe>里时,requestAnimationFrame()会被暂停调用以提升性能和电池寿命。
DOMHighResTimeStamp参数会传入回调方法中,它指示当前被requestAnimationFrame()排序的回调函数被触发的时间。在同一个帧中的多个回调函数,它们每一个都会接受到一个相同的时间戳,即使在计算上一个回调函数的工作负载期间已经消耗了一些时间。该时间戳是一个十进制数,单位为毫秒,最小精度为1ms(1000μs)。
警告:请确保总是使用第一个参数(或其他一些获取当前时间的方法)来计算动画在一帧中的进度,否则动画在高刷新率的屏幕中会运行得更快。请参考下面示例的做法。
requestAnimationFrame(callback);


html

<div id="idBoxRAF">不要去强留任何一段关系 即使你很在意 惜我者 我惜之 嫌我者 我弃之 时间识人 落难之心 不经一事 不懂于人 水不试不知深浅 人不交不知好坏 时间是个好东西 验证了人心 见证了人性 不要总担心身边会失去谁 记得问问自己谁又害怕失去你
</div>

JavaScript

function initRAF() {let textEl = document.querySelector("#idBoxRAF"),str = textEl.textContent,i = 0;textEl.textContent = '';function initR() {if (i >= str.length) return false;textEl.textContent += str[i];requestAnimationFrame(initR);i++;}initR();
}initRAF();

版本二(setTimeout)

<div id="idBox"><p>三百六十行,行行干破防。</p><p>吃得苦中苦,老板开路虎。</p><p>不听老人言,开心好几年。</p><p>明知山有虎,猛敲退堂鼓。</p><p>行而上学,不行退学。</p><p>安得广夏千万间,广厦一千万一间。</p><p>阎王叫我三更死,二更我就抹脖子。</p><p>一寸光阴一寸金,三寸光阴一个鑫。</p><p>风雪压我两三年,两眼一闭就长眠。</p><p>轻舟已过万重山,乌蒙山连着山外山。</p><p>失败是成功之母,可惜成功六亲不认。</p>
</div>

JavaScript

function init(timeout = 28) {let textEl = document.querySelector("#idBox"),pEl = textEl.querySelectorAll("p"),timeStrat = 0;textEl.textContent = "";pEl.forEach((pT, j) => {let str = pT.textContent,newP = document.createElement('p');textEl.appendChild(newP);for (let i = 0; i < str.length; i++) {setTimeout(() => newP.textContent += str[i], timeStrat);timeStrat += timeout;}});
}init(30);

版本三(css)

html

<div class="container"><p>你只是来体验生命 什么都拥有不了 什么都留不住 不需要证明什么 更没有什么事一定要实现 你能做的就是不断尝试 收获 感受 然后放下 我们来到这世间 只是为了看花怎么开 水怎么流 太阳如何升起 夕阳何时落下经历有趣的事情 遇见难忘的人 生活原本就很沉闷 但跑起来就有风了</p><p class="eraser"><span class="text">你只是来体验生命 什么都拥有不了 什么都留不住 不需要证明什么 更没有什么事一定要实现 你能做的就是不断尝试 收获 感受 然后放下 我们来到这世间 只是为了看花怎么开 水怎么流 太阳如何升起 夕阳何时落下经历有趣的事情 遇见难忘的人 生活原本就很沉闷 但跑起来就有风了</span></p>
</div>

style

* {margin: 0;padding: 0;box-sizing: border-box;
}body {background: #000;color: #fff;
}.container {width: 80%;margin: 1em auto;line-height: 2;text-indent: 2em;position: relative;
}.eraser {position: absolute;inset: 0;
}.text {background: linear-gradient(to right, #0000 var(--p), #000 calc(var(--p) + 30px));color: transparent;animation: erase 10s linear forwards;
}@property --p {syntax: '<percentage>';initial-value: 0%;inherits: false;
}@keyframes erase {to {--p: 100%;}
}

相关文章:

web前端之多行文本擦除效果、文本逐个显示或展示、创建元素标签、querySelector、createElement、appendChild、requestAnimationFrame

MENU 版本一(requestAnimationFrame)版本二(setTimeout)版本三(css) 版本一(requestAnimationFrame) 前言 window.requestAnimationFrame()告诉浏览器——你希望执行一个动画&#xff0c;并且要求浏览器在下次重绘之前调用指定的回调函数更新动画。该方法需要传入一个回调函数…...

一文解读ISO26262安全标准:功能安全管理

一文解读ISO26262安全标准&#xff1a;功能安全管理 1 安全生命周期1.1 概念阶段1.2 产品开发阶段1.3 生产发布后续阶段 2 安全管理的角色和职责3 安全活动的裁剪4 安全活动的评审5 安全活动的评估6 交付物 下文的表中&#xff0c;一些方法的推荐等级说明&#xff1a; “”表示…...

【华为OD机试】找座位【C卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 在一个大型体育场内举办了一场大型活动,由于疫情防控的需要, 要求每位观众的必须间隔至少一个空位才允许落座。 现在给出一排观众座位分布图,座位中存在已落座的观众,请计算出, 在不移…...

LarkXR上新了 | Apollo多终端与XR体验的优化创新

作为领先的数字平行世界产品技术提供方&#xff0c;「Paraverse平行云」一直致力于为企业和开发者提供企业级实时云渲染解决方案。其多终端接入产品LarkXR Apollo&#xff0c;基于底层Runtime技术&#xff0c;实现了在Windows、Linux、MacOS、Android、iOS等多种操作系统下&…...

车载电子电器架构 - 网络拓扑

车载电子电器架构 - 网络拓扑 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师 (Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎么看自己。江湖一碗茶,喝完再挣扎,出门靠…...

2024蓝桥杯每日一题(DFS)

备战2024年蓝桥杯 -- 每日一题 Python大学A组 试题一&#xff1a;奶牛选美 试题二&#xff1a;树的重心 试题三&#xff1a;大臣的差旅费 试题四&#xff1a;扫雷 试题一&#xff1a;奶牛选美 【题目描述】 听说最近两斑点的奶牛最受欢迎&#xff0c;…...

Docker 笔记(五)--链接

这篇笔记记录了Docker 的Link。 官方文档&#xff1a; Legacy container links - Communication across links 目录 参考Legacy container linksConnect using network port mappingConnect with the linking systemThe importance of naming Communication across linksEnviro…...

如何处理Android悬浮弹窗双击返回事件?

目录 1 前言 1.1 准备知识 1.2 问题概述 2 解决方案 3 代码部分 3.1 动态更新窗口焦点 3.2 窗口监听返回事件 3.3 判断焦点是否在窗口内部 3.4 窗口监听焦点移入/移出 4 注意事项 4.1 窗口范围 4.2 空隙处的返回事件处理 1 前言 1.1 准备知识 1&#xff09;开发环…...

高可用篇_A Docker容器化技术_II Docker环境搭建和常见命令

原创作者&#xff1a;田超凡&#xff08;程序员田宝宝&#xff09; 版权所有&#xff0c;引用请注明原作者&#xff0c;严禁复制转载 Docker安装 Docker 要求 CentOS7 系统的内核版本在 3.10以上 &#xff0c;查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。 …...

Vue.js+SpringBoot开发食品生产管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 加工厂管理模块2.2 客户管理模块2.3 食品管理模块2.4 生产销售订单管理模块2.5 系统管理模块2.6 其他管理模块 三、系统展示四、核心代码4.1 查询食品4.2 查询加工厂4.3 新增生产订单4.4 新增销售订单4.5 查询客户 五、…...

Python面试笔记

Python面试笔记 PythonQ. Python中可变数据类型与不可变数据类型&#xff0c;浅拷贝与深拷贝详解Q. 解释什么是lambda函数&#xff1f;它有什么好处&#xff1f;Q. 什么是装饰器&#xff1f;Q. 什么是Python的垃圾回收机制&#xff1f;Q. Python内置函数dir的用法&#xff1f;Q…...

springboot 查看和修改内置 tomcat 版本

解析Spring Boot父级依赖 去到项目的根pom文件中&#xff0c;找到parent依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>${springboot.version}…...

003——移植鸿蒙

目录 一、顶层Make分析 二、添加一个新的单板 2.1 Kconfig 2.2 Makefile 2.2.1 顶层Makefile 2.2.2 platform下的Makefile 2.2.3 platform下的bsp.mk文件 2.3 编译与调试 2.4 解决链接错误 三、内核启动流程的学习 3.1 韦东山老师总结的启动四步 3.2 启动文件分析…...

罗马数字转整数-力扣通过自己编译器编译

学会将力扣题目用自己自带的编译软件编译---纯自己想的本题解法 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如&#xff0c; 罗马数字 2 写做 II &#xff0c;即为两…...

深入解析JVM加载机制

一、背景 Java代码被编译器变成生成Class字节码&#xff0c;但字节码仅是一个特殊的二进制文件&#xff0c;无法直接使用。因此&#xff0c;都需要放到JVM系统中执行&#xff0c;将Class字节码文件放入到JVM的过程&#xff0c;简称类加载。 二、整体流程 三、阶段逻辑分析 3…...

python redis中blpop和lpop的区别

python redis中lpop()方法是获取并删除左边第一个对象。 def lpop(self,name: str,count: Optional[int] None,) -> Union[Awaitable[Union[str, List, None]], Union[str, List, None]]:"""Removes and returns the first elements of the list name.By de…...

第四百一十回

文章目录 1. 概念介绍2. 方法与细节2.1 获取方法2.2 使用细节 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何获取当前系统语言"相关的内容&#xff0c;本章回中将介绍如何获取时间戳.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章…...

程序员的README——编写可维护的代码(一)

用户行为不可预测&#xff0c;网络不可靠&#xff0c;事情总会出错。生产环境下的软件必须一直保持可用状态。 编写可维护的代码有助于你应对不可预见的情况&#xff0c;可维护的代码有内置的保护、诊断和控制。 切记通过安全和有弹性的编码实践进行防御式编程来保护你的系统&a…...

数据库管理-第160期 Oracle Vector DB AI-11(20240312)

数据库管理160期 2024-03-12 数据库管理-第160期 Oracle Vector DB & AI-11&#xff08;20240312&#xff09;1 向量的函数操作to_vector()将vector转换为标准值vector_norm()vector_dimension_count()vector_dimension_format() 2 将向量转换为字符串或CLOBvector_seriali…...

(C++进阶)boost库笔记

目录 1、boost::function 1.1 概述 1.2 boost包装器和C11包装器对比 1.2、代码示例 1、boost::function 1.1 概述 boost::function 是 Boost 库中提供的一个通用函数对象包装器&#xff0c;它可以存储指向任何可调用对象的指针&#xff0c;并且可以在任何时候通过 operat…...

MapReduce面试重点

文章目录 1. 简述MapReduce整个流程2. join原理 1. 简述MapReduce整个流程 数据划分(Input Splitting)&#xff1a;开始时&#xff0c;输入数据被分割成逻辑上的小块&#xff0c;每个块被称为Input Split。 映射(Map)&#xff1a;每个Input Split 由一个或多个Map任务处理&…...

C语言简单题(7)从主函数中输入10个等长字符串,用一个函数对他们排序,然后在主函数输出这10个已排好序的字符串

从主函数中输入10个等长字符串&#xff0c;用一个函数对他们排序&#xff0c;然后在主函数输出这10个已排好序的字符串 /* 从主函数中输入10个等长字符串&#xff0c;用一个函数对他们排序&#xff0c;然后在主函数输出这10个已排好序的字符串 */ #include<stdio.h> …...

光伏科普|太阳能光伏发电应用场景有哪些?

太阳能光伏发电的应用领域其实非常广泛&#xff0c;很多人会不相信&#xff0c;但在我们的日常生活中随处可见太阳能光伏产业&#xff0c;本文将详细介绍其应用场景有哪些。 一、工业领域厂房 太阳能光伏发电作为一种清洁、可再生的能源&#xff0c;安装在工业领域厂房&#…...

Go 构建高效的二叉搜索树联系簿

引言 树是一种重要的数据结构&#xff0c;而二叉搜索树&#xff08;BST&#xff09;则是树的一种常见形式。在本文中&#xff0c;我们将学习如何构建一个高效的二叉搜索树联系簿&#xff0c;以便快速插入、搜索和删除联系人信息。 介绍二叉搜索树 二叉搜索树是一种有序的二叉…...

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的交通信号灯识别系统(深度学习+UI界面+训练数据集+Python代码)

摘要&#xff1a;本研究详细介绍了一种采用深度学习技术的交通信号灯识别系统&#xff0c;该系统集成了最新的YOLOv8算法&#xff0c;并与YOLOv7、YOLOv6、YOLOv5等早期算法进行了性能评估对比。该系统能够在各种媒介——包括图像、视频文件、实时视频流及批量文件中——准确地…...

以太坊开发学习-solidity(三)函数类型

目录 函数类型 函数类型 solidity官方文档里把函数归到数值类型 函数类型是一种表示函数的类型。可以将一个函数赋值给另一个函数类型的变量&#xff0c; 也可以将一个函数作为参数进行传递&#xff0c;还能在函数调用中返回函数类型变量。 函数类型有两类&#xff1a;- 内部&…...

教你把公司吃干抹净、榨干带走

大家好&#xff1a; 衷心希望各位点赞。 您的问题请留在评论区&#xff0c;我会及时回答 正文 打工人一定要做到够自私&#xff0c;把公司的一切为我所用&#xff0c;你要知道闷头打工是没有出路的。聪明的人会以最快的速度榨干带走公司的一切资源、人脉、技能&#xff0c;为…...

开发指南007-导出Excel

平台上开发导出Excel比过去的单体架构要复杂些&#xff0c;因为前端和后台不在一个进程空间里。 后台的操作是先生成excel文件&#xff0c;技术路线是jxl <dependency><groupId>net.sourceforge.jexcelapi</groupId><artifactId>jxl</artifactId&g…...

滑块验证码

1.这里针对滑块验证给了一个封装的组件verifition&#xff0c;使用直接可以调用 2.组件目录 3.每个文件的内容 3.1 Api文件中只有一个index.js文件&#xff0c;用来存放获取滑块和校验滑块结果的api import request from /router/axios//获取验证图片 export function reqGe…...

cmd常用指令

cmd全称Command Prompt&#xff0c;中文译为命令提示符。 命令提示符是在操作系统中&#xff0c;提示进行命令输入的一种工作提示符。 在不同的操作系统环境下&#xff0c;命令提示符各不相同。 在windows环境下&#xff0c;命令行程序为cmd.exe&#xff0c;是一个32位的命令…...

最简单的做网站/搜索引擎优化教程

一.复习以下C语言&#xff08;指针、typedef、预处理&#xff09;(一)指针指针是地址&#xff0c;这句话是错误的。"指针是地址的类型"。具体的一个地址是指针类型的。指针类型 * 整数类型 int字符类型 char数据类型&#xff1a;"访问内存的方式"常量和变量…...

陕西建工第五建设集团有限公司官方网站/网站推广网站

1.卸载eclipse安装android studio 软件&#xff0c;尝试进行操作。 2.将书上的四等水准测量知识输入电脑&#xff0c;为编写做准备。 trouble&#xff1a;安装软件花了好长时间&#xff0c;没有太大进展。转载于:https://www.cnblogs.com/JL3Peanut/p/9976236.html...

三合一网站开发架构/十大搜索引擎排名

WiFi发展历程 IEEE 802.11ax 标准现在称为 Wi-Fi 6 或第 6 代 Wi-Fi&#xff0c;并在 2.4 GHz 和 5 GHz 频段运行。 Wi-Fi 6E 在 6 GHz 频段运行。 WiFi 6E信道分布...

wordpress多站点是什么意思/网页优化seo公司

ORACLE_OCP多租户之CDB和PDB数据加密 一、通过透明数据加密对受保护的数据进行加密 每个PDB一个主密钥来加密PDB数据 每个PDB都有自己的主密钥&#xff0c;用于加密PDB中的数据。当PDB从一台主机移到另一台主机时&#xff0c;必须将主密钥从源数据库密钥库传输到目标数据库密…...

做网站的问题/互动营销的案例及分析

oracle 导入excel数据? 通过plsql实现 1.准备工作 Excel中的字段名称&#xff0c;必须和表结构字段一 一对应 下面以tdoctor_apply表为例&#xff0c;进行演示 表结构 Excel表数据字段名称 说明&#xff1a;为保密&#xff0c;表中的数据进行了隐藏&#xff1b;另外&#xff…...

网站定制制作公司/重庆网站建设维护

作者最近在探索微信小程序&#xff0c;有一个需求是让用户通过手机相册或者手机摄像头拍照上传图片。效果如下图所示&#xff1a; 由于作者之前没有接触过微信小程序&#xff0c;看了微信小程序的开发手册后就开始写了。 一开始的想法是这样的&#xff1a;通过界面交互反馈的a…...