首页 > 编程语言 >javascrpt 监听元素变化的两个API

javascrpt 监听元素变化的两个API

时间:2022-12-05 09:57:46浏览次数:45  
标签:const javascrpt flag API div document true 监听

<!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>
  </head>
  <body style="height: 600vh">
    <div id="div" style="width: 300px; height: 300px; background: #c7e"></div>
    <button id="btn1">测试</button>
    <script>
      const div = document.querySelector("#div");
      const btn1 = document.querySelector("#btn1");

      // 监听元素改变
      let flag = true;
      btn1.addEventListener("click", () => {
        if (flag) {
          div.style.height = "200px";
          flag = false;
          const el = document.createElement("span");
          el.innerText = "hello world";
          div.appendChild(el);
        } else {
          div.style.height = "300px";
          flag = true;
          div.removeChild(document.querySelector("div span"));
        }
      });

      const observerOptions = {
        childList: true, // 观察目标子节点的变化,是否有添加或者删除
        attributes: true, // 观察属性变动
        subtree: true, // 观察后代节点,默认为 false
      };

      function callback(a, s) {
        console.log(a, s);
      }

      const observer = new MutationObserver(callback);
      observer.observe(div, observerOptions);

      // 监听元素进入可视区域
      const cb = (entries) => {
        // 显示为true, 隐藏为false
        console.log(entries[0].isIntersecting);
      };

      const intersectionObserver = new IntersectionObserver(cb);
      intersectionObserver.observe(div);
    </script>
  </body>
</html>
MutationObserver 用于监听元素的自身属性内容的一些变化
IntersectionObserver 用于监听元素的显示与隐藏(虚拟滚动原理)
 

标签:const,javascrpt,flag,API,div,document,true,监听
From: https://www.cnblogs.com/fmg0224/p/16951517.html

相关文章

  • .NET Platform Extensions是一套.Net官方的API集合
    .NETPlatformExtensions是一套.Net官方的API集合什么是Microsoft.Extensions.NETPlatformExtensions是一套.Net官方的API集合,提供了一些常用的编程模式和实用工具,例......
  • 十二、listener监听器
    1、创建监听器,实现监听器接口packagecom.lyh.listener;​importjavax.servlet.ServletContext;importjavax.servlet.http.HttpSessionEvent;importjavax.servlet.......
  • 十三、过滤器,监听器的常见应用
    十三、过滤器,监听器的常见应用用户登录之后,向Session中放入用户的数据进入主页面的时候要判断用户是否已经登录;要求:在过滤器中实现@OverridepublicvoiddoFilter(......
  • 记录使用 aws lambda +apigateway 过程中遇到的问题
    我希望创建一个api-gatewayhttpapi,把$default路由全发给一个lambda函数。SAM配置:...Events:ExplicitApi:#warning:createsapublicendpoint......
  • MiniAPI:.NET7 Preview4之MiniAPI更新总览
    一觉醒来,发现微软带来了.NET7Preview4的更新,本次更新关于MiniAPI的还不少,难以掩饰的喜悦心情,促使我尽快把这个消息分享给大家,那下来我们看一下一共带来了哪些关于MiniA......
  • Quartz使用监听器插入定时任务执行日志
    Quartz使用监听器插入定时任务执行日志使用springboot,将监听器交给spring容器管理,并像其中注入日志服务类,环境准备工作实现任务调度需要导入两个quartz的maven依赖<depen......
  • web APIs-day01-简介js学习
       ......
  • .NET7之MiniAPI(特别篇):.NET7 Preview3
    .NET7的第三个预览版发布了,同样带来了miniapi的更新,这次带来了路由过滤器,与mvc版的action过滤器相似。具体见https://devblogs.microsoft.com/dotnet/asp-net-core-up......
  • .NET7之MiniAPI(特别篇):.NET7 Preview3
    .NET7的第三个预览版发布了,同样带来了miniapi的更新,这次带来了路由过滤器,与mvc版的action过滤器相似。具体见https://devblogs.microsoft.com/dotnet/asp-net-core-u......
  • .NET7之MiniAPI(特别篇):.NET7 Preview3
    .NET7的第三个预览版发布了,同样带来了miniapi的更新,这次带来了路由过滤器,与mvc版的action过滤器相似。具体见https://devblogs.microsoft.com/dotnet/asp-net-core-u......