-
必须用<button>。它是触发动作而非纯导航,能确保无障碍访问、键盘操作一致性和表单正确包含;错误使用<a>或role="link"会导致语义混乱和交互异常。
-
浮动布局通过float实现多列排列,需清除浮动以防止父元素塌陷,常用overflow:hidden或伪类::after处理;li设为float:left并配合width、margin控制布局,结合box-sizing:border-box避免宽度溢出;响应式中通过媒体查询调整屏幕适配,如小屏下改为两列或堆叠显示。
-
禁用右键本质是拦截contextmenu事件而非真正禁用,仅能阻止默认菜单;内联oncontextmenu="returnfalse"最简捷,addEventListener配合e.preventDefault()更灵活;但JS禁用可被禁用脚本、快捷键、开发者工具等绕过,无法替代服务端防护。
-
absolute元素百分比宽度失效的根本原因是包含块无明确宽度;其宽度需相对于最近非static定位祖先计算,若该祖先宽度为auto则百分比无法解析。
-
CSS变量是运行时机制,JS可动态修改;Sass变量在编译阶段被替换,JS无法感知。前者支持主题切换、继承与局部作用域,后者支持复杂计算和逻辑判断,但需编译且无运行时灵活性。
-
Redux是一个可预测的状态管理容器,核心是让状态变化可追踪、可回溯、可测试;它通过唯一Store管理全局状态,用纯Action描述意图,由纯函数Reducer计算新状态,且仅能通过dispatch触发更新。
-
<p>用递归mixin生成0%–100%旋转帧:.gen-rotate-frames(@i:0,@step:10,@max:100)when(@i=<@max){@{i}%{transform:rotate(@i*1deg);}.gen-rotate-frames(@i+@step,@step,@max);},再在外层mixin中调用并包裹@keyframes。</p>
-
摇晃动画必须用@keyframes定义至少3个关键帧实现往复节奏,如0%→25%→50%→75%→100%角度变化,首尾为0deg确保循环自然,幅度宜控在±3deg~±8deg,配合0.4s~0.6s时长和非对称角度增强真实感。
-
HTML代码混淆对防止盗用或爬虫基本无效,真正有效的是服务端控制、访问限频和内容动态化;混淆可被开发者工具一键还原,不改变语义,不影响XPath/CSS定位,且增加解析开销与维护风险。
-
matchAll返回迭代器,须用for...of、展开语法或next()遍历;必须加g标志,禁用y标志;捕获组按索引访问更兼容;非捕获组不占位;未匹配捕获组值为undefined。
-
Array.from()是将伪数组转换为真数组最简洁推荐的方式,能处理arguments、NodeList等伪数组并支持映射操作。
-
闭包能实现观察者模式是因为它提供了私有且持久的变量存储,使得订阅者列表\_subscribers被安全封装在函数作用域内,外部无法直接访问;2.subscribe、unsubscribe和notify方法通过闭包共享\_subscribers数组,实现对观察者的增删查和通知;3.每次调用createEventBus都会创建独立的闭包环境,保证多个实例间互不干扰;4.实际使用中需注意内存泄漏问题,即组件销毁时应主动取消订阅以避免残留回调引用导致无法回收;5.通知顺序依赖订阅顺序,若需优先级控制则需扩展逻辑;
-
遮罩层必须与弹层处于同一层叠上下文,否则z-index无效;常见问题包括弹层父容器触发新上下文、遮罩祖先含opacity<1、iOSfixed失效及框架v-if/v-show不同步。
-
当浮动与固定定位元素遮挡时,需设置固定元素的z-index为1000并确保其position非static;检查浮动父容器是否创建新层叠上下文导致z-index失效;通过overflow:hidden或clearfix清除浮动避免高度塌陷;推荐用Flex/Grid布局替代浮动,使用开发者工具排查渲染层级,确保布局正确。
-
嵌套动画需按层级累加animation-delay:父容器0s,一级子元素0.1s,二级0.2s;推荐CSS变量简化维护;避免:nth-child()因DOM干扰失效,改用类名或:nth-of-type();入场动画仅用transform+opacity并启用will-change;keyframes统一用0%/100%确保精度;注意overflow:hidden裁剪动画。