首页 > 编程语言 >黑马pink JavaScript学习笔记_Web APIs Day2

黑马pink JavaScript学习笔记_Web APIs Day2

时间:2024-07-23 22:08:10浏览次数:15  
标签:pink Web APIs color height slider querySelector function document

事件监听(绑定)

什么是事件?

事件是系统内发生的动作或者发生的事情。比如:用户点击页面上的一个按钮。

什么是事件监听?

就是让程序检测是否有事件产生,一旦有事件触发,就立即调用一个函数做出响应,也称为注册事件

比如:鼠标经过的时候,弹出一个alert“鼠标经过了~”

语法

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

事件监听三要素:

  • 事件源:哪个DOM元素被触发了
  • 事件类型:什么方式触发?比如:点击click, 鼠标经过mouseenter, 鼠标离开 mouseleave
  • 事件调用的函数:要做什么事情
//鼠标离开,开启定时器
bigBox.addEventListener('mouseleave', function () {
    //先关闭之前的定时器
    clearInterval(timerId);
    //再开启定时器
    timerId = setInterval(function () {
        next.click();
    }, 1000)
})

案例:随机点名案例

image-20240723214550319

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        h2 {
            text-align: center;
        }

        .box {
            width: 600px;
            margin: 50px auto;
            display: flex;
            font-size: 25px;
            line-height: 40px;
        }

        .qs {

            width: 450px;
            height: 40px;
            color: red;

        }

        .btns {
            text-align: center;
        }

        .btns button {
            width: 120px;
            height: 35px;
            margin: 0 50px;
        }
    </style>
</head>

<body>
    <h2>随机点名</h2>
    <div class="box">
        <span>名字是:</span>
        <div class="qs">这里显示姓名</div>
    </div>
    <div class="btns">
        <button class="start">开始</button>
        <button class="end">结束</button>
    </div>

    <script>
        // 数据数组
        let arr = ['马超', '黄忠', '赵云', '关羽', '张飞']
        let timerId = 0;
        let random = 0;

        //开始按钮模块
        const start = document.querySelector(".start");
        const qs = document.querySelector(".qs");

        start.addEventListener("click", function () {
            timerId = setInterval(function () {
                random = Math.floor(Math.random() * arr.length);
                qs.innerHTML = arr[random];
            }, 50)

            if (arr.length === 1) {
                start.disabled = true;
                end.disabled = true;
            }
        })

        //结束按钮模块
        const end = document.querySelector(".end");
        end.addEventListener('click', function () {
            clearInterval(timerId);

            arr.splice(random, 1);
            console.log(arr);

        })
    </script>
</body>

</html>

image-20240723202945723

image-20240723203021562

事件类型

image-20240723214654888

案例:轮播图点击切换

image-20240723214740602

<!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" />
  <title>轮播图点击切换</title>
  <style>
    * {
      box-sizing: border-box;
    }

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

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

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

    .slider-footer {
      height: 80px;
      background-color: rgb(100, 67, 68);
      padding: 12px 12px 0 12px;
      position: relative;
    }

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

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

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

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

    .slider-indicator {
      margin: 0;
      padding: 0;
      list-style: none;
      display: flex;
      align-items: center;
    }

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

    .slider-indicator li.active {
      width: 12px;
      height: 12px;
      opacity: 1;
    }
  </style>
</head>

<body>
  <div class="slider">
    <div class="slider-wrapper">
      <img src="./images/slider01.jpg" alt="" />
    </div>
    <div class="slider-footer">
      <p>对人类来说会不会太超前了?</p>
      <ul class="slider-indicator">
        <li class="active"></li>
        <li></li>
        <li></li>
        <li></li>
        <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>
    // 1. 初始数据
    const sliderData = [
      { url: './images/slider01.jpg', title: '对人类来说会不会太超前了?', color: 'rgb(100, 67, 68)' },
      { url: './images/slider02.jpg', title: '开启剑与雪的黑暗传说!', color: 'rgb(43, 35, 26)' },
      { url: './images/slider03.jpg', title: '真正的jo厨出现了!', color: 'rgb(36, 31, 33)' },
      { url: './images/slider04.jpg', title: '李玉刚:让世界通过B站看到东方大国文化', color: 'rgb(139, 98, 66)' },
      { url: './images/slider05.jpg', title: '快来分享你的寒假日常吧~', color: 'rgb(67, 90, 92)' },
      { url: './images/slider06.jpg', title: '哔哩哔哩小年YEAH', color: 'rgb(166, 131, 143)' },
      { url: './images/slider07.jpg', title: '一站式解决你的电脑配置问题!!!', color: 'rgb(53, 29, 25)' },
      { url: './images/slider08.jpg', title: '谁不想和小猫咪贴贴呢!', color: 'rgb(99, 72, 114)' },
    ]

    const img = document.querySelector(".slider-wrapper img");
    const p = document.querySelector('.slider-footer p');
    const prev = document.querySelector(".prev");
    const next = document.querySelector(".next");

    //下一页按钮
    let i = 0;
    next.addEventListener('click', function () {
      i++;

      //重置
      if (i >= sliderData.length) {
        i = 0;
      }

      toggle();
    })


    //上一页按钮
    prev.addEventListener('click', function () {
      i--;

      //重置
      if (i < 0) {
        i = 7;
      }

      toggle();
    })



    //自动播放
    let timerId = setInterval(function () {
      next.click();
    }, 1000)


    //鼠标经过,停止定时器
    const bigBox = document.querySelector('.slider');
    bigBox.addEventListener('mouseenter', function () {
      clearInterval(timerId);
    })


    //鼠标离开,开启定时器
    bigBox.addEventListener('mouseleave', function () {
      //先关闭之前的定时器
      clearInterval(timerId);
      //再开启定时器
      timerId = setInterval(function () {
        next.click();
      }, 1000)
    })



    //抽取公共方法
    function toggle() {
      //设置图片及标题
      img.src = sliderData[i].url;
      p.innerHTML = sliderData[i].title;

      //设置radio
      document.querySelector('.active').classList.remove('active');
      document.querySelector(`.slider-indicator li:nth-child(${i + 1})`).classList.add('active');//这里注意一下,也是i+1

      //设置底部背景色
      document.querySelector('.slider-footer').style.backgroundColor = sliderData[i].color;
    }

  </script>
