0

0

使用 JavaScript 函数动态添加 CSS 样式

碧海醫心

碧海醫心

发布时间:2025-10-19 11:20:02

|

855人浏览过

|

来源于php中文网

原创

使用 javascript 函数动态添加 css 样式

本文将介绍如何使用 JavaScript 函数动态地将 CSS 样式应用于 HTML 元素,避免使用 document.write() 方法,并采用 appendChild 和 classList.add 等现代 Web 开发技术,实现灵活且可维护的样式控制。我们将通过示例代码,详细讲解如何创建元素、添加类名以及将元素插入到 DOM 树中。

动态添加 CSS 样式的常用方法

在 Web 开发中,动态地改变元素的样式是非常常见的需求。直接在 JavaScript 中使用内联样式虽然可行,但不利于代码维护和样式复用。更推荐的做法是将样式定义在 CSS 文件中,然后通过 JavaScript 动态地为元素添加或删除类名,从而控制元素的样式。

以下是几种常用的方法:

  1. classList.add(className): 向元素的 classList 属性添加指定的类名。
  2. classList.remove(className): 从元素的 classList 属性移除指定的类名。
  3. classList.toggle(className): 如果元素的 classList 属性中存在指定的类名,则移除它;否则,添加它。
  4. element.style.property = value: 直接设置元素的内联样式。不推荐大量使用,因为它会降低代码的可维护性。

示例:动态创建 QR Code 窗口并应用样式

假设我们需要动态创建一个包含 QR Code 的窗口,并应用特定的样式。以下是一个完整的示例:

立即学习Java免费学习笔记(深入)”;

HTML 结构:

<div id="qr-container"></div>

CSS 样式 (style.css):

.qr-window {
  display: flex;
  flex-direction: column;
  align-items: center;
  background-image: url("megapolis background.png"); /* 替换为你的背景图片 */
  background-size: cover;
  padding: 20px;
}

.qr-container {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 20px;
  border: 2px solid #ccc;
  border-radius: 10px;
  width: 400px;
  margin-bottom: 20px;
}

.qr-image {
  margin-right: 20px;
}

.details-container {
  text-align: right;
}

.details-container h3 {
  margin-bottom: 10px;
}

.button-container {
  margin-top: 20px;
  text-align: center;
}

.button-container button {
  margin: 0 5px;
  padding: 10px 20px;
  background-color: #4CAF50;
  color: white;
  border: none;
  border-radius: 5px;
  cursor: pointer;
}

JavaScript 代码:

天工大模型
天工大模型

中国首个对标ChatGPT的双千亿级大语言模型

下载
function openQRCodeWindow(registrationId, qrCodeImage, firstName, lastName, email, contactNumber, seatNumber) {
  // 获取容器元素
  const qrContainer = document.getElementById('qr-container');

  // 创建窗口容器
  const qrWindow = document.createElement('div');
  qrWindow.classList.add('qr-window');

  // 创建 QR Code 容器
  const container = document.createElement('div');
  container.classList.add('qr-container');

  // 创建 QR Code 图片元素
  const qrImageElement = document.createElement('img');
  qrImageElement.src = qrCodeImage;
  qrImageElement.alt = "QR Code";
  qrImageElement.classList.add('qr-image');

  // 创建详情容器
  const detailsContainer = document.createElement('div');
  detailsContainer.classList.add('details-container');

  // 创建详情内容
  const detailsHTML = `
    <h3>Details</h3>
    <p>Registration ID: ${registrationId}</p>
    <p>First Name: ${firstName}</p>
    <p>Last Name: ${lastName}</p>
    <p>Email: ${email}</p>
    <p>Contact Number: ${contactNumber}</p>
    <p>${seatNumber}</p>
  `;
  detailsContainer.innerHTML = detailsHTML;

  // 创建按钮容器
  const buttonContainer = document.createElement('div');
  buttonContainer.classList.add('button-container');

  // 创建按钮
  const saveImageButton = document.createElement('button');
  saveImageButton.textContent = 'Save Image';

  const emailButton = document.createElement('button');
  emailButton.textContent = 'Email';

  // 将元素添加到容器中
  container.appendChild(qrImageElement);
  container.appendChild(detailsContainer);

  buttonContainer.appendChild(saveImageButton);
  buttonContainer.appendChild(emailButton);

  qrWindow.appendChild(container);
  qrWindow.appendChild(buttonContainer);

  qrContainer.appendChild(qrWindow);
}

