前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >不容忽视的 8 个 DOM API

不容忽视的 8 个 DOM API

作者头像
前端小智@大迁世界
发布于 2023-08-16 00:15:31
发布于 2023-08-16 00:15:31
37200
代码可运行
举报
文章被收录于专栏:终身学习者终身学习者
运行总次数:0
代码可运行

文档对象模型(DOM)提供了许多强大的功能,在现代浏览器中无需外部依赖即可使用。在本文中,我们将探讨8个可能被忽视的DOM功能

1. 使用 addEventListener() 方法与 options

最常用的DOM方法之一是 addEventListener() ,它允许我们将事件监听器附加到元素上。除了事件类型和回调函数之外, addEventListener() 还接受一个 options 对象,允许我们定义其他属性。这些属性包括 captureoncepassive 。让我们进一步探讨它们。

capture

capture 属性是一个布尔值,用于确定事件处理程序在事件传播阶段中的执行顺序。当 capture 设置为 true 时,在到达目标元素之前,事件会在捕获阶段被捕获。如果设置为 false 或者省略,则事件会在冒泡阶段处理,即在事件到达目标元素之后。

once

once 属性是另一个布尔值。当设置为 true 时,表示事件监听器只会被触发一次,然后自动移除。这样就不需要使用 removeEventListener() 手动移除事件监听器了。

passive

passive 属性是一个布尔值,当设置为 true 时,表示事件监听器将永远不会调用 preventDefault() 方法,即使它包含在函数体中。这对于改善滚动和触摸事件处理程序的性能非常有用。

让我们来看一个使用 options 对象和 addEventListener() 的例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const button = document.getElementById('myButton');

button.addEventListener('click', handleClick, { once: true });
function handleClick(event) {
  console.log('Button clicked!');
}

在上面的例子中, handleClick 函数只会在按钮被点击时被调用一次,这要归功于将 once 属性设置为 true 。这样就不需要手动删除事件监听器了。

2. 使用 scrollTo() 方法实现平滑滚动

scrollTo() 方法于 window 对象,并指示浏览器滚动到页面上的指定位置。默认情况下, scrollTo() 执行突然滚动,类似于使用带有指定哈希URL的本地链接。然而,通过结合 ScrollToOptions 对象,我们可以实现平滑的动画滚动效果。

看一个例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
window.scrollTo({
  top: 1000,
  behavior: 'smooth'
});

在这个例子中,页面将平滑滚动到垂直位置 1000 像素。设置 behavior 属性为 'smooth' 确保滚动效果是动画的。如果 behavior 属性设置为 'auto' ,滚动将是突然的。

3. 与 classList 一起进行类操作

在JavaScript中,当与元素一起工作时,类操作是一项常见任务。 classList 属性提供了一组方法,简化了在元素上添加、删除和切换类的操作。

我们来探索一下 classList 属性上可用的一些方法:

  • add(className) :将一个类添加到元素的类列表中。
  • remove(className) :从元素的类列表中移除一个类。
  • toggle(className) :切换元素的类列表中的类的存在。
  • contains(className):检查元素是否具有特定的类。

这是一个使用这些方法的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const element = document.getElementById('myElement');

element.classList.add('active');
element.classList.remove('inactive');
element.classList.toggle('highlight');

console.log(element.classList.contains('active')); // true

在这个例子中,我们给 element 添加了类 'active' ,移除了类 'inactive' ,并切换了类 'highlight' 。然后, contains() 方法会检查元素是否具有类 'active'

4.matches() 元素匹配的方法

matches() 方法是一个强大的元素匹配工具。它允许我们检查一个元素是否与特定的CSS选择器匹配。

这是一个使用 matches() 方法的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const element = document.getElementById('myElement');

if (element.matches('.container .item')) {
  console.log('The element matches the selector');
} else {
  console.log('The element does not match the selector');
}

在这个例子中,我们检查 element 是否与选择器 .container .item 匹配。如果匹配,将记录第一条消息;否则,将记录第二条消息。

