
文档/教程前端【免费下载链接】en.javascript.infoModern JavaScript Tutorial项目地址https://gitcode.com/gh_mirrors/en/en.javascript.info点击查看免费下载导读本篇文章围绕 Modern JavaScript Tutorial本仓库中《Styles and classes》章节的任务 Create a notification 展开编写一个showNotification(options)函数在窗口右上角动态创建div classnotification通知并在 1.5 秒后自动消失。读完本文你将掌握document.createElement创建元素、className/classList管理类名、elem.style动态写入定位坐标含单位、innerHTML填充内容、append挂载节点以及setTimeout定时清理的完整实战链路并理解为什么这类运行时计算的坐标正适合用style而非 CSS 类来处理。任务要求拆解任务原文给出了明确的函数契约见 task.md函数签名showNotification(options)入参为一个对象创建元素div classnotification内容来自options.html定位方式使用 CSS 定位position: fixed按top/right坐标放置默认均为0px自动消失通知展示 1.5 秒后自动从页面移除可选扩展options.className允许追加一个额外类名如任务示例中的welcome。调用示例约定如下带默认值语义// 在窗口右上方显示一段文本 Hello showNotification({ top: 10, // 距窗口顶部 10px默认 0px right: 10, // 距窗口右边缘 10px默认 0px html: Hello!, // 通知的 HTML 内容 className: welcome // 追加到 div 上的额外类可选 });仓库为这个任务提供了两个可直接打开的对照页面起始骨架函数体留空待实现source.view/index.html完整可运行解答solution.view/index.html配套样式表两个视图共用同一份solution.view/index.css。准备样式用 CSS 类承载外观用 style 承载动态坐标任务页面配套的 CSS 是理解类与样式分工的最佳示例solution.view/index.css.notification { position: fixed; z-index: 1000; padding: 5px; border: 1px solid black; font-size: 20px; background: white; text-align: center; } .welcome { background: #b80000; color: yellow; }这里体现了教程正文 article.md 强调的核心原则尽量优先使用 CSS 类style只在类无法处理时使用。外观边框、内边距、字号、背景是静态、可复用的应写在 CSS 类.notification中而top/right坐标是每次调用时动态计算、逐次变化的正适合用 JavaScript 写入elem.style。这也是本任务选择position: fixedtop/right的原因——通知固定在视口window坐标系内天然贴着窗口右上角。完整实现一行行拆解showNotification仓库给出的标准解答位于 solution.view/index.html实现如下function showNotification({top 0, right 0, className, html}) { let notification document.createElement(div); notification.className notification; if (className) { notification.classList.add(className); } notification.style.top top px; notification.style.right right px; notification.innerHTML html; document.body.append(notification); setTimeout(() notification.remove(), 1500); }1. 参数解构与默认值函数签名直接对options对象进行解构并给top、right设置默认值0恰好与任务契约中的默认 0px一致className和html为可选/必填内容。这样showNotification({html: Hi})也能正常调用通知会出现在窗口右上角top: 0; right: 0。2.createElementclassName设置基础类let notification document.createElement(div); notification.className notification;document.createElement(div)创建一个游离的 DOM 元素尚未挂载到文档。随后通过className一次性赋值为notification。正如教程正文所述elem.className对应 HTML 的class属性class 曾是 JavaScript 保留字无法作为属性名于是引入了 className对它整体赋值会替换整个类名字符串——这里元素是全新的不存在已有类所以整体赋值是安全且简洁的。3.classList.add追加可选类名if (className) { notification.classList.add(className); }当用户传入额外的className例如welcome时用classList.add()追加而不会覆盖已有的notification。这正是className与classList的分工前者管理整串类名后者面向单个类做add/remove/toggle/contains。任务示例中传入className: welcome后元素最终 class 为notification welcome从而套用红色背景 黄色文字的主题样式。4. 动态坐标写入style切记带单位notification.style.top top px; notification.style.right right px;这是任务成败的关键细节。教程正文在Mind the units一节专门强调给style属性赋值必须携带 CSS 单位。elem.style.top 10无单位会被浏览器忽略赋值后读回为空字符串必须写成10px才生效。因此这里用top px把数值拼接成带单位的字符串。同时注意style属性是对象多词 CSS 属性使用驼峰命名如background-color→backgroundColor单词的top、right直接同名。5. 用innerHTML注入内容并挂载notification.innerHTML html; document.body.append(notification);innerHTML允许直接以 HTML 片段形式传入内容任务契约中html字段的含义即通知的 HTML。document.body.append(notification)将游离元素插入body末尾元素至此出现在页面上。由于.notification的position: fixed它会被固定在视口坐标top/right处叠加在正文内容之上z-index: 1000确保层级。6. 1.5 秒后自动移除setTimeout(() notification.remove(), 1500);setTimeout在 1500ms 后执行回调通过element.remove()把通知节点从 DOM 中整体移除包括其所有子节点从而自动消失。相比outerHTML或仅隐藏style.displaynoneremove()是彻底销毁节点、不残留隐藏元素的干净做法。为什么这里动态坐标适合用 style教程正文在开头就给出了判断标准article.md如果坐标是运行时经过计算得到的例如let top /* complex calculations */; elem.style.top top px用style直接写入是合理场景而静态外观则应沉淀为 CSS 类。本任务的通知坐标由调用方在每次调用时动态传入正是类处理不了、必须用 style的典型例子。这也呼应了正文对className/classList、elem.style、单位与style.cssText的完整讲解读者可以顺路阅读 完整的 Styles and classes 章节 加深理解。自行运行与验证想在本仓库内亲手验证打开 solution.view/index.html或对照 source.view/index.html 先自己补全函数体页面每 2 秒会调用一次showNotification({top: 10, right: 10, html: Hello i, className: welcome})见页面底部测试脚本你会看到右上角持续出现红色底、黄色字的Hello N通知每条在 1.5 秒后自动消失可尝试修改入参验证边界行为不传top/right通知应出现在(0, 0)即窗口最右上角不传className通知显示为白色底、黑色边框的默认样式去掉top px中的px通知将无法正确定位样式赋值被忽略。小结本任务浓缩了 DOM 样式与类操作的六个要点createElement创建节点、className整体赋值、classList.add增量追加、style动态写入带单位的坐标、innerHTML注入内容、setTimeoutremove()定时销毁。它同时示范了教程的核心设计原则——静态外观交给 CSS 类动态计算值交给style属性。将这段代码与 source/solution 视图、配套样式表 及 章节正文 对照阅读即可完整掌握用 JavaScript 操作样式与类名这一基础能力。赞分享文档/教程前端【免费下载链接】en.javascript.infoModern JavaScript Tutorial项目地址https://gitcode.com/gh_mirrors/en/en.javascript.info点击查看免费下载相关推荐从嵌套对象生成 DOM 树createTree 的 innerHTML 与 DOM 双实现Modern JavaScript Tutorial 实战从嵌套对象生成 DOM 树createTree 的 innerHTML 与 DOM 双实现Modern JavaScript Tutorial 实战 本文文档/教程前端CANN asc-tools 快速入门从环境准备到编译安装与 UT 测试的完整实战指南CANN asc tools 快速入门从环境准备到编译安装与 UT 测试的完整实战指南 asc tools 是 CANN 基于 Ascend C 编程语言推出文档/教程前端Modern JavaScript Tutorial 实战用 class 继承与 super 构造器实现可调精度的 ExtendedClock 时钟类Modern JavaScript Tutorial 实战用 class 继承与 super 构造器实现可调精度的 ExtendedClock 时钟类 在 M文档/教程前端创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考