前端技术文章
-
filter+transition可实现平滑切换,但需确保函数形式一致(如grayscale(100%)↔grayscale(0%))、避免与transform共存、统一字符串格式并适配prefers-reduced-motion。427 收藏 -
output标签必须绑定form元素才能正常更新;它本质是表单控件,依赖form关联和for属性指向输入源,无form或for则无法动态刷新,需配合oninput事件与JavaScript手动赋值value。282 收藏 -
标记-清除算法通过可达性分析识别循环引用:从GCRoots出发遍历并标记所有可达对象,未被标记的不可达对象(即使彼此引用)在清除阶段被统一回收。203 收藏 -
flex-wrap:wrap是实现自动换行的关键,不设则子元素强行挤在一行;需配合gap或space-around实现每行均匀分布,并通过flex-basis响应式调整列数,同时控制卡片宽高一致性。256 收藏 -
SVG中<circle>与<ellipse>的核心差异在于坐标系理解:原点在左上角,cx/cy为绝对坐标,r或rx/ry需匹配svg宽高防溢出,且均不支持百分比单位。115 收藏 -
Object.freeze仅浅冻结,嵌套对象仍可修改;deepFreeze需递归实现并严格在模块加载最前端执行,否则引用已缓存导致失效;冻结前须切断原型链、禁用代理与访问器。279 收藏 -
<p>Less加减法必须单位一致,因编译期静态类型检查禁止跨单位运算;%与px混用如100%-20px会报错,需统一为无单位小数、换算为px或改用calc()字符串插值。</p>351 收藏 -
应移除href属性并添加aria-disabled="true"、role="link"和tabindex="0",配合pointer-events:none与cursor:not-allowed,确保键盘与屏幕阅读器用户均可感知禁用状态。124 收藏 -
跨组件锚点跳转需确保目标元素已真实挂载,React用useEffect+ref、Vue用onMounted/nextTick监听,优先用ref而非id查询,计算滚动位置时用getBoundingClientRect().top+scrollY,并处理头部遮挡及Safari兼容性问题。408 收藏 -
@media(hover:hover)是最可靠的悬停检测方式,它严格判断系统是否稳定支持:hover伪类,而非仅检测输入设备精度;需用其包裹所有悬停样式与transition,并配合matchMedia在JS中同步状态。212 收藏 -
纯CSS变量无法独立实现视差滚动,必须由JS注入--scroll-y等变量,再通过calc()配合transform实现;background-attachment:fixed在现代浏览器中受限严重,JS驱动方案最兼容。495 收藏 -
绝对定位子元素不占位,完全脱离文档流,父容器计算尺寸时无视其存在;需为父元素设置position:relative等非static定位才能建立定位上下文,否则偏移参考祖先或body。427 收藏 -
用class切换背景色应将颜色变量抽离到主题类名(如theme-light/theme-dark),通过CSS选择器层级或CSS变量统一控制,避免硬编码和!important;需同步设置HTML根元素class防FOUC,并显式重置表单控件及SVG等所有颜色上下文。459 收藏 -
懒加载与动态导入本质是按需加载技术,核心为动态import()语法,支持运行时调用、变量路径和构建工具代码分割,用于路由、交互、视口等场景,需结合实际性能权衡使用。281 收藏 -
不能直接读取富文本或图片二进制数据,navigator.clipboard.read()仅能读取指定MIME类型的Blob,但支持极有限:仅Chromium稳定支持图片(image/png等),text/html常被忽略或降级为纯文本;需用户手势触发、HTTPS环境,且Firefox、Safari不支持read()。130 收藏