</body>

</html>

标签:pink,Web,APIs,color,height,slider,querySelector,function,document
From: https://www.cnblogs.com/growingbambi/p/18319744

相关文章

  • Web开发:属性
    属性介绍全局属性特定元素属性超链接元素(<a>)图像元素(<img>)输入元素(<input>)表单元素(<form>)表格元素(<table>)其他元素段落元素(<p>)列表元素(<ul>,<ol>,<li>)新增的HTML5属性示例1.id和class属性2.href和target属性3.src......
  • 解锁Nginx日志的宝藏:GoAccess——你的实时、交互式Web日志分析神器!
    在当今数字化的时代,网站的流量和用户行为数据就像是一座蕴藏着无尽秘密的宝藏。而如何有效地挖掘和分析这些数据,成为了许多网站管理者和开发者头疼的问题。GoAccess,一款开源的实时Web日志分析工具,或许能为我们提供一扇窥探这些秘密的窗口。GoAccess:你的流量分析好帮手GoAccess......
  • WPF如何使用WebView,并且禁用F12和F5。
    客户端套浏览器壳,是如今比较浏览的客户端客户端开发方式。这篇文字简单来介绍一下如何在WPF中使用WebView安装WebView的nuget包可以直接执行安装命令Install-PackageMicrosoft.Web.WebView2。也可以通过nuget包管理器,安装Microsoft.Web.WebView2包。安装成功之后,改nuget......
  • Springboot整合WebSocket作为服务端遇到的坑
    最近遇到一个需求,对接某公有云上的坐席系统,需要接收人工坐席和客户对话的语音流,然后调用ASR(AutomaticSpeechRecognition,自动语音识别)引擎,对语音流实时转写,最后将实时转写的内容推送到kafka,供下游系统消费。大致流程图如下:标绿的系统即是我方需求对接系统。问题:上述前......
  • SpringBoot整合WebSocket实践
    简介先来看下维基百科WebSocket的简介:WebSocket是一种与HTTP不同的协议。两者都位于OSI模型的应用层,并且都依赖于传输层的TCP协议。虽然它们不同,但是RFC6455中规定:itisdesignedtoworkoverHTTPports80and443aswellastosupportHTTPproxiesandintermediaries......
  • 【待做】【渗透测试系列】Web渗透测试工具 - wscan
    刻刀|采用机器学习技术自动化的Web渗透测试工具-wscan介绍Wscan是一款专注于WEB安全的扫描器,我们的工具采用了机器学习技术实现了全自动化的Web渗透测试。https://github.com/chushuai/wscan2024.7.7新功能[1]支持常规log4j-rce漏洞检测[2]YamlPOC支持ldap_url和r......
  • 从零开始构建你的第一个Python Web应用
    在本文中,我们将带领你从零开始构建一个简单的PythonWeb应用。不需要任何先验知识,我们会一步步地指导你完成设置、框架选择、代码编写到部署的整个过程。无论你是Web开发新手还是希望扩展技能的老手,这篇文章都将为你提供一个实践操作的起点。一、前言随着互联网技术的飞速......
  • golang 构建Web服务器
    main.gopackagemainimport("fmt" "log" "net/http")funcloggingMiddleware(nexthttp.Handler)http.Handler{ returnhttp.HandlerFunc(func(whttp.ResponseWriter,r*http.Request){ log.Printf("%s%s\n"......
  • Net core Web Api 8.0连接sqlserver
    1.在appsettings文件配置连接字符串{    "ConnectionStrings":{        "DefaultConnection":"DataSource=Win10p22h2vm;InitialCatalog=UserInfo;UserID=sa;Password=123456;TrustServerCertificate=True"    },DataSource是连接数据的......
  • 高性能web站点
    1、组件分离1.1、DNS负载均衡不同的web内容分布到不同的服务器上,并划分子域,利用DNS将请求自然转移到不同的服务器上。主要可以分为两大内容:动态内容,CPU、IO密集型静态内容,IO密集型通过在DNS中配置多个A记录,将请求转移到集群中不同的服务器,这有助于具有地域性问题的大型......