-
路由别名(alias)的核心作用是让同一组件响应多个URL路径且地址栏保持不变;配置需配合具体path,支持数组多别名及带参数别名,但path为'/'时alias无效;与redirect本质区别在于alias不改变URL,而redirect会跳转并重写URL。
-
必须显式启用TAILWIND_MODE=watch,否则v3+虽默认启用JIT引擎但热重载失效;需确保content路径全覆盖、构建工具HMR链路完整,并规避Windows路径陷阱。
-
Array(length).fill(value)是初始化固定长度数组的最简正确方式,它先创建稀疏数组再填充真实元素;不调用fill()则map()等方法会跳过空槽,且Array(5)≠[undefined×5]。
-
accesskey几乎无人使用,因其需记忆键位、组合键触发且无提示反馈,导致交互链路断裂;仅内部或高无障碍要求系统在满足单字母、避保留键、显式提示三条件下可保留;更优解是优化语义结构、焦点流与原生键盘行为。
-
使用视口单位、Flexbox和Grid布局实现高度自适应:1.设置vh或dvh单位确保全屏占位;2.Flex容器中主内容区设flex:1占据剩余空间;3.Grid通过grid-template-rows定义auto与fr组合分配行高;4.媒体容器用aspect-ratio或padding-top百分比保持宽高比,根据场景选择合适方案。
-
transition需同时声明opacity和transform并设相同时间,初始/目标状态显式定义,用class切换控制显示隐藏,避免display:none和JS直接改style,监听transitionend事件确保动画完成后再清理状态。
-
background-image默认重复铺满容器,需同时设置background-repeat:no-repeat、background-size:auto或contain、background-position:center才能实现单张原图居中显示。
-
这是CSS外边距合并行为:父子元素间无border/padding时,子元素margin-top会与父元素上边缘合并,导致父容器下移;仅发生在垂直方向块级元素间,合并值取较大者,负值参与计算。
-
应使用history.pushState()接管导航并同步更新URL与视图状态,配合popstate监听及服务端historyApiFallback配置,确保标签页切换不刷新、状态不丢失且直链可用。
-
filter过渡无效因浏览器插值支持差,需显式声明初始/结束值、统一单位、加will-change;hover抖动源于layoutshift,应强制GPU层并固定尺寸;transitionend事件不可靠,建议用setTimeout或requestAnimationFrame轮询;深色模式/print下需媒体查询重置filter;多层filter应拆分元素实现。
-
iOSSafari中overscroll-behavior:contain失效主因是容器未真正进入可滚动状态,需同时满足:有明确宽高、无transform/will-change干扰、滚动上下文未被阻断。
-
inset-inline-start是逻辑定位属性,值取决于direction和writing-mode:LTR下等价left,RTL下等价right;仅对absolute/fixed元素生效,不可与left/right混用,需配合inset-block-start等使用,依赖父元素direction,非body或系统设置。
-
使用CSSGrid布局时,gap用于设置行列间距,padding控制容器内边距,margin处理特殊外边距;推荐用gap管理项目间距,padding营造容器留白,谨慎使用margin避免冲突,三者协同提升布局清晰度与响应式效果。
-
Blob本身不提升性能,但能绕过传统文件处理瓶颈:避免全量加载内存、跳过服务器中转、支持流式操作;应分块读取、及时释放引用、优先用URL.createObjectURL预览,构造File需继承Blob,fetch后用blob.stream()实现无压力解析。
-
当用户取消勾选“保存颜色”复选框时,页面会意外立即变色——根本原因在于removeEventListener无法移除匿名函数,导致旧监听器未被清除,新监听器又被重复添加,引发一次冗余执行。