WEB APIs(2)

应用定时器可以写一个定时轮播图,如下

<!DOCTYPE html>
<html lang="en">

<head>
   <meta charset="UTF-8">
   <meta http-equiv="X-UA-Compatible" content="IE=edge">
   <meta name="viewport"
      content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">

   <title>~</title>

   <link rel="shortcut icon" href="https://www.bilibili.com/favicon.ico">
   <link rel="stylesheet" href="css/初始化表.css">
   <link rel="stylesheet" href="css/index.css">
   <meta name="keywords" content="..." />
   <style>
      /*写代码时始终要考虑权重问题!*/

      @font-face {
         font-family: 'icomoon';
         src: url('fonts/icomoon.eot?au9n7q');
         src: url('fonts/icomoon.eot?au9n7q#iefix') format('embedded-opentype'),
            url('fonts/icomoon.ttf?au9n7q') format('truetype'),
            url('fonts/icomoon.woff?au9n7q') format('woff'),
            url('fonts/icomoon.svg?au9n7q#icomoon') format('svg');
         font-weight: normal;
         font-style: normal;
         font-display: block;
      }

      .slider {
         width: 560px;
         height: 400px;
         overflow: hidden;
      }

      .slider-wrapper {
         width: 100%;
         height: 320px;
      }

      .slider-wrapper img {
         width: 100%;
         height: 100%;
         display: block;
      }

      .slider-footer p {
         margin: 0;
         color: #fff;
         font-size: 18px;
         margin-bottom: 10px;
      }

      .slider-footer {
         height: 80px;
         background-color: rgb(72, 131, 213);
         padding: 12px 12px 0 12px;
         position: relative;
      }

      ul {
         display: flex;
         align-items: center;
      }

      .toggle {
         position: absolute;
         right: 0;
         top: 12px;
         display: flex;
      }

      ul li {
         width: 8px;
         height: 8px;
         margin: 4px;
         border-radius: 50%;
         background-color: #fff;
         opacity: 0.4;
         cursor: pointer;
      }

      ul .active {
         width: 12px;
         height: 12px;
         opacity: 1;
      }
   </style>

</head>

<body>

   <div class="slider">
      <div class="slider-wrapper">
         <img src="img/1.jpg" alt="">
      </div>
      <div class="slider-footer">
         <p>哆啦A梦1</p>
         <ul>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
         </ul>
         <div class="toggle">
            <button class="prev">&lt;</button>
            <button class="next">&gt;</button>
         </div>
      </div>

   </div>


   <script>
      const sliderData = [
         { url: 'img/1.jpg', title: '哆啦A梦1', color: 'rgb(72, 131, 213)' },
         { url: 'img/2.jpg', title: '哆啦A梦2', color: 'rgb(43,35,26)' },
         { url: 'img/3.jpg', title: '哆啦A梦3', color: 'rgb(36,3,31)' },
         { url: 'img/4.jpg', title: '哆啦A梦4', color: 'rgb(166,131,143)' }
      ]

      function getRandom(m, n) {
         return Math.floor(Math.random() * (n - m + 1)) + m
      }

      const random = getRandom(0, 3)
      const img = document.querySelector('.slider-wrapper img')
      const p = document.querySelector('.slider-footer p')
      const footer = document.querySelector('.slider-footer')
      document.querySelector(`ul li:nth-child(${1})`).classList.add('active')

      let i = 0
      setInterval(function () {
         i++
         img.src = sliderData[i % 4].url
         p.innerHTML = sliderData[i % 4].title
         footer.style.backgroundColor = sliderData[i % 4].color
         document.querySelector(`ul li:nth-child(${((i - 1) % 4) + 1})`).classList.remove('active')
         document.querySelector(`ul li:nth-child(${(i % 4) + 1})`).classList.add('active')
      }, 1000)
   </script>
</body>

</html>

效果:

此案例有一个缺陷,点击页面无法与用户交互,这就用到了事件监听

事件监听

什么是事件

编程时系统内发生的动作,比如单机一个按钮

监听即一旦有事件触发立即调用一个函数做出响应也称绑定事件

语法:

元素对象.addEventListener('事件类型',要执行的函数)

事件源:哪个DOM元素被触发,就获取这个元素

事件类型:用什么方式触发,鼠标点击click,鼠标经过mouseover等

调用函数:要做什么事