// 示例调用
// 假设你已经获取了这些数据
const registrationId = "12345";
const qrCodeImage = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="; // 替换为你的 QR Code 数据
const firstName = "John";
const lastName = "Doe";
const email = "john.doe@example.com";
const contactNumber = "123-456-7890";
const seatNumber = "Seat A1";

openQRCodeWindow(registrationId, qrCodeImage, firstName, lastName, email, contactNumber, seatNumber);

代码解释:

  1. openQRCodeWindow 函数: 接收 QR Code 相关的数据作为参数。
  2. 创建元素: 使用 document.createElement 创建 HTML 元素,例如 div、img 和 button。
  3. 添加类名: 使用 classList.add 为元素添加 CSS 类名,从而应用预定义的样式。
  4. 设置属性: 使用 element.src、element.textContent 和 element.innerHTML 设置元素的属性和内容。
  5. 添加子元素: 使用 appendChild 将元素添加到 DOM 树中。
  6. 示例调用: 展示如何调用 openQRCodeWindow 函数,并传递示例数据。

注意事项

  • 避免 document.write(): document.write() 会覆盖整个文档,不推荐在现代 Web 开发中使用。
  • CSS 分离: 将样式定义在 CSS 文件中,并通过类名来控制元素的样式,可以提高代码的可维护性和可重用性。
  • 性能优化: 频繁操作 DOM 可能会影响性能。尽量减少 DOM 操作的次数,例如可以使用文档片段(DocumentFragment)来批量添加元素。
  • 错误处理: 在实际项目中,应该添加错误处理机制,例如检查元素是否存在,以及处理可能出现的异常。

总结

通过本文,你学习了如何使用 JavaScript 函数动态地添加 CSS 样式,避免了使用 document.write() 方法,并掌握了 appendChild 和 classList.add 等现代 Web 开发技术。通过将样式定义在 CSS 文件中,并使用 JavaScript 动态地为元素添加或删除类名,可以实现灵活且可维护的样式控制。记住,编写清晰、可维护的代码是 Web 开发的关键。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
DOM是什么意思
DOM是什么意思

dom的英文全称是documentobjectmodel,表示文件对象模型,是w3c组织推荐的处理可扩展置标语言的标准编程接口;dom是html文档的内存中对象表示,它提供了使用javascript与网页交互的方式。想了解更多的相关内容,可以阅读本专题下面的文章。

4336

2024.08.14

DOM是什么意思
DOM是什么意思

dom的英文全称是documentobjectmodel,表示文件对象模型,是w3c组织推荐的处理可扩展置标语言的标准编程接口;dom是html文档的内存中对象表示,它提供了使用javascript与网页交互的方式。想了解更多的相关内容,可以阅读本专题下面的文章。

4336

2024.08.14

PHP 高并发与性能优化
PHP 高并发与性能优化

本专题聚焦 PHP 在高并发场景下的性能优化与系统调优,内容涵盖 Nginx 与 PHP-FPM 优化、Opcode 缓存、Redis/Memcached 应用、异步任务队列、数据库优化、代码性能分析与瓶颈排查。通过实战案例(如高并发接口优化、缓存系统设计、秒杀活动实现),帮助学习者掌握 构建高性能PHP后端系统的核心能力。

112

2025.10.16

PHP 数据库操作与性能优化
PHP 数据库操作与性能优化

本专题聚焦于PHP在数据库开发中的核心应用,详细讲解PDO与MySQLi的使用方法、预处理语句、事务控制与安全防注入策略。同时深入分析SQL查询优化、索引设计、慢查询排查等性能提升手段。通过实战案例帮助开发者构建高效、安全、可扩展的PHP数据库应用系统。

99

2025.11.13

JavaScript 性能优化与前端调优
JavaScript 性能优化与前端调优

本专题系统讲解 JavaScript 性能优化的核心技术,涵盖页面加载优化、异步编程、内存管理、事件代理、代码分割、懒加载、浏览器缓存机制等。通过多个实际项目示例,帮助开发者掌握 如何通过前端调优提升网站性能,减少加载时间,提高用户体验与页面响应速度。

36

2025.12.30

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

100

2026.03.06

什么是低代码
什么是低代码

低代码是一种软件开发方法,使用预构建的组件可快速构建应用程序,无需大量编程。想了解更多低代码的相关内容,可以阅读本专题下面的文章。

300

2024.05.21

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

76

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

38

2026.03.10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.9万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.6万人学习

CSS教程
CSS教程

共754课时 | 42.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号