当你想根据元素是否匹配特定选择器执行某些操作时, matches() 方法非常有用。它消除了手动遍历DOM或使用复杂的CSS选择器匹配逻辑的需要。

5. 使用 dataset 访问和修改数据属性

数据属性提供了一种在HTML元素上存储自定义数据的方式。属性允许我们以编程的方式访问和操作元素上的数据属性。

考虑一个例子

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id="myElement" data-info="important"></div>

在这个例子中, <div> 元素具有一个名为 data-info 的数据属性,其值为 'important' 。我们可以使用 dataset 属性访问和修改这个数据属性。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const element = document.getElementById('myElement');

console.log(element.dataset.info); // 'important'
element.dataset.info = 'updated';
console.log(element.dataset.info); // 'updated'

在这个例子中,我们使用 dataset 属性访问 data-info 属性的值,并返回值 'important' 。我们还可以通过给 element.dataset.info 赋新值来修改该值。

6. 平滑动画的方法

在网页上为元素添加动画效果是一个常见的需求,但有时候也是一项具有挑战性的任务。 element.animate() API通过提供一种简单直接的方式来创建流畅且响应灵敏的动画,简化了这个过程。它允许我们对各种CSS属性进行动画处理,例如透明度、宽度、高度和变换,并且可以自定义时间和缓动函数。让我们来看一个例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const element = document.getElementById('myElement');

element.animate(
  [
    { opacity: 0, transform: 'scale(0.5)' },
    { opacity: 1, transform: 'scale(1)' }
  ],
  {
    duration: 1000,
    easing: 'ease-in-out',
    fill: 'both'
  }
)

在上面的例子中,我们将元素的不透明度和缩放从0.5动画到1,持续时间为1000毫秒。属性 easing 定义了动画的时间函数,而 fill: 'both' 确保元素在动画完成后保持其动画状态。

animate() 方法的第二个参数有很多选项,但它们的浏览器兼容性不一致,需要额外注意。

7. 全屏模式的方法

全屏模式允许网络应用程序利用整个屏幕,提供沉浸式体验。DOM提供了 requestFullscreen() 方法,在元素上请求全屏模式。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const element = document.getElementById('myElement');

element.addEventListener('click', requestFullscreen);

const enterFullscreen = (elem, options) => {
  return elem[
    [
      'requestFullscreen',
      'mozRequestFullScreen',
      'msRequestFullscreen',
      'webkitRequestFullscreen',
    ].find((prop) => typeof elem[prop] === 'function')
  ]?.(options);
};

enterFullscreen(element);

在这个例子中,当点击 element 时,会调用 requestFullscreen() 函数,该函数尝试请求全屏模式。代码会检查不同供应商特定方法的兼容性,以确保跨浏览器支持。

8. 使用 insertAdjacentElement() 和 insertAdjacentText() 进行灵活的内容插入

虽然许多开发人员熟悉 insertAdjacentHTML() 方法,该方法允许我们将HTML或文本内容插入到相对于其他元素的特定位置,但还有两种相关的方法可以提供额外的灵活性: insertAdjacentElement()insertAdjacentText()

insertAdjacentElement() 方法允许我们将一个元素插入到指定位置的DOM中,同时将其从原始位置移除。这提供了一种方便的方式,在DOM内部将一个元素从一个地方转移到另一个地方。让我们看一个例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const targetElement = document.getElementById('target');
const newElement = document.createElement('div');
newElement.textContent = 'New Element';

targetElement.insertAdjacentElement('beforebegin', newElement);

在这个例子中, insertAdjacentElement() 方法在 targetElement 之前插入 newElement 。同时, newElement 也从DOM的原始位置移除。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const targetElement = document.getElementById('target');
const text = 'Hello, <strong>World!</strong>';

targetElement.insertAdjacentText('beforeend', text);

