-
用Set实现自动重洗随机抽奖:初始化将奖品加入Set,每次抽奖随机取一个后立即删除;池空时调用refill重建,支持多轮独立抽奖与状态隔离,逻辑简洁、天然去重、时间高效。
-
postcss-preset-env默认不转译:has()或color-mix(),因其处于Stage3而非默认Stage2;需显式设stage:3才启用,但color-mix()仍不降级,因无安全polyfill;真正决定转译行为的是browserslist配置,而非stage数字。
-
怎么用:invalid让输入框自动标红直接加:invalid样式就行,但得先确保表单控件有校验约束(比如required、type="email"),否则浏览器根本不会触发这个伪类。它只对「原生校验失败」生效,不是你随便输点啥就变红。常见错误是写了:invalid却没反应——八成是没加required或用了自定义校验(比如JS的setCustomValidity())但没调用reportValidity()。input[type="email"]输入“abc”会触发
-
子菜单不显示主因是父级未设position:relative导致绝对定位失效;三级菜单需HTML正确嵌套且CSS选择器写全层级;移动端不支持hover,IE需:focus-within兜底。
-
实现HTML一键复制的核心机制是使用JavaScript操作剪贴板,现代推荐方法为navigator.clipboard.writeText(),兼容性方案则使用document.execCommand('copy');2.navigator.clipboard.writeText()基于Promise、异步执行、更安全且符合现代标准,但需在HTTPS环境下由用户手势触发;3.document.execCommand('copy')虽兼容老旧浏览器,但已被废弃,需创建临时元素并选中内容,操作复杂且存在安全
-
必须将平移和旋转合并到单条transform声明中,如transform:translateX(100px)rotate(45deg);分开写会因CSS层叠被覆盖;关键帧需显式定义起止transform值,且所有帧保持函数类型一致,配合transform-origin和will-change可优化性能与动画表现。
-
虚拟DOM本身内存占用不高,真正导致内存压力的是VNode引用链未及时切断而阻碍垃圾回收;常见泄漏场景包括缓存VNode未清理、v-if切换组件未清定时器、递归无终止、keep-alive缓存不当;应通过清空缓存、合理使用ref、virtual-scroll降载及DevTools快照比对验证优化效果。
-
:nth-child(n)中的n是自然数序列而非索引,它匹配父元素下第n个子元素(无论类型),不跳过不匹配节点;真正选“第n个某类型元素”应使用:nth-of-type(n)。
-
能,但必须共用同一父容器、触发BFC防止塌陷,并显式控制宽度;否则因脱离文档流、不协商位置而错位。
-
语义化HTML标签是SEO核心,<main>必须唯一且包裹主体内容,<header>/<footer>影响权重分配,标题层级须严格递进,<figure>+<figcaption>提升图片SEO,标签须匹配真实内容结构。
-
性能瓶颈在于DOM序列化而非writeText()本身;outerHTML递归遍历子树耗时,节点多、嵌套深或含大量样式/脚本时更明显;应避免全量outerHTML,改用精准截取、手动清理或直接取文本内容。
-
页面加载完成分阶段:DOMContentLoaded表示HTML解析完毕、DOM树就绪,可安全操作元素;load事件则需等待所有资源(CSS、图片、iframe)全部加载完成。
-
overflow-wrap:break-word没生效主因是父容器缺宽度约束或被white-space:nowrap等覆盖;需设width/max-width、display:block、避免nowrap,并在flex中加min-width:0。
-
闭包是JavaScript模拟类私有字段最成熟、兼容性最广的传统方案,通过函数作用域隔离变量实现外部不可直接访问、仅能通过返回方法间接操作的私有性。
-
cite属性仅合法用于<blockquote>、<q>、<ins>、四个标签,值必须为URL,与<cite>元素语义不同,不可混用。