深圳骏域网站建设专家/aso优化app推广

深圳骏域网站建设专家,aso优化app推广,wordpress inove,网站建设与管理自考试题及答案本文系统介绍DOM相关的22个核心概念,每个知识点均提供代码示例及简要说明,帮助开发者全面掌握DOM操作技巧。 一、DOM基础概念 1. DOM概念 DOM(Document Object Model)是HTML/XML的编程接口,通过JavaScript可动态修改…

本文系统介绍DOM相关的22个核心概念,每个知识点均提供代码示例及简要说明,帮助开发者全面掌握DOM操作技巧。


一、DOM基础概念

1. DOM概念

DOM(Document Object Model)是HTML/XML的编程接口,通过JavaScript可动态修改页面内容。

const element = document.getElementById("myElement");
element.textContent = "Hello DOM!";

2. 虚拟DOM

虚拟DOM是真实DOM的轻量级表示,用于优化渲染性能(如React)。

// React组件示例
function App() {return <div>Virtual DOM</div>;
}

3. 对象与标签

DOM元素是JavaScript对象,可通过API操作标签属性。

const img = document.createElement("img");
img.src = "logo.png";
document.body.appendChild(img);

4. 定时器

使用setTimeoutsetInterval控制代码执行时机。

setTimeout(() => {console.log("延迟1秒执行");
}, 1000);

5. 代理/分流(事件委托)

通过父元素代理子元素的事件处理。

document.getElementById("list").addEventListener("click", (e) => {if (e.target.tagName === "LI") {console.log("点击了列表项:", e.target.textContent);}
});

6. 事件降频(防抖与节流)

限制高频事件触发次数。

// 防抖
function debounce(func, delay) {let timeout;return (...args) => {clearTimeout(timeout);timeout = setTimeout(() => func.apply(this, args), delay);};
}
window.addEventListener("resize", debounce(() => console.log("窗口调整"), 200));

7. 物理模拟

实现简单动画效果,如元素下落。

let pos = 0;
const ball = document.getElementById("ball");
function animate() {pos += 5;ball.style.top = pos + "px";if (pos < 300) requestAnimationFrame(animate);
}
animate();

8. 重绘/重排

修改DOM属性触发浏览器重新渲染。

// 触发重排(修改布局)
element.style.width = "200px";
// 触发重绘(修改颜色)
element.style.backgroundColor = "red";

二、节点与事件

9. 节点与遍历树

遍历DOM树结构。

const children = document.body.childNodes;
children.forEach(child => console.log(child.nodeName));

10. 节点增删改查

动态操作节点。

const newDiv = document.createElement("div");
document.body.appendChild(newDiv);
document.body.removeChild(newDiv);

11. Event事件

绑定点击事件。

button.addEventListener("click", () => alert("按钮被点击"));

12. 监听器

添加和移除事件监听。

const handler = () => console.log("事件触发");
element.addEventListener("mouseover", handler);
element.removeEventListener("mouseover", handler);

13. 事件冒泡

阻止事件冒泡。

childElement.addEventListener("click", (e) => {e.stopPropagation();
});

14. 行为锁

防止重复提交(如按钮点击)。

let isLocked = false;
button.addEventListener("click", () => {if (isLocked) return;isLocked = true;// 执行操作setTimeout(() => isLocked = false, 1000);
});

15. 碰撞检测

检测两个元素是否重叠。

function isColliding(el1, el2) {const rect1 = el1.getBoundingClientRect();const rect2 = el2.getBoundingClientRect();return !(rect1.right < rect2.left || rect1.left > rect2.right || rect1.bottom < rect2.top || rect1.top > rect2.bottom);
}

三、GUI与交互

16. GUI渲染行为

使用requestAnimationFrame优化动画。

function animate() {element.style.left = (pos += 2) + "px";requestAnimationFrame(animate);
}
animate();

17. 位置与偏移

获取元素位置信息。

const offsetTop = element.offsetTop;
const offsetLeft = element.offsetLeft;

18. 鼠标/键盘事件

监听用户输入。

document.addEventListener("mousemove", (e) => {console.log(`鼠标位置:${e.clientX}, ${e.clientY}`);
});
document.addEventListener("keydown", (e) => {console.log("按下按键:", e.key);
});

19. 事件委托

动态子元素的事件处理。

document.querySelector(".container").addEventListener("click", (e) => {if (e.target.classList.contains("item")) {console.log("点击了子元素");}
});

20. 默认行为

阻止表单默认提交。

form.addEventListener("submit", (e) => {e.preventDefault();// 自定义提交逻辑
});

21. 运动框架

