-
Vue中插槽加载状态需用hasSlot+onUpdated/watchEffect判断,或父组件控制v-if渲染;异步场景优先用defineAsyncComponent+Suspense,骨架屏置于#fallback;避免setup中直接读$slots、确保响应性、禁用骨架屏内请求。
-
grid-template-areas不能transition,因其属于离散布局结构变更,非可插值属性;可过渡的是grid-column-start/end等位置属性,配合transform实现平滑动效。
-
@import必须置于CSS文件开头,可结合媒体查询按设备特性加载样式,如打印、小屏或深色模式,避免冗余下载。但其阻塞渲染、无法并行加载且不支持预加载,性能不如<link>标签。建议优先使用<link>控制关键样式加载,仅在非核心场景(如主题、打印)用@import配合媒体查询实现条件引入,并确保语法位置正确以避免失效。
-
HTML5audio原生控件无法用CSS重排,因其非标准DOM节点;必须设controls="false"后手动实现自定义控件,并处理事件、可访问性及移动端限制。
-
外边距重叠是相邻块级元素垂直margin合并取较大值的规范行为;加border或padding可阻止父-子间重叠,因它们破坏了无分隔物条件;推荐首选display:flow-root创建BFC解决。
-
hue-rotate无效主因是SVG图标含内联fill/stroke值或非纯色;需改用fill="currentColor"或fill="none"+stroke="currentColor",并确保CSS控制颜色,配合transition时须设初始filter值。
-
要实现页面“返回不刷新”,需用<KeepAlive>包裹<router-view>,组件须声明name,并用onActivated/onDeactivated替代onMounted/onUnmounted;可通过include、max等属性精细控制缓存。
-
浮动元素“掉下来”是因为父容器宽度不足导致换行,这是浮动的正常设计行为;常见于子元素总宽超父容器、box-sizing为content-box未计入padding/border、字体渲染差异等情形。
-
async/await是ES2017引入的语法糖,核心作用是让异步代码写起来像同步代码,提升可读性和维护性;2.使用场景包括网络请求、数据库操作、文件读写等需等待异步结果的场合;3.注意错误必须用try...catch捕获,避免未处理的Promise拒绝;4.多个不依赖的异步任务应使用Promise.all()并行执行,避免串行性能损耗;5.async函数始终返回Promise,可被.then()处理或在其他async函数中await,完整支持Promise生态。
-
最直接方案是用canvas绘制热力格子:通过fillRect()+rgba()控制颜色与透明度,动态适配容器尺寸,用isPointInPath()实现精准悬停交互,IE11降级为CSSGrid。
-
flex容器需设flex-wrap:nowrap、明确宽度及overflow-x:auto才能横向滚动;white-space:nowrap仅作用于子项内文本,对flex布局无效。
-
Vue组件通信中异步数据问题的核心是子组件需具备未就绪状态容错能力:用v-if控制挂载、prop设默认值、模板用可选链、watch监听+immediate、provide/inject共享状态。
-
响应式图片技术通过srcset和sizes属性让浏览器根据设备屏幕特性自动选择最适配图片;配合picture元素可按设备类型与分辨率双重适配;推荐按宽度命名并用构建工具自动生成多尺寸版本。
-
用:not()排除特定段落样式时,只能传入简单选择器(如类名、ID、属性或伪类),不可用后代/子代等复合选择器;需配合父容器限定作用域或改用显式重置更可靠。
-
JavaScript拖放功能基于原生DragandDropAPI,需设draggable="true"并按序处理dragstart、dragenter、dragover、drop等7个事件,且关键步骤须调用preventDefault。