classList

在 JavaScript 中,classList 是一个用于操作 HTML 元素类名的 DOM 属性,它提供了更简单的方法来添加、删除、切换或检查元素的类(相比传统的 className)。以下是 classList 的详细用法:

1. 基本语法

element.classList

classList 返回一个 DOMTokenList 集合,包含元素的所有类名。

2. 常用方法

(1)添加类:add()

element.classList.add('class1', 'class2', ...);

• 添加一个或多个类名到元素。

• 示例:

const div = document.querySelector('div');

div.classList.add('active', 'highlight');

(2)删除类:remove()

element.classList.remove('class1', 'class2', ...);

• 移除一个或多个类名。

• 示例:

div.classList.remove('inactive');

(3)切换类:toggle()

element.classList.toggle('class', [force]);

• 如果类存在则删除,不存在则添加。

• force(可选):布尔值,true 强制添加,false强制删除。

• 示例:

// 点击按钮切换 'dark-mode' 类

button.addEventListener('click', () => {

  document.body.classList.toggle('dark-mode');

});

(4)检查类是否存在:contains()

element.classList.contains('class');

• 返回布尔值,表示类是否存在。

• 示例:

if (div.classList.contains('active')) {

  console.log('元素有 active 类');

}

(5)替换类:replace()

element.classList.replace('oldClass', 'newClass');

• 将旧类替换为新类。

• 示例:

div.classList.replace('old-theme', 'new-theme');

3. 遍历类名

classList 是可迭代对象,可以用 for...of 或索引访问:

// 遍历所有类名

for (const className of div.classList) {

  console.log(className);

}

// 通过索引访问

console.log(div.classList[0]); // 第一个类名

4. 注意事项

兼容性:classList 在所有现代浏览器中支持,但不支持 IE9 及以下版本。如果需要兼容旧浏览器,可以用 className配合字符串操作。

只读性:classList 是只读属性,但可以通过它的方法修改类名。

5. 对比 className

传统 className 操作:

// 添加类

element.className += ' new-class'; // 注意空格问题

// 删除类(需要正则或字符串处理)

element.className = element.className.replace('old-class', '');

classList 更简洁且避免手动处理字符串。

完整示例

<button id="btn">切换主题</button>

<div id="content" class="text">Hello World</div>

<script>

  const btn = document.getElementById('btn');

  const content = document.getElementById('content');

  btn.addEventListener('click', () => {

    // 切换 'dark-theme' 类

    content.classList.toggle('dark-theme');

    // 检查是否存在

    if (content.classList.contains('dark-theme')) {

      console.log('当前是暗黑模式');

    }

  });

</script>

通过 classList,你可以更高效地操作元素的类名,适合动态样式交互、动画触发等场景。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 楔子 最近在看JavaScript高程设计,越看越觉得JS真的博大精深,每读一次都会有新的收获。今天我们就来说一说...
    漫漫前端阅读 2,578评论 0 2
  • 类名操作 在前端中,我们常常需要进行类名操作,大致有以下4种 Has(el, class)检查el的类中是否包含c...
    袁韩阅读 1,689评论 0 0
  • html5为每一个元素新增了一个classList对象,classList对象保存着控制当前元素类名的各个方法和属...
    鲁女女阅读 2,899评论 0 3
  • 定义和用法: classList 属性返回元素的类名,作为 DOMTokenList 对象。该属性用于在元素中添加...
    路口师傅阅读 607评论 0 0
  • React 官网学习笔记 所有 React 组件都必须像纯函数一样保护它们的 props 不被更改 在 React...
    HeroMeikong阅读 752评论 0 1

友情链接更多精彩内容