点击即可弹出对话框

事件类型

鼠标事件(click鼠标经过,mouseenter点击和mouseleave离开)

焦点事件(focus获得焦点,blur失去焦点)

键盘事件(Keydown键盘按下和Keyup抬起)

文本事件(input用户输入事件)

由此,可以得到完整轮播图

<!DOCTYPE html>
<html lang="en">

<head>
   <meta charset="UTF-8">
   <meta http-equiv="X-UA-Compatible" content="IE=edge">
   <meta name="viewport"
      content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">

   <title>~</title>

   <link rel="shortcut icon" href="https://www.bilibili.com/favicon.ico">
   <link rel="stylesheet" href="css/初始化表.css">
   <link rel="stylesheet" href="css/index.css">
   <meta name="keywords" content="..." />
   <style>
      /*写代码时始终要考虑权重问题!*/

      @font-face {
         font-family: 'icomoon';
         src: url('fonts/icomoon.eot?au9n7q');
         src: url('fonts/icomoon.eot?au9n7q#iefix') format('embedded-opentype'),
            url('fonts/icomoon.ttf?au9n7q') format('truetype'),
            url('fonts/icomoon.woff?au9n7q') format('woff'),
            url('fonts/icomoon.svg?au9n7q#icomoon') format('svg');
         font-weight: normal;
         font-style: normal;
         font-display: block;
      }

      .slider {
         width: 560px;
         height: 400px;
         overflow: hidden;
      }

      .slider-wrapper {
         width: 100%;
         height: 320px;
      }

      .slider-wrapper img {
         width: 100%;
         height: 100%;
         display: block;
      }

      .slider-footer p {
         margin: 0;
         color: #fff;
         font-size: 18px;
         margin-bottom: 10px;
      }

      .slider-footer {
         height: 80px;
         background-color: rgb(72, 131, 213);
         padding: 12px 12px 0 12px;
         position: relative;
      }

      ul {
         display: flex;
         align-items: center;
      }

      .toggle {
         position: absolute;
         right: 0;
         top: 12px;
         display: flex;
      }

      ul li {
         width: 8px;
         height: 8px;
         margin: 4px;
         border-radius: 50%;
         background-color: #fff;
         opacity: 0.4;
         cursor: pointer;
      }

      ul .active {
         width: 12px;
         height: 12px;
         opacity: 1;
      }

      .toggle {
         right: 0;
         top: 12px;

      }

      .toggle button {
         margin-right: 10px;
         width: 28px;
         height: 28px;
         border: none;
         background: rgba(255,255,255,0.1);
         color: #fff;
         border-radius: 4px;
         cursor: pointer;
         appearance: none;
      }

      .toggle button:hover {
         background: rgba(255,255,255,0.2);
      }

   </style>

</head>

<body>

   <div class="slider">
      <div class="slider-wrapper">
         <img src="img/1.jpg" alt="">
      </div>
      <div class="slider-footer">
         <p>哆啦A梦1</p>
         <ul>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
         </ul>
         <div class="toggle">
            <button class="prev">&lt;</button>
            <button class="next">&gt;</button>
         </div>
      </div>

   </div>

   <script>

      const sliderData = [
         { url: 'img/1.jpg', title: '哆啦A梦1', color: 'rgb(72, 131, 213)' },
         { url: 'img/2.jpg', title: '哆啦A梦2', color: 'rgb(43,35,26)' },
         { url: 'img/3.jpg', title: '哆啦A梦3', color: 'rgb(36,3,31)' },
         { url: 'img/4.jpg', title: '哆啦A梦4', color: 'rgb(166,131,143)' }
      ]

      const img = document.querySelector('.slider-wrapper img')
      const p = document.querySelector('.slider-footer p')
      const footer = document.querySelector('.slider-footer')
      const next = document.querySelector('.next')
      const prev = document.querySelector('.prev')
      const slider = document.querySelector('.slider')
      document.querySelector(`ul li:nth-child(${1})`).classList.add('active')

      let n=setInterval(function () {
         next.click()
      }, 900)

      let i = 0
      
      prev.addEventListener('click',function(){
         i--
         i=i<0?sliderData.length-1:i
         img.src = sliderData[i % 4].url
         p.innerHTML = sliderData[i % 4].title
         footer.style.backgroundColor = sliderData[i % 4].color
         document.querySelector(`ul li:nth-child(${((i + 1) % 4) + 1})`).classList.remove('active')
         document.querySelector(`ul li:nth-child(${(i % 4) + 1})`).classList.add('active')
      })

      next.addEventListener('click',function(){
         i++
         img.src = sliderData[i % 4].url
         p.innerHTML = sliderData[i % 4].title
         footer.style.backgroundColor = sliderData[i % 4].color
         document.querySelector(`ul li:nth-child(${((i - 1) % 4) + 1})`).classList.remove('active')
         document.querySelector(`ul li:nth-child(${(i % 4) + 1})`).classList.add('active')
      })


      slider.addEventListener('mouseenter',function(){
         clearInterval(n)
      })

      slider.addEventListener('mouseleave',function(){
         n=setInterval(function () {
         next.click()
      }, 900)
      })

   </script>
