-
当textarea同时监听keydown(Enter)和focusout事件时,按Enter键会触发两者,造成重复更新与渲染;本文介绍通过事件解耦与条件拦截消除竞态,无需setTimeout即可安全执行单次提交逻辑。
-
img标签src必须为有效路径,否则图片留白并报错;alt是可访问性与SEO必需属性,须按语义合理设置;width/height应明确指定以避免布局抖动;base64仅适用于超小图,大图慎用。
-
ServiceWorker注册失败主因是环境不满足:仅支持HTTPS(localhost除外),作用域越界需显式设置scope,sw.js须可访问且Content-Type正确,注册代码应尽早执行,DevTools需启用“Updateonreload”。
-
用transform:rotateY(180deg)可实现图片水平翻转,但需父容器设perspective和transform-style:preserve-3d,并为图片添加backface-visibility:hidden;更轻量方案是scaleX(-1),无需3D上下文且兼容性好。
-
<noscript>仅在JS被禁用或脚本加载失败时生效,不能用于检测浏览器兼容性;需用特性检测+UA辅助判断老浏览器,并提供降级方案而非单纯提示。
-
使用CSSanimation和@keyframes可实现元素颜色动态变化,通过定义关键帧控制background-color或color属性,结合animation属性应用到目标元素,实现平滑过渡,如背景色由白变蓝、文字由灰变红,并可通过forwards保持最终状态,支持多属性同时动画与无限循环,配合缓动函数优化视觉效果。
-
可通过创建快捷方式、拖动文件至桌面、设置默认浏览器或使用右键菜单四种方式在桌面直接运行HTML文件,实现快速预览与调试。
-
Symbol是JavaScript中用于创建唯一值的原始类型,常用于避免对象属性命名冲突;每次调用Symbol()都会返回唯一值,即使描述相同,因此sym1===sym2为false;用Symbol作属性名可使多个模块添加同名属性而不覆盖;Symbol属性不会被for...in、Object.keys()或JSON.stringify()遍历或包含,需通过Object.getOwnPropertySymbols()显式获取;Symbol适合添加私有或元信息属性,防止命名碰撞和意外修改。
-
::after清除浮动失效的根本原因是伪元素默认display:inline,无法触发BFC且不撑高父容器;必须同时满足content非none(如"")和display为block/table/flex等块级显示值。
-
width和height在flex容器中仍生效,但作为flex-basis的后备值;当flex-basis未设置或为auto时起作用,否则被忽略;min-width/min-height及box-sizing会影响最终尺寸计算。
-
伪类和伪元素不能嵌套,但可组合使用;如:hover::before是合法链式限定,伪类作用于真实元素,伪元素附加内容,顺序解析而非嵌套。
-
JavaScript中高亮关键词需先转义正则特殊字符,再用newRegExp(escapeKeyword,'gi')匹配,最后replace为<mark>$&</mark>等安全HTML标签,处理用户输入时须防XSS。
-
图标尺寸颜色受父元素干扰,因默认继承font-size和color;BEM中图标应为元素(如.btn__icon),禁用全局类名;SVG用currentcolor和CSS变量适配,图标字体需封装进BEM元素并伪元素注入。
-
图像处理可通过CanvasAPI操作像素实现,灰度化采用加权平均公式gray=0.299×R+0.587×G+0.114×B;亮度调节通过偏移RGB值,对比度调节利用系数缩放,需限制值在0-255;边缘检测使用Sobel算子计算梯度;处理前建议灰度化,注意边界与性能优化,大图可结合WebWorkers提升效率。
-
history.pushState()新增历史记录,replaceState()替换当前记录;路由跳转用pushState(),修正URL用replaceState();popstate需手动监听并初始化,避免重复绑定,history.state不随刷新保留。