-
Vue.js的props更新由父组件重渲染驱动,触发子组件重新执行render生成新VNode,再经patch算法比对更新DOM;props本身不被直接diff,仅作为渲染输入,且为只读响应式代理。
-
Less无if语句,用守卫混合模拟编译期条件匹配;无for循环,靠递归混合实现;不支持JS函数,内置函数有限且行为与JS不同;所有逻辑均在编译期展开为静态CSS。
-
contextmenu事件中必须在回调第一行同步调用e.preventDefault(),否则原生菜单会闪现;自定义菜单应挂载到document.body,用clientX/Y定位并设position:fixed;iframe和ShadowDOM需分别在其contentDocument或shadowRoot上监听;菜单关闭后须remove()并恢复焦点。
-
additionalData配置可使SCSS变量全局可用,但路径错误、分号遗漏、@use与@import混用是90%失效主因;必须用@use"@/styles/variables.scss"as*;并确保别名已配置、文件无CSS规则、末尾带分号。
-
服务端渲染(SSR)中不存在“微任务描述符”这一标准概念;真实风险在于全局状态污染、渲染实例未隔离及异步副作用竞态,需通过请求上下文隔离、每次创建新应用实例和正确await异步操作来防范。
-
必须加viewportmeta标签,否则手机端适配失效;需设width=device-width、initial-scale=1.0,禁用user-scalable=no;按钮热区≥44px、避免touch-action干扰;输入框勿用fixed,改用absolute+relative;微信X5内核需显式声明charset、禁用@import、JS等DOMContentLoaded。
-
最快方式是直接修改element.style,但仅影响内联样式;彻底控制需操作class或插入<style>;推荐用classList管理预设类,动态样式可用CSS变量或insertRule。
-
CSS动画期间点击失效的根本原因是浏览器事件捕获阶段对元素几何状态的快照滞后,而非CSS禁用交互;需结合animationstart/animationend/animationcancel三事件动态控制pointer-events,并在keyframes中显式声明,辅以will-change、transform替代方案及兼容性容错。
-
使用border-radius:50%可将正方形图片变为圆形头像,需设置等宽高、用object-fit或background-size优化显示效果,并注意图片比例与分辨率。
-
:invalid抖动动画需确保输入框参与原生验证(如加required),配合animation-fill-mode:both和animation:none重置,兼容Safari及移动端,并响应prefers-reduced-motion降级为静态提示。
-
用:not(.target)最安全,但括号内仅限单个简单选择器;语法错误(如:not(.a.b))会导致整条规则被浏览器丢弃;排除多个类需链式写:not():not(),且:not()仅作用于目标元素自身,不涉及祖先或后代。
-
prefers-color-scheme是纯CSS媒体查询,用于检测系统主题偏好,仅支持light、dark、no-preference三值,需用@media(prefers-color-scheme:dark)语法,不响应运行时切换但现代浏览器支持动态重绘。
-
动态import()返回Promise,实现运行时异步加载模块,区别于静态import的预加载;当执行到import('./module.js')时才发起请求,结合Webpack或Vite可自动代码分割,生成独立chunk,用于路由级分割、功能懒加载或条件加载,首屏仅加载核心代码,降低初始体积,提升性能,且支持浏览器缓存复用。
-
inset-inline-start是逻辑定位属性,值取决于direction和writing-mode:LTR下等价left,RTL下等价right;仅对absolute/fixed元素生效,不可与left/right混用,需配合inset-block-start等使用,依赖父元素direction,非body或系统设置。
-
闭包是JavaScript中函数与其词法作用域的组合,内部函数能持续访问外部函数变量,因作用域链在创建时固化且变量不被回收。