-
text-stroke不是所有浏览器都支持,别直接上线用用text-stroke给文字加描边,看着很酷,但实际支持度有限:Chrome和Safari基本没问题(需-webkit-text-stroke),Firefox完全不支持,Edge从v79+开始支持标准写法但仍有兼容风险。常见错误现象:text-stroke:2pxred;在Firefox里完全没效果,控制台也不报错,容易误以为代码写错了。必须写-webkit-text-stroke才能在旧版Chrom
-
纯CSS树形菜单用checkbox作开关,通过:checked~.submenu或+选择器控制显隐;需确保input与.submenu同级且input在前,隐藏input推荐position:absolute;left:-9999px;动画用max-height过渡而非height或display。
-
必须用requestAnimationFrame而不是setTimeout,因其由浏览器调度、对齐刷新率、页面不可见时自动暂停;setTimeout受主线程阻塞影响易卡顿跳帧。
-
Canvas文字不显示需检查fillStyle和font是否已设置,二者缺一不可;y坐标对应基线而非顶边;中文需显式声明字体并等待WebFont加载完成;慎用strokeText和大阴影以防性能下降。
-
Chrome中font-smoothing无效是因-webkit-font-smoothing仅macOS有效,Windows/Linux下被静默忽略;应优先使用font-optical-sizing:auto等标准属性,而非依赖私有平滑控制。
-
flex-wrap:wrap未换行主因是父容器宽度过大或未设宽,致子项可单行排列;需设width/max-width、检查flex-shrink及white-space;justify-content仅作用于当前行内对齐。
-
按钮状态切换不自然的主因是未在默认状态中定义transition,导致进出动画不一致;应显式声明需过渡的属性、统一各交互态的过渡参数,并排查样式覆盖与属性兼容性问题。
-
overflow:hidden不能裁剪position:absolute元素,因其仅对既是定位上下文又是新层叠上下文的祖先生效;若最近定位祖先未设overflow:hidden或不存在,则裁剪失效。
-
background-position:center仅控制背景图定位点对齐容器中心,不控制缩放与裁剪;需配合background-size:cover才能实现居中剪裁,且裁剪区域受图片与容器宽高比影响。
-
可选链操作符?.是用于安全访问深层嵌套属性、可能为空的对象方法及数组索引的语法,遇null/undefined即返回undefined;??则用于null/undefined时的默认值兜底,二者职责分明且常组合使用。
-
微服务下JavaScriptAPI设计需兼顾独立性与前端友好性。1.采用RESTful风格,用名词表示资源如/users,通过HTTP方法定义操作,统一返回结构含data、success、message;2.引入BFF或APIGateway聚合数据,减少前端多请求负担,提升性能;3.耗时任务使用异步模式,返回202状态码及任务ID,前端轮询或WebSocket监听结果;4.用Swagger定义接口并生成TypeScript类型,确保前后端契约一致,提升协作效率与系统稳定性。
-
不能。grid-auto-flow:dense仅按DOM顺序填空,不支持跨行高度自适应,无法实现真Masonry;column-count+break-inside:avoid是目前最稳定纯CSS替代方案。
-
yield本身不处理异步,仅暂停生成器并交出控制权;真正实现异步暂停的是yield后接Promise并配合await或手动next()调度;asyncfunction*使yield可等待Promisesettle后再产出值。
-
Vue.js数组响应式失效主因是直接索引赋值或改length;需用7个变异方法(push/pop/shift/unshift/splice/sort/reverse)或$set/splice替代;Vue3虽用Proxy增强支持,仍建议优先使用变异方法。
-
HTMLMediaElement.play()是原生方法,不存在html5play函数;分段播放需手动控制currentTime、pause()、play()及timeupdate事件,用区间判断替代精确时间点以避免失效。