在这种情况下, insertAdjacentText() 方法将 text 作为文本节点插入到 targetElement 中。任何特殊字符,如HTML标签,都会以HTML实体的形式插入,保留其文本表示。

所有三种方法 - insertAdjacentHTML() insertAdjacentElement()insertAdjacentText() - 都接受相同的第一个参数值,用于确定插入内容相对于目标元素的位置。选项有 'beforebegin' , 'afterbegin' , 'beforeend' 和 'afterend' 。

总结

通过理解和利用这些特性,我们可以增强您的网络应用的功能和互动性。随着继续探索DOM的广泛能力,你将发现更多隐藏的宝藏。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-08-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
JavaScript基础-DOM操作:查找、创建、修改
DOM(Document Object Model)是Web开发中的核心概念,它将HTML文档表示为一个可编程的对象集合,使得JavaScript能够动态地查询、创建、修改页面内容。本文旨在深入浅出地介绍DOM操作的基础知识,包括查找元素、创建新节点以及修改现有节点的方法,同时揭示一些常见问题、易错点,并提供避免策略及实用代码示例。
Jimaks
2024/06/13
1710
掌握JavaScript DOM操作:轻松打造动态网页
在现代Web开发中,JavaScript无疑是不可或缺的一部分。而DOM(文档对象模型)操作则是JavaScript的核心功能之一。DOM允许JavaScript与HTML文档进行交互,从而实现动态网页效果。本文将带你从零开始,逐步掌握JavaScript DOM操作,让你在Web开发中游刃有余。
Front_Yue
2024/09/10
2320
掌握JavaScript DOM操作:轻松打造动态网页
JavaScript DOM
JavaScript DOM 是指 JavaScript 中的文档对象模型(Document Object Model);它允许 JavaScript 与 HTML 页面交互,使开发者可以通过编程方式动态地修改网页内容和样式,以及响应用户的交互。
久绊A
2023/03/25
6570
HTML5 自定义数据属性(data-*)
HTML5 引入的自定义数据属性(data-*)为开发者提供了一种将自定义数据嵌入HTML元素的标准方法。
空白诗
2024/12/13
1610
掌握这个API,让你的网页展示效果提升10倍
第一反应是用 CSS 设置 position: fixed 加上宽高 100%,但这样并不是真正的全屏,因为浏览器的工具栏还在。
沉浸式趣谈
2025/02/26
1372
掌握这个API,让你的网页展示效果提升10倍
【Java 进阶篇】JavaScript DOM 编程:理解文档对象模型
在 web 开发中,DOM(文档对象模型)是一个重要的概念。DOM 是一种将网页文档表示为树状结构的方式,允许开发者使用 JavaScript 来访问和操作网页的内容。本篇博客将详细介绍 DOM,包括什么是 DOM、如何访问 DOM 元素、如何操作 DOM、DOM 事件等。无论你是刚刚入门 web 开发还是希望深入了解 DOM,这篇博客都将对你有所帮助。
繁依Fanyi
2023/10/19
3300
【Java 进阶篇】JavaScript DOM 编程:理解文档对象模型
《JavaScript DOM 编程艺术》小记
5.实现一个addLoadEvent函数,支持添加多个window.onload函数:
kai666666
2024/07/11
1430
从零开始学习BOM&amp;DOM
ECMAScript,描述了该语言的语法和基本对象,如类型、运算、流程控制、面向对象、异常等。
虎妞先生
2022/09/19
6130
从零开始学习BOM&amp;DOM
【Java 进阶篇】JavaScript DOM Element 对象详解
JavaScript是一门广泛用于网页开发的脚本语言,而DOM(文档对象模型)是JavaScript在网页中操作HTML和XML文档的核心。DOM以树状结构表示文档,允许开发者以编程方式访问、操作和修改文档的内容和结构。在DOM中,Element对象是代表HTML元素的关键对象之一。本篇博客将详细介绍JavaScript DOM中的Element对象,帮助基础小白更好地理解和应用这一概念。
繁依Fanyi
2023/10/19
3140
《现代Javascript高级教程》深入理解事件处理和传播机制
JavaScript中的事件流是一种机制,用于描述和处理事件在DOM树中的传播过程。了解事件流的属性和工作原理对于编写高效的事件处理代码和实现复杂的交互功能至关重要。本文将详细介绍JavaScript事件流的发展流程、属性以及应用场景,并提供一些代码示例和引用资料,帮助读者深入理解并应用这一重要的前端技术。
linwu
2023/07/27
2750
那些关于DOM的常见Hook封装(一)
本文是深入浅出 ahooks 源码系列文章的第十四篇,这个系列的目标主要有以下几点:
GopalFeng
2022/08/01
7390
那些关于DOM的常见Hook封装(一)
掌握这个API,让你的网页展示效果提升10倍
第一反应是用 CSS 设置 position: fixed 加上宽高 100%,但这样并不是真正的全屏,因为浏览器的工具栏还在。
沉浸式趣谈
2025/02/24
1390
掌握这个API,让你的网页展示效果提升10倍
【Web APIs】JavaScript 操作元素 ⑤ ( 修改元素样式属性 | 行内样式操作 - element.style | 类名样式操作 | 类列表样式操作 )
在 【Web APIs】JavaScript 操作元素 ① ( 修改元素内容 | innerText 属性修改元素文本内容 | innerHTML 属性修改元素 HTML 内容 ) 博客中介绍了 使用
韩曙亮
2024/08/09
2430
【Web APIs】JavaScript 操作元素 ⑤ ( 修改元素样式属性 | 行内样式操作 - element.style | 类名样式操作 | 类列表样式操作 )
8 个 DOM 功能
你肯定用 addEventListener() 处理过将事件附加到 Web 文档中的元素。通常 addEventListener() 调用看起来像这样:
疯狂的技术宅
2019/06/01
1.9K0
【JS】328- 8个你不知道的DOM功能
最近一直在关注工具,从 React 和 npm-install-everything 中休息一下,看看一些原生的 DOM 和 Web API 的功能,他们可以在没有任何依赖库的浏览器中直接运行。
pingan8787
2019/08/26
1.5K0
JavaScript入门下-函数定义&DOM+BOM的操作示例
ES6(ECMAScript 2015)为 JavaScript 带来了很多重要的新特性,极大地提高了代码的简洁性和可维护性。
方才编程_公众号同名
2024/10/25
1550
JavaScript入门下-函数定义&DOM+BOM的操作示例
24 个 ES6 实用方法,用来解决实际开发的 JS 问题
页面DOM里的每个节点上都有一个classList对象,程序员可以使用里面的方法新增、删除、修改节点上的CSS类。使用classList,程序员还可以用它来判断某个节点是否被赋予了某个CSS类。
Javanx
2020/03/09
8360
【Java 进阶篇】深入理解 JavaScript DOM Node 对象
在前端开发中,与HTML文档进行交互是一项基本任务。文档对象模型(Document Object Model,简称DOM)为开发者提供了一种以编程方式访问和操作HTML文档的方式。DOM的核心是节点(Node)对象,它代表了文档中的各个部分。本博客将深入探讨JavaScript DOM Node对象,帮助您更好地理解它的作用和如何使用。
繁依Fanyi
2023/10/19
3690
记好这24个ES6方法,用于解决实际开发的JS问题
页面DOM里的每个例程上都有一个classList对象,程序员可以使用里面的方法添加,删除,修改例程的CSS类。使用classList,程序员还可以用它来判断某处是否被替换了某人个CSS类。
艾编程
2023/01/13
1.4K0
记好这24个ES6方法,用于解决实际开发的JS问题
JavaScript HTML DOM
当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。
zhangjiqun
2024/12/16
1520
JavaScript HTML DOM
推荐阅读
相关推荐
JavaScript基础-DOM操作:查找、创建、修改
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验