JS基础3—定时器

article/2025/7/29 5:25:39

定时器目录

  • 定时器
    • 周期定时器
    • 延迟定时器
  • 定时器实践
    • 转盘旋转动画
    • 轮播图实现

定时器

周期定时器

setInterval() 每隔指定时间重复执行回调函数

const intervalId = setInterval(callback, interval, [arg1], [arg2], ...);

参数:

  • callback:要执行的函数
  • interval:执行间隔(毫秒)
  • arg1, arg2…(可选):传递给回调函数的参数

清除定时器:

clearInterval(intervalId);

clearInterval() 停止,括号里面填定时器标志变量

延迟定时器

setTimeout() 在指定延迟(毫秒)后执行一次回调函数

const timerId = setTimeout(callback, delay, [arg1], [arg2], ...);

参数:

  • callback:要执行的函数
  • delay:延迟时间(毫秒),默认 0
  • arg1, arg2…(可选):传递给回调函数的参数

清除定时器

clearTimeout(timerId);

clearTimeout() 停止,括号里面填定时器标志变量

注意
看以下代码和打印结果

在这里插入图片描述
在这里插入图片描述
总结:
change 表示取整块change 函数代码
change() 即取change函数最后的 返回值

定时器实践

转盘旋转动画

模拟转盘旋转动画

核心功能

  • 页面加载时:默认不启动动画,显示静态渐变背景
  • 点击开始按钮:触发动画循环,使用requestAnimationFrame高效更新
  • 动画过程:每帧将渐变角度增加1度
  • 点击停止按钮:立即冻结当前渐变角度,取消动画循环

实现该效果代码文件

在这里插入图片描述

HTML部分

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="./转盘旋转.js" defer></script><style>.container{margin-top: 30px;margin-left: 50px;width: 200px;height: 200px;background: linear-gradient(0deg, rgb(213, 132, 66), rgb(28, 225, 28), rgb(85, 85, 196));border-radius: 100px;}input{margin-top: 20px;margin-left: 70px;}</style>
</head>
<body><div class="container"></div><input type="button" value="开始" class="start"><input type="button" value="停止" class="stop"></body>
</html>

JavaScript 部分

var container = document.querySelector('.container')
var start = document.querySelector('.start')
var stop = document.querySelector('.stop')var i = 0
var flag = 1
var change = function () {container.style.background = "linear-gradient(" + i + "deg, rgb(213, 132, 66), rgb(28, 225, 28), rgb(85, 85, 196))"i++
}
var timer = setInterval(change, 10)
//停止
stop.onclick = function () {clearInterval(timer)flag = 0
}
//开始
start.onclick = function () {if (flag == 0) {timer = setInterval(change, 10)flag = 1}
}

轮播图实现

轮播图

核心功能

  • 通过左右箭头按钮手动切换图片显示,底部页码指示器实时显示当前图片位置并支持点击跳转,自动轮播功能默认每4秒切换下一张图片;
  • 同时提供智能交互控制,当用户鼠标悬停在轮播区域时会自动暂停轮播,离开后恢复自动播放;
  • 当用户点击页码点时,系统会暂停自动轮播(让用户专注查看当前图片),之后自动恢复轮播,实现了流畅的图片切换效果与智能的用户体验平衡。

该效果代码文件

在这里插入图片描述

HTML部分

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><link rel="stylesheet" href="./style.css"></link><script src="./slider.js" defer></script>
</head><body><div class="slider"><ul class="slider_box"><li><img src="./images/20180922180620_Awfrj.jpeg" alt=""></li></li><li><img src="./images/20200211155214_FPdrJ.jpeg" alt=""></li></li><li><img src="./images/20220211003224_4cfd2.jpg" alt=""></li></ul><ul class="btn_box"><li class="left"><</li><li class="right">></li></ul><ul class="page"><li index="1" class="current"></li><li index="2"></li><li index="3"></li></ul></div>
</body>
</html>