实现平滑动画。

function moveElement(element, targetPos, duration) {const startPos = parseInt(element.style.left) || 0;const distance = targetPos - startPos;let startTime = null;function step(timestamp) {if (!startTime) startTime = timestamp;const progress = timestamp - startTime;element.style.left = startPos + (distance * Math.min(progress/duration, 1)) + "px";if (progress < duration) requestAnimationFrame(step);}requestAnimationFrame(step);
}

22. 拖拽模组

实现元素拖拽功能。

let isDragging = false;
element.addEventListener("mousedown", () => isDragging = true);
document.addEventListener("mousemove", (e) => {if (!isDragging) return;element.style.left = e.clientX + "px";element.style.top = e.clientY + "px";
});
document.addEventListener("mouseup", () => isDragging = false);

总结

DOM是前端开发的核心,涵盖节点操作、事件处理、动画优化等关键领域。掌握这些知识点后,开发者可以更高效地实现复杂交互,并通过虚拟DOM、事件委托、防抖节流等技术优化性能。建议结合具体场景深入实践,以提升Web应用的流畅性与用户体验。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Map vs Set】:Java数据存储的“双子星”对决

个人主页&#xff1a;♡喜欢做梦 欢迎 &#x1f44d;点赞 ➕关注 ❤️收藏 &#x1f4ac;评论 目录 &#x1f370;一、搜索 &#x1f36e;1.概念 &#x1f36e;2.模型 &#x1f370;二、Map &#x1f368;1.什么是Map&#xff1f; &#x1f368;2.Map的实例化 &…

【C语言 】C语言 桌游开发数字竞拍(源码)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;专__注&#x1f448;&#xff1a;专注主流机器人、人工智能等相关领域的开发、测试技术。 【C语言 】C语言 桌游开发数字竞拍&#xff08;源码…

Reinforcement Learning Heats Up 强化学习持续升温

Reinforcement Learning Heats Up 强化学习持续升温 核心观点&#xff1a;强化学习正成为构建具有高级推理能力大语言模型&#xff08;LLMs&#xff09;的重要途径。 最新进展 模型示例&#xff1a;近期出现了如DeepSeek - R1及其变体&#xff08;DeepSeek - R1 - Zero&#xf…

Whisper+T5-translate实现python实时语音翻译

1.首先下载模型&#xff0c;加载模型 import torch import numpy as np import webrtcvad import pyaudio import queue import threading from datetime import datetime from faster_whisper import WhisperModel from transformers import AutoTokenizer, AutoModelForSeq2…

湖仓分析|浙江霖梓基于 Doris + Paimon 打造实时/离线一体化湖仓架构

导读&#xff1a;浙江霖梓早期使用 CDH 产品套件搭建了大数据系统&#xff0c;面临业务逻辑冗余、查询效率低下等问题&#xff0c;基于 Apache Doris 进行整体架构与表结构的重构&#xff0c;并基于湖仓一体和查询加速展开深度探索与实践&#xff0c;打造了 Doris Paimon 的实…

Jmeter压测怎么控制TPS

压测固定TPS的接口 有些任务需要我们控制接口的TPS&#xff0c;例如每秒请求一次。 TPS定时器 然后1个并发持续运行 压测结果 需要注意TPS在1.0/s左右&#xff0c;有时可能是1.2、1.3&#xff0c;定时器会自动调整压力&#xff0c;让TPS保持在1.0左右。

信呼OA办公系统sql注入漏洞分析

漏洞描述 信呼OA办公系统uploadAction存在SQL注入漏洞&#xff0c;攻击者可利用该漏洞获取数据库敏感信息。 环境搭建 源码下载地址&#xff1a;https://github.com/rainrocka/xinhu 下载后解压到本地网站根目录下&#xff0c;配置好数据库&#xff0c;然后安装即可 默认密…

一文深入了解DeepSeek-R1:模型架构

本文深入探讨了 DeepSeek-R1 模型架构。让我们从输入到输出追踪 DeepSeek-R1 模型&#xff0c;以找到架构中的新发展和关键部分。DeepSeek-R1 基于 DeepSeek-V3-Base 模型架构。本文旨在涵盖其设计的所有重要方面。 &#x1f4dd; 1. 输入上下文长度 DeepSeek-R1的输入上下文长…

算法兵法全略(译文)

目录 始计篇 谋攻篇 军形篇 兵势篇 虚实篇 军争篇 九变篇 行军篇 地形篇 九地篇 火攻篇 用间篇 始计篇 算法&#xff0c;在当今时代&#xff0c;犹如国家关键的战略武器&#xff0c;也是处理各类事务的核心枢纽。算法的世界神秘且变化万千&#xff0c;不够贤能聪慧…

