-
用dataset存状态比class更可靠,IntersectionObserver替代scroll监听,getBoundingClientRect需校正缩放与iframe偏移,React/Vue中key要稳定、ref要延迟读取,状态更新需分数据层、视图层、时机钩子三层协同。
-
Vue3中watch不支持直接监听多个独立响应式变量,需通过数组包装ref、监听reactive对象的组合属性、使用watchEffect自动追踪或分别监听等方式实现多源响应。
-
Safari15.6中grid-template-areas含连字符(如"header-nav")会静默失效,导致display:grid回退为block,应改用下划线或纯字母命名,并避免subgrid;Edge18不支持gap,需用margin模拟;Firefox120前不支持:has();IE11和iOS9.3不支持CSS变量动态更新,需静态替换或JS控制;clip-path等细微差异需真机多版本测试。
-
var声明变量会提升并初始化为undefined,let/const虽提升但处于暂时性死区(TDZ),声明前访问抛出ReferenceError;var是函数作用域,let/const是块级作用域;const必须初始化且不可重新赋值,但引用类型内部可变。
-
XSS防护需多层防御,核心是不信任用户输入并转义输出;使用白名单验证数据,优先用textContent避免innerHTML,必要时结合DOMPurify等库;模板引擎启用自动转义;配置CSP响应头限制脚本来源,禁用unsafe-inline和unsafe-eval,采用nonce或hash机制授权内联脚本;避免eval、document.write等危险API;通过report-uri监控违规行为;全链路控制输入、输出与浏览器策略,确保各环节安全。
-
推荐用@mixintypography($size,$weight,$lh)封装字体样式,以rem为单位、无单位行高、语义化字重变量,兼顾响应式、可维护性与无障碍;CSS变量适合动态主题,Sassmixin更适合设计系统约束与兼容性保障。
-
:focus状态下outline不消失是因浏览器UA样式优先级高或:focus-visible策略干扰;应避免直接outline:none损害可访问性,改用outline:2pxsolidtransparent或自定义样式,并补充-webkit-appearance:none等兼容写法。
-
步骤条跳转逻辑由父组件状态和业务规则控制,Emit仅传递点击意图;父组件校验后更新currentStep并加载数据,推荐用v-model封装以保持子组件纯粹。
-
box-shadow的模糊半径(blur-radius)控制边缘柔和度,不改变阴影尺寸;真正实现“扩散”需依赖扩展半径(spread-radius),二者配合使用才能获得自然的光影效果。
-
<metahttp-equiv="refresh">通过content属性实现页面定时刷新,格式为“秒数;url=地址”,秒数为正整数,url省略时默认刷新当前页,不依赖JS,但会丢失状态且不推荐用于生产环境。
-
transparent是CSS中表示完全透明的颜色关键字,用于隐藏元素背景颜色而不影响布局。通过设置background-color:transparent,可使元素背景透明化,显示其父容器或页面底层内容,适用于按钮悬停、模态框遮罩和响应式设计等场景。相比rgba(0,0,0,0),transparent语法更简洁、语义更明确,是实现背景透明的基础实用方法。
-
WebGL渲染必须使用<canvas>元素,因其独有getContext('webgl')方法;其他HTML元素如<div>或<img>不支持该方法,调用会报错。
-
<inputtype="file">需用label关联或JS调用click()激活,禁用display:none或opacity:0;accept仅提示类型,校验须JS+后端;预览用FileReader读取DataURL,大文件避readAsDataURL;FormData上传注意IE11兼容性。
-
JavaScript单页应用(SPA)仅用一个HTML页面,通过JavaScript动态更新内容,实现局部刷新;传统网页每次跳转都请求新HTML并整页重载。
-
localStorage完全不产生请求头带宽消耗,而cookie会随每个同源HTTP请求自动附加到Cookie请求头中,造成冗余传输;前者需JS显式读取并手动发送,后者则无论是否需要均强制携带。