CSS部分

* {padding: 0;margin: 0;list-style: none;
}.slider {width: 800px;height: 480px;background-color: gold;margin: 100px auto;overflow: hidden;position: relative;
}.slider .slider_box {width: 2400px;height: 480px;background-color: purple;display: flex;position: absolute;left: -800px;
}.slider .slider_box li {width: 800px;height: 480px;background-color: skyblue;
}.slider .slider_box li img {width: 800px;height: 480px;object-fit: cover;
}.btn_box {position: absolute;top: 215px;width: 95%;left: 2.5%;display: flex;justify-content: space-between;
}.btn_box li {width: 50px;height: 50px;background-color: rgba(200, 200, 200, 0.5);border-radius: 25px;cursor: pointer;text-align: center;line-height: 50px;
}.btn_box li:hover {background-color: rgba(255, 255, 255, 0.8);
}/* 圆点 */
.page {position: absolute;bottom: 20px;width: 10%;left: 45%;display: flex;justify-content: space-evenly;align-items: center;
}.page li {width: 14px;height: 14px;background-color: rgba(200, 200, 200, 0.5);border-radius: 7px;cursor: pointer;
}.page li.current {background-color: rgba(255, 255, 255, 0.8);width: 15px;height: 15px;border-radius: 6.5px;
}

JavaScript

var ul = document.querySelector('.slider_box')
ul.style.left = "0px"//切换函数
var change = function (parameter) {var newOffset = parseInt(ul.style.left) + parameterif (newOffset < -1600) {newOffset = 0} else if (newOffset > 0) {newOffset = -1600}ul.style.left = newOffset + "px"
}var current_page = 1
var page_list = document.querySelectorAll(".page li")
//页码样式变换的函数
var highLight = function () {// 移除所有高亮for (var j = 0; j < page_list.length; j++) {page_list[j].className = "";}// 添加当前高亮page_list[current_page - 1].className = "current";
}//上一张图片
var left_btn = document.querySelector(".left")
left_btn.onclick = function () {change(800)//页码切换if (current_page == 1) {current_page = 3;} else {current_page--;}//样式切换highLight()
}//下一张图片
var right_btn = document.querySelector(".right")
right_btn.onclick = function () {change(-800)//页码切换if (current_page == 3) {current_page = 1;} else {current_page++;}//样式切换highLight()
}//自动播放
var timer = setInterval(right_btn.onclick, 4000)//停止轮播
var btn_lists = document.querySelectorAll(".btn_box li")
for (var i = 0; i < btn_lists.length; i++) {btn_lists[i].onmouseenter = function () {clearInterval(timer)}btn_lists[i].onmouseleave = function () {timer = setInterval(right_btn.onclick, 4000)}
}// 任意页码切换
for (var i = 0; i < page_list.length; i++) {page_list[i].onclick = function () {clearInterval(timer);var target_page = parseInt(this.getAttribute("index"))change((current_page - target_page) * 800)current_page = target_pagehighLight()timer = setInterval(right_btn.onclick, 4000);}
}

http://www.hkcw.cn/article/aQhhlwryne.shtml

相关文章

使用通义万相Wan2.1进行视频生成

使用通义万相Wan2.1进行视频生成 源代码准备运行环境准备创建Python虚拟环境并激活安装依赖包 模型下载生成视频官网的视频生成例子简单描述场景视频生成示例详细描述场景视频生成示例 最近通义万相开源了其视频生成模型。模型有两个版本&#xff0c;一个是1.3B的&#xff0c;一…

最新扣子(Coze)案例教程:小红书爆款书单推荐视频工作流!3分钟10个爆款视频,文学赛道书籍推荐视频日更必备工具,完全免费教程

大家好&#xff0c;我是斜杠君。 最近&#xff0c;星球群里有做小红书文学赛道的博主咨询&#xff0c;每天都在为制作书单的视频找素材、配背景、配音效等&#xff0c;产出量很低。想看看是否可以通过扣子工作流的方式&#xff0c;只要定制好一个工作流的流程&#xff0c;就可…

