-
HTML/CSS边框错位的五大精准对齐方案:一、box-sizing:border-box统一尺寸基准;二、消除inline-block空白间隙;三、CSSGrid像素级控制;四、border-collapse处理表格边框;五、transform:translateZ(0)修正亚像素渲染。
-
根本原因是缩放导致CSS像素与物理像素对齐错位,触发0.5px级渲染裂缝;应优先用vw/vh替代px、避免单位混用,并将偏移交由支持亚像素的transform:translate()处理。
-
:active无法实现导航栏“点击后保持展开”,因其仅为瞬时伪类,不记录状态、不触发重排、不能配合display或max-height过渡;正确做法是用JS切换.active类并结合CSS过渡与可访问性支持。
-
JavaScript中的this在函数执行时根据调用方式动态决定:默认绑定(非严格模式指向全局,严格模式为undefined)、隐式绑定(obj.method()中this指向obj)、显式绑定(call/apply/bind手动指定)、new绑定(优先级最高,指向新实例)。
-
font-smoothing无法解决跨浏览器字体渲染问题,因其仅为WebKit/Blink私有属性,Firefox/IE不支持,且macOS与Windows行为不一致,实际渲染由系统API决定,CSS仅能微调。
-
使用Materialize实现响应式导航需引入其CSS和JS文件,构建含sidenav的nav结构,并通过JavaScript初始化Sidenav组件,利用hide-on-med-and-down和sidenav-trigger等类名适配不同屏幕,自动实现移动端折叠菜单与桌面端常显菜单的切换。
-
旧版安卓WebView中inline-block元素间间隙源于空白字符被渲染为文本节点,产生约4px不可见行框;font-size:0作用于父容器可消除该间隙,但需重置子元素字体且不适用于含真实文字的场景。
-
EdgeLegacy(≤79)完全不支持datalist,因其EdgeHTML引擎从未实现该HTML5规范,输入框无下拉建议、DOM忽略datalist、JS无法获取list属性,须用JS模拟下拉组件。
-
JavaScript展开运算符(...)用于将可迭代对象或对象展开为独立元素或属性,支持数组合并与浅拷贝、函数传参、对象合并与解构、类数组转换等,但仅浅层展开且不支持null/undefined。
-
CSS动画在隐藏页会被浏览器暂停,CPU无负担;而requestAnimationFrame不会自动感知可见性,需手动结合document.hidden和visibilitychange控制启停。
-
前端日志与用户行为分析可通过封装Logger模块实现,支持分级记录并上报;结合事件监听自动采集点击、路由变化等行为数据。
-
MutationObserver默认不监听任何变化,必须手动配置、启动并指定真实DOM节点;监听class/style需用setAttribute而非直接赋值;监听文本需同时设subtree、characterData为true;React/Vue中应监听稳定父容器并及时disconnect。
-
本文详解如何通过静态访问器(staticget)、接口约束与泛型工厂模式,使父类无需硬编码即可动态获取子类定义的静态配置(如singularName/pluralName),消除重复方法声明,兼顾运行时健壮性与编译时类型检查。
-
Safari表单原生验证弹层需三法并用才能禁用:form加novalidate、input加oninvalid="this.setCustomValidity('')"、oninput中同步调用setCustomValidity(''),否则blur时仍会触发阻断式弹层。
-
必须阻止dragover默认行为才能触发drop事件,再读取e.dataTransfer.files获取文件列表,最后用FormData发送请求;accept属性无效,校验须在drop回调中手动完成。