</body>

</html>

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

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

相关文章

如何在电脑和 SD 卡上恢复已删除 MOV等视频文件

MOV 是 Apple 创建的多媒体容器。您可能已经意识到&#xff0c;用 macOS QuickTime Player 录制的视频是以 MOV 格式保存的&#xff0c;而且 MOV 在 Windows 上也兼容。我们可能已经保存了很多 MOV 格式的视频。但是&#xff0c;如果这些 MOV 文件丢失或被意外删除怎么办&#…

Python二级考试笔记

Python二级考试笔记【源源老师】 01. 字符串 1. 常规功能合集 字符串本身有一些功能&#xff0c;有些之前运用过&#xff0c;这里总结如下&#xff1a; # 功能一&#xff1a;判断字符串类型 print(type("Hello")) print(str(123)) # 转换# 功能二&#xff1a;连…

OpenCV Mat实例详解 一

OpenCV中的Mat是一个类&#xff0c;它用存储图像信息。由两部分数据组成&#xff1a;矩阵头和像素值矩阵。矩阵头包含矩阵尺寸、存储方法、存储地址等信息&#xff0c;而像素值矩阵则存储实际的像素值数据。 Mat类在OpenCV中有十分重要的作用&#xff0c;图像信息的载入、保存、…

【知识图谱--第三讲知识图谱的存储与查询】

知识图谱的存储与查询 基于关系型数据库的知识图谱存储基于原生图数据库的知识图谱存储原生图数据库实现原理浅析 基于关系型数据库的知识图谱存储 基于原生图数据库的知识图谱存储 原生图数据库实现原理浅析

每日一题——LeetCode1437.是否所有1都至少相隔k个元素

方法一 两次遍历&#xff1a; 第一次遍历保存所有1的位置到res里&#xff0c;第二次遍历res检查是否所有相邻元素之间间隔都>k var kLengthApart function(nums, k) {let res[]for(let i0;i<nums.length;i){if(nums[i]1){res.push(i)}}for(let i1;i<res.length;i){…

Python 中实现线性搜索算法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站零基础入门的AI学习网站~。 前言 线性搜索算法&#xff0c;也称为顺序搜索算法&#xff0c;是一种简单但常用的搜索技术&#xff0c;用于查…

VMwareWorkstation17.0虚拟机安装Windows2.03完整详细步骤图文教程

VMwareWorkstation17.0虚拟机安装Windows2.03完整详细步骤图文教程 第一篇 下载Windows2.03第二篇 配置Windows2.03虚拟机机器环境第三篇 启动Windows2.03系统 第一篇 下载Windows2.03 1.Windows2.0原版软盘下载地址是 暂不提供&#xff0c;后续更新 2.Windows2.03虚拟机镜像下…

P1228 地毯填补问题题解

题目 相传在一个古老的阿拉伯国家里&#xff0c;有一座宫殿。宫殿里有个四四方方的格子迷宫&#xff0c;国王选择驸马的方法非常特殊&#xff0c;也非常简单&#xff1a;公主就站在其中一个方格子上&#xff0c;只要谁能用地毯将除公主站立的地方外的所有地方盖上&#xff0c;…

MATLAB知识点:poissrnd函数(★★☆☆☆)生成泊松分布的随机数

讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 节选自第3章&#xff1a;课后习题讲解中拓展的函数 在讲解第三…

开源PDF工具 Apache PDFBox 认识及使用(知识点+案例)

