-
IntersectionObserver是实现滚动高亮的唯一合理起点,因其能精准监听标题进入视口,兼顾性能、精度与兼容性,而纯CSS无法感知可视区域。
-
本文详解单页网站中点击导航菜单跳转时,粘性(Sticky)头部遮挡目标标题的常见问题,提供基于jQuery的平滑滚动+头部偏移补偿+滚动高亮+动态固定类切换的完整解决方案。
-
line-clamp不生效主因是父容器未满足-webkit-box布局前提,须同时设display:-webkit-box、-webkit-line-clamp和-webkit-box-orient:vertical,且仅对块级元素有效,Firefox118+才支持无前缀语法。
-
加target="_blank"不安全,必须同时加rel="noopener"才能防止window.opener劫持;否则新页面可篡改原页面地址栏、DOM或拖慢性能,即Tabnabbing攻击。
-
scheme属性在现代HTML中已失效,浏览器静默忽略,W3CHTML验证器报错“Attributeschemenotallowed”,ASP.NET中HtmlMeta.Scheme仅服务端可用但无实际作用,应改用标准化name值或JSON-LD等替代方案。
-
优先选position:fixed;它不依赖父容器滚动状态,能真正钉在视口顶部,而sticky在根元素上行为不可靠且易受transform/filter等属性干扰。
-
Object.is与===的核心区别在于对NaN和带符号零的处理。1.NaN比较:Object.is(NaN,NaN)返回true,而NaN===NaN为false;2.+0与-0比较:Object.is(+0,-0)返回false,而===认为它们相等。其他情况下二者行为一致,均不进行类型转换且对象比较基于引用。
-
核心思路是通过接口抽象和构造函数注入实现网络请求的可替换性,业务类依赖NetworkService等抽象接口而非具体实现,测试时传入Mock或Stub对象控制返回数据,确保测试快速稳定可重复。
-
浮动元素混排错乱是因为脱离文档流后中间内容“看不见”浮动块,导致视觉顺序覆盖DOM顺序;根本解法是将浮动元素置于普通流元素之前,确保渲染时已知占位。
-
最快见效的是display:inline-block,但需处理空白符缝隙;float兼容旧版但需清除浮动;flex是当前首选,注意IE10–11兼容性;grid适合固定列布局,IE不支持。
-
ChromeDevTools通过Performance面板定位CSS选择器复杂引发的样式重计算、强制同步布局及重排开销:关注“RecalculateStyle”长任务、调用栈中getComputedStyle等布局读取、高频匹配的选择器,结合Rendering面板层异常与querySelectorAll验证优化效果。
-
浮动元素外边距折叠导致间距异常,因脱离文档流使margin计算失效;应避免直接设margin,改用padding、BFC包裹或Flex/Grid布局,配合gap属性和box-sizing统一控制。
-
align-items只作用于Flex容器的直接子元素(flexitem),控制其在交叉轴上的对齐方式;默认flex-row时交叉轴为垂直方向,flex-col时为水平方向,需确保父容器为flex且具有明确高度。
-
:focus-visible比:focus更合适,因为它仅在真实键盘导航时激活蓝框,避免鼠标点击等场景的干扰,保障键盘用户定位当前焦点。生效需两个前提:禁用全局outline重置且显式声明outline样式;还需兼顾Safari兼容性、暗色模式及高对比度适配。
-
Bootstrap5明确放弃IE(含IE11)支持,因其缺失CSS自定义属性、标准flex/grid、IntersectionObserver等核心能力,且无可靠polyfill可补全,官方自Alpha版起已移除所有兼容逻辑。