开关电源实战(一)宽范围DC降压模块MP4560

系列文章目录 文章目录 系列文章目录MP4560MP4560 3.8V 至 55V 的宽输入范围可满足各种降压应用 MOSFET只有250mΩ 输出可调0.8V-52V SW:需要低VF肖特基二极管接地,而且要靠近引脚,高压侧开关的输出。 EN:输入使能,拉低到阈值以下关闭芯片,拉高或浮空启动 COMP:Compens…

微软AutoGen高级功能——Magentic-One

介绍 大家好&#xff0c;博主又来给大家分享知识了&#xff0c;这次给大家分享的内容是微软AutoGen框架的高级功能Magentic-One。那么它是用来做什么的或它又是什么功能呢&#xff0c;我们直接进入正题。 Magentic-One Magnetic-One是一个通用型多智能体系统&#xff0c;用于…

DeepSeek是如何通过“蒸馏”技术打造自己的AI模型

1 引言&#xff1a; 最近&#xff0c;外媒对中国公司——DeepSeek进行了猛烈抨击&#xff0c;指控其采用了所谓的“蒸馏”&#xff08;Distillation&#xff09;技术&#xff0c;涉嫌抄袭甚至作弊。那么&#xff0c;什么是“蒸馏”技术&#xff1f; 在人工智能领域&#xff0c;…

【广州大学主办,发表有保障 | IEEE出版,稳定EI检索,往届见刊后快至1个月检索】第二届电气技术与自动化工程国际学术会议 (ETAE 2025)

第二届电气技术与自动化工程国际学术会议 (ETAE 2025) The 2nd International Conference on Electrical Technology and Automation Engineering 大会官网&#xff1a;http://www.icetae.com/【更多详情】 会议时间&#xff1a;2025年4月25-27日 会议地点&#xff1a…

伯克利 CS61A 课堂笔记 08 —— Strings and Dictionaries

本系列为加州伯克利大学著名 Python 基础课程 CS61A 的课堂笔记整理&#xff0c;全英文内容&#xff0c;文末附词汇解释。 目录 01 Strings 字符串 Ⅰ Strings are An Abstraction. Ⅱ Strings Literals have Three Forms Ⅲ String are Sequences 02 Dictionaries 字典 …

基于 GEE 计算研究区年均地表温度数据

目录 1 代码解析 2 完整代码 3 运行结果 1 代码解析 &#xff08;1&#xff09;定义研究区&#xff1a; // 研究区的范围需要自己提前上传 var dataset table;// 将研究区显示在中心&#xff0c;后面的数字为缩放等级&#xff0c;范围从1 - 24 Map.centerObject(dataset,…

日常知识点之遗留问题梳理(定时器/时间轮定时器)

1&#xff1a;简单基础 定时器的核心知识点&#xff0c;对我来说就是获取当前时间和设置回调函数。 简单练习&#xff1a; ​ c语言通过gettimeofday 获取当前时间并进行处理 ​ 回调函数的定义&#xff08;函数参数有必要适当存储&#xff09; typedef void(Timerfunc)(vo…

Python + WhisperX:解锁语音识别的高效新姿势

大家好&#xff0c;我是烤鸭&#xff1a; 最近在尝试做视频的质量分析&#xff0c;打算利用asr针对声音判断是否有人声&#xff0c;以及识别出来的文本进行进一步操作。asr看了几个开源的&#xff0c;最终选择了openai的whisper&#xff0c;后来发现性能不行&#xff0c;又换了…

mapbox 从入门到精通 - 目录

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;mapbox 从入门到精通 文章目录 一、&#x1f340;总目录1.1 ☘️ mapbox基础1.2 ☘️…

sqlilabs--小实验

一、先盲注判断 ?id1 and sleep(2)-- 如果发现页面存在注点&#xff0c;使用时间盲注脚本进行注入 import requestsdef inject_database(url):name for i in range(1, 20): # 假设数据库名称长度不超过20low 48 # 0high 122 # zmiddle (low high) // 2while low &l…

【数字】异步FIFO面试的几个小问题与跨时钟域时序约束

入门数字设计的时候&#xff0c;跨时钟域的数据处理是绕不开的课题&#xff0c;特别是多比特数据跨时钟域时&#xff0c;都会采用异步FIFO的方法。 异步FIFO中涉及较多的考点这里记录几个以供大家参考。 1. 异步FIFO的空满判断分别在哪个域&#xff1f; 根据异步FIFO的结构&…