文章目录 前言源码获取一、认识PDFBox二、导入依赖三、基础功能demo1&#xff1a;读取pdf所有内容demo2&#xff1a;读取所有页内容&#xff08;分页&#xff09;demo3&#xff1a;添加页眉、页脚demo4&#xff1a;添加居中45文字水印demo5&#xff1a;添加图片到右上角 参考文…

(四)【Jmeter】 JMeter的界面布局与组件概述

JMeter的界面布局 中文版&#xff1a; 英文版&#xff1a; JMeter的主界面包括菜单栏、工具栏、树形结构面板、视图面板等部分。 菜单栏&#xff1a;菜单栏包含了文件(File)、编辑(Edit)、查找(Search)、选项(Options)、工具(Tools)、帮助(Help)等菜单项&#xff0c;用于对…

WordPress作者页面链接的用户名自动变成16位字符串串插件Smart User Slug Hider

WordPress默认的作者页面URL链接地址格式为“你的域名/author/admin”&#xff0c;其中admin就是你的用户名&#xff0c;这样的话就会暴露我们的用户名。 为了解决这个问题&#xff0c;前面boke112百科跟大家分享了『如何将WordPress作者存档链接中的用户名改为昵称或ID』一文…

推荐在线图像处理程序源码

对于喜爱图像编辑的朋友们来说&#xff0c;Photoshop无疑是处理照片的利器。然而&#xff0c;传统的Photoshop软件不仅需要下载安装&#xff0c;还对电脑配置有一定的要求&#xff0c;这无疑增加了使用的门槛。 现在&#xff0c;我们为您带来一款革命性的在线PS修图工具——基…

紫微斗数双星组合:廉贞破军在卯酉

文章目录 前言内容总结 前言 紫微斗数双星组合&#xff1a;廉贞破军在卯酉 内容 紫微斗数双星组合&#xff1a;廉贞破军在卯酉 性格分析 廉贞星、破军星二星同宫&#xff0c;具有冒险开创的精神和领导能力&#xff0c;忍耐力强&#xff0c;工作积极稳重&#xff0c;冲劲大&a…

(17)Hive ——MR任务的map与reduce个数由什么决定?

一、MapTask的数量由什么决定&#xff1f; MapTask的数量由以下参数决定 文件个数文件大小blocksize 一般而言&#xff0c;对于每一个输入的文件会有一个map split&#xff0c;每一个分片会开启一个map任务&#xff0c;很容易导致小文件问题&#xff08;如果不进行小文件合并&…

软件实例分享,药店进销存软件医药系统进销存教程

软件实例分享&#xff0c;药店进销存软件医药系统进销存教程 一、前言 以下软件程序教程以 佳易王药店进销存管理系统V16.0为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 软件可以对药品的有效期进行管理&#xff0c;可以查询还有多少天到期的…

如何查找Windows的桌面文件夹?这里提供详细步骤

当你的电脑上有不同的用户时&#xff0c;Windows 11、10、…上的桌面文件夹或桌面目录特别有用&#xff0c;那么哪里才是真正的桌面文件夹目录。 自己的Windows桌面目录 1、启动Windows资源管理器 2、按F4键并输入%UserProfile% 3、点击桌面 这是你个人桌面的正确文件夹路径…

【数据分享】1980s~2020年青藏高原中分辨率土地覆被数据

各位同学们好&#xff0c;今天和大伙儿分享的是1980s~2020年青藏高原中分辨率土地覆被数据。如果大家有下载处理数据等方面的问题&#xff0c;您可以私信或评论。 吴炳方. (2023). 青藏高原中分辨率土地覆被数据&#xff08;1980s-2020&#xff09;. 国家青藏高原数据中心. 1 …

【STM32 CubeMX】I2C查询方式

文章目录 前言一、CubeMX配置IIC二、查询方式的使用2.1 分析一种情况2.2 Master模式2.3 Mem模式 总结 前言 在STM32 CubeMX环境中&#xff0c;I2C&#xff08;Inter-Integrated Circuit&#xff09;通信协议的查询方式是一种简单而常见的通信方式。通过查询方式&#xff0c;微…

【并发编程】AQS原理

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;并发编程 ⛺️稳中求进&#xff0c;晒太阳 1. 概述 全称是 AbstractQueuedSynchronizer&#xff0c;是阻塞式锁和相关的同步器工具的框架 特点&#xff1a; 用 state 属性来表示资源的状…