-
预解析是引擎对整个作用域的快速扫描,仅提升var和function声明;懒解析则延迟函数体解析至首次调用,二者协同缩短首屏可交互时间。
-
loading="lazy"仅对初始HTML中存在且不在首屏视口内的<img>生效;动态渲染、overflow:hidden父容器、<source>标签、srcset/sizes配置错误或首屏关键图误用均会导致静默失效。
-
HTML不压缩图片,只引用文件;Canvas压缩须先缩放尺寸再设0.7~0.8质量,srcset必须配sizes,WebP需用<picture>加fallback,原始图编码状态影响压缩效果。
-
<details>和<summary>是实现语义化、可访问、免JS的FAQ最佳方案,原生支持键盘操作与屏幕阅读器,需确保<summary>为<details>首子元素且双标签闭合,配合:target与脚本实现锚点展开,并优化移动端点击热区与视觉断层。
-
iOS上word-break:break-all失效因Safari渲染兼容性限制,中文等无空格文本中常被忽略;可靠方案是overflow-wrap:break-word、word-break:break-word与white-space:normal三属性协同。
-
使用position:sticky结合Flexbox或CSSGrid可高效实现响应式侧边栏滚动吸附,通过设置top值使侧边栏在滚动时固定,利用flex或grid布局实现主内容与侧边栏自适应排列,并在小屏通过媒体查询关闭sticky以优化体验。
-
WeakRef不能自动清理缓存键,必须配合FinalizationRegistry才能实现对象回收后删除缓存键;单独用WeakRef存Map值会导致缓存膨胀、查找变慢。
-
expires必须用RFC7231规定的GMT(即UTC)格式字符串,如“Wed,21Oct202507:28:00GMT”,本地时间或ISO格式会被忽略而退化为会话Cookie;max-age优先于expires,以秒为单位更可靠。
-
Emit实现表单验证的核心是输入框主动上报变化,由父组件统一校验;相比v-model的语法糖局限,Emit支持失焦、实时、提交等多时机控制,配合rules传入和validate暴露,实现解耦与可控。
-
Compass是一个基于Ruby的Sass扩展框架,提供CSS3mixin、Sprite图生成、网格布局和自动浏览器前缀等功能,曾广泛用于简化CSS开发。它通过@import"compass"引入,支持border-radius等无前缀写法,并自动生成兼容样式。其核心功能包括响应式网格、图像雪碧、排版工具等,适用于老项目维护。由于Compass已于2018年停止维护,新项目推荐使用DartSass配合Autoprefixer或PostCSS等现代工具链替代,以确保可维护性和性能优化。
-
HTML5中引入JavaScript有四种方式:一是通过<scriptsrc="...">外链JS文件,支持defer/async;二是内嵌代码于<script></script>中,建议置于body底部;三是显式声明type属性,如type="module"启用ES模块;四是动态创建script标签实现按需加载。
-
HTML不能运行,需用浏览器打开查看:先创建index.html文件并保存为UTF-8编码,再双击或右键选择浏览器打开;进阶可使用http-server本地服务器;注意文件后缀、路径及代码闭合。
-
必须用html元素的font-size,因为所有rem值仅依赖根元素计算结果,修改它可使全站文字自动响应;改body会干扰em计算、覆盖用户系统缩放设置,导致视障用户可访问性崩溃。
-
Grid子元素对不齐主因是未显式控制对齐行为;需确认父容器display为grid、子项为直接子元素,并合理使用justify-items/align-items或justify-self/align-self,避免margin:auto等干扰。
-
看不见::after分隔线最常见原因是未设置content:"",且需定义尺寸和样式;水平分隔线贴右侧可用绝对定位+垂直居中;多元素共用分隔线应由父容器统一绘制。