uniapp [安卓苹果App端] - 实现获取手机摄像头权限+调用相机拍照或拍视频+保存图片视频到相册,检测权限手机摄像头功能是否开启并引导用户同意授权,uniApp app端调用本机开启摄像头授权

前言 网上的教程乱七八糟且兼容性太差,本文提供优质示例。 在 uni-app App端(安卓APP | 苹果APP)开发中,详解在app平台端实现获取手机摄像头权限查询,有权限则开启本机摄像头完成拍摄或录制视频+保存媒体文件到相册等操作,反之无权限则提示开启摄像头与引导用户授权操作,…

【人工智能】深度学习利用人工智能进行VRT视频修复

目录 一、前提二、VRT的重要性和研究背景2. 1 VRT的背景&#xff1a;2.2 VRT的重要性&#xff1a; 三、视频修复概述3.1 定义与目标3.2 与单图像修复的区别3.3 对时间信息利用的需求 四、VRT模型详解4.1 整体框架4.2 多尺度设计和模块功能4.3 关键创新点 五、实验结果5.1 VRT在…

2024年视频号生态洞察报告 | 友望数据发布

2024年视频号直播带货达人和直播销售数据同步增长&#xff0c;直播电商规模不断扩张。从友望数据品类大盘看&#xff0c;服饰内衣、美妆护肤品类高速增长&#xff0c;电商生态持续繁荣。 微信小店的升级&#xff0c;特别是【送礼物】功能的上线&#xff0c;进一步打通社交与电商…

OpenCV从入门到精通:OpenCV安装、配置、依赖安装、基本语法、常用方法详解

OpenCV从入门到精通&#xff1a;OpenCV安装、配置、依赖安装、基本语法、常用方法详解 引言 OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的跨平台计算机视觉库&#xff0c;提供了丰富的图像和视频处理算法接口&#xff0c;支持 Python、C、…

瑞芯微 RK 系列 RK3588 使用 ffmpeg-rockchip 实现 MPP 视频硬件编解码-代码版

前言 在上一篇文章中&#xff0c;我们讲解了如何使用 ffmpeg-rockchip 通过命令来实现 MPP 视频硬件编解码和 RGA 硬件图形加速&#xff0c;在这篇文章&#xff0c;我将讲解如何使用 ffmpeg-rockchip 用户空间库&#xff08;代码&#xff09;实现 MPP 硬件编解码。 本文不仅适…

【计算机视觉】OpenCV实战项目:基于OpenCV的车牌识别系统深度解析

基于OpenCV的车牌识别系统深度解析 1. 项目概述2. 技术原理与算法设计2.1 图像预处理1) 自适应光照补偿2) 边缘增强 2.2 车牌定位1) 颜色空间筛选2) 形态学操作3) 轮廓分析 2.3 字符分割1) 投影分析2) 连通域筛选 2.4 字符识别 3. 实战部署指南3.1 环境配置3.2 项目代码解析 4.…

2024电赛H题参考方案(+视频演示+核心控制代码)——自动行驶小车

目录 一、题目要求 二、参考资源获取 三、TI板子可能用到的资源 1、环境搭建及工程移植 2、相关模块的移植 四、控制参考方案 1、整体控制方案视频演示 2、视频演示部分核心代码 五、总结 一、题目要求 小编自认为&#xff1a;此次控制类类型题目的H题&#xff0c;相较于往年较…

【开源工具】PyQt6录音神器:高颜值多功能音频录制工具开发全解析

【开源工具】&#x1f399;️ PyQt6录音神器&#xff1a;高颜值多功能音频录制工具开发全解析 &#x1f308; 个人主页&#xff1a;创客白泽 - CSDN博客 &#x1f525; 系列专栏&#xff1a;&#x1f40d;《Python开源项目实战》 &#x1f4a1; 热爱不止于代码&#xff0c;热情…

在PPT中同时自动播放多个视频的方法

在PPT中同时自动播放多个视频的方法 文章目录 在PPT中同时自动播放多个视频的方法1 准备视频2 设置动画为“出现”3 设置所有视频为“自动播放”4 最终效果与其他设置 在PPT制作的过程中&#xff0c;我们经常遇到需要同时自动播放多个视频的情况。本文将详细介绍实现这种效果的…

【智能驱蚊黑科技】基于OpenCV的蚊子雷达追踪打击系统(附完整Python源码)

【智能驱蚊黑科技】基于OpenCV的蚊子雷达追踪打击系统&#xff08;附完整Python源码&#xff09; &#x1f308; 个人主页&#xff1a;创客白泽 - CSDN博客 &#x1f525; 系列专栏&#xff1a;&#x1f40d;《Python开源项目实战》 &#x1f4a1; 热爱不止于代码&#xff0c;热…

打造沉浸式古诗欣赏页面:HTML5视频背景与音频的完美结合

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

Python - 爬虫;Scrapy框架之插件Extensions(四)

阅读本文前先参考 https://blog.csdn.net/MinggeQingchun/article/details/145904572 在 Scrapy 中&#xff0c;扩展&#xff08;Extensions&#xff09;是一种插件&#xff0c;允许你添加额外的功能到你的爬虫项目中。这些扩展可以在项目的不同阶段执行&#xff0c;比如启动…

vscode 连接远程服务器

文章目录 1. 背景2. vscode 连接 服务器步骤2.1 安装 remote-ssh 插件2.2 配置 ssh 秘钥2.3 连接 server vscode 连接远程服务器 1. 背景 有服务器的同学&#xff0c;或许都有这样的感觉&#xff0c;服务器是 linux 系统&#xff0c;且只给个人提供一个终端进行连接&#xff0c…

JavaScript 模块系统:CJS/AMD/UMD/ESM

文章目录 前言一、CommonJS (CJS) - Node.js 的同步模块系统1.1 设计背景1.2 浏览器兼容性问题1.3 Webpack 如何转换 CJS1.4 适用场景 二、AMD (Asynchronous Module Definition) - 浏览器异步加载方案2.1 设计背景2.2 为什么现代浏览器不原生支持 AMD2.3 Webpack/Rollup 如何处…

乌称摧毁34%俄远程机队 俄媒否认 谎言蛛网行动

俄罗斯“与假新闻作战”网站发布文章称,通过分析乌克兰方面发布的视频可以确认,乌总统泽连斯基关于“已摧毁34%俄罗斯远程机队”的说法并不属实。俄方认为,乌克兰实际上可能仅摧毁了两架图-95战略轰炸机及一架安-12运输机,其余受损飞机在维修后均可恢复作战能力。乌克兰国家…

加沙停火协议为何一波三折 美斡旋遇阻

本周,美国就巴勒斯坦伊斯兰抵抗运动(哈马斯)和以色列的停火展开斡旋,提出一项为期60天的加沙地带停火方案。然而,围绕是否接受这份方案,哈马斯和以色列的态度不一,谈判频频出现变数。美国白宫5月29日表示,以色列已接受并签署美国提出的加沙地带临时停火方案。但该方案在…

基于springboot的宠物领养系统

博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;熟悉各种主流语言&#xff0c;精通java、python、php、爬虫、web开发&#xff0c;已经做了六年的毕业设计程序开发&#xff0c;开发过上千套毕业设计程序&#xff0c;没有什么华丽的语言&#xff0…

中国王朝简史

文章目录 一、先秦时期&#xff1a;文明起点与制度雏形夏&#xff08;约前2070年–前1600年&#xff09;商&#xff08;约前1600年–前1046年&#xff09;周&#xff08;前1046年–前256年&#xff09; 二、大一统帝国的试验与成熟秦&#xff08;前221年–前207年&#xff09;汉…