-
防抖适合用户停止操作后执行的场景,如搜索联想、resize布局、表单校验;节流适合固定频率执行的场景,如滚动加载、鼠标移动追踪、Canvas动画。
-
横向滚动主因是body默认margin和html未隐藏溢出,需设html{overflow-x:hidden}、body{margin:0};用outline快速定位超宽元素;注意transform/fixed元素及vw单位精度问题。
-
最稳解法是起本地HTTP服务:用python3-mhttp.server8000或npminstall-gserve后运行serve,再访问http://localhost:8000;双击打开因file://协议限制导致fetch失败、CORS报错、图片路径异常等问题。
-
闭包本身不会导致内存泄漏,真正原因是意外保留对大对象的引用;当闭包捕获大数组、DOM节点等并被全局变量、事件监听器、定时器等长期持有时,其引用的外部变量无法被垃圾回收,造成内存泄漏。
-
应动态插入style节点而非link标签,因其绕过HTML结构、路径和CSP限制,支持作用域隔离与执行时机控制;需检查重复插入、使用data-plugin-style标记、避免innerHTML拼接,并在插件销毁时卸载样式。
-
for-of循环通过迭代协议遍历可迭代对象:先调用[Symbol.iterator]获取迭代器,再循环调用next()方法解构{value,done},依done控制终止,不依赖索引或长度,专用于值序列而非属性键。
-
CSS中通过cursor属性设置鼠标指针样式,常用值包括auto、pointer、text、wait、help、not-allowed、grab等,分别对应不同交互场景;选择时应确保直观准确,避免滥用;可使用url()引入SVG或图片自定义光标,需指定热点坐标与备用光标以保证兼容性与降级体验;现代浏览器对标准值支持良好,自定义光标需注意格式、尺寸(推荐32x32px内)、性能及用户偏好,优先使用SVG并设置fallback,确保跨浏览器一致性与可访问性。
-
HTML按钮无独立样式设置方法,所有视觉效果均由CSS控制;其默认样式源于浏览器UA样式,不同浏览器差异明显,且<button>与<inputtype="button">表现不完全一致。
-
用data-level属性标记层级,padding-left替代margin-left实现缩进,父级设position:relative,::after伪元素消除hover间隙,top:calc(100%+1px),transition明确属性,body.menu-open控制滚动穿透,IE11降级为block布局。
-
<p>dataset属性用于读写HTML的data-*自定义属性,自动转连字符为驼峰命名(如data-user-id→userId),但值恒为字符串需手动转换,适用于轻量静态UI数据,不适用于敏感信息或高频更新场景。</p>
-
BEM通过强制组件级命名空间减少样式冲突:类名以组件名开头(如card),元素用双下划线(card__body),修饰符用双短横(card--shadowed),禁用嵌套选择器,从而杜绝全局污染和层叠不确定性。
-
通过opacity和transform结合transition实现弹窗动效,1.结构上使用modal容器包含内容框;2.初始隐藏并设置透明度、缩放及过渡;3.添加active类触发动画,改变透明度、可见性和缩放;4.JS通过类名切换控制显示隐藏,配合visibility和pointer-events避免误交互。
-
浮动元素无法通过z-index改变层级,因其未创建层叠上下文且z-index仅对定位元素有效。需同时设置position为relative、absolute等非static值才能使z-index生效。例如添加position:relative后,z-index即可正确控制层叠顺序。需注意父容器若创建了层叠上下文(如设置opacity),仍会影响子元素的最终显示层级。
-
DIV是块级元素,用于布局和结构划分,独占一行可设宽高;SPAN是行内元素,用于修饰文本内容,不换行且不可直接设宽高;通过CSS的display属性可改变其显示行为,选择时应基于语义和布局需求。
-
CSS变量用于top/left等定位属性时必须配合calc()并补单位,否则失效;推荐变量自带单位或JS设置时加单位,transform比top/left更安全,sticky支持但有兼容性问题。