前端技术文章
-
screen-spanning媒体查询不可靠,不应作为唯一判断依据;它仅在Chrome119+/Edge97+支持,Safari/Firefox不支持,且依赖真实双屏硬件与系统跨屏渲染模式,易因缩放、iframe或厂商屏蔽而失效。389 收藏 -
不能用,HTML5已移除语义支持;现代浏览器为兼容性仍解析但不保证渲染一致,strict模式下可能被忽略或降级,W3C明确定义为obsolete。389 收藏 -
Leaflet用L.control.scale()一行添加准确比例尺,自动适配缩放与投影;Mapbox需手动计算pixelsToMeters并监听moveend;注意CSS盒模型、DPR和高纬度精度问题。389 收藏 -
hidden属性加了却没隐藏,是因为CSS未配置兜底规则[hidden]{display:none!important},导致全局样式覆盖其默认行为;它本质是HTML5语义化隐藏机制,非CSS控制。389 收藏 -
最稳方案是用.breadcrumb-item:not(:last-child)::after添加分隔符,避免+选择器失效和语义缺失;需设content、vertical-align:middle和line-height:1,小屏用content:""隐藏,确保响应式与无障碍兼容。389 收藏 -
letter-spacing是控制字符间距的正确CSS属性,用于中英文字符间精细调整;“SpacingToken”是.NETRazor服务端解析概念,与前端排版无关,浏览器不识别spacing-token等非标准属性。389 收藏 -
ClassMixins模式通过将用户身份拆分为AuthMixin、PaymentMixin等正交能力模块,实现零耦合复用;要求Mixin不定义__init__、不假设属性存在、命名带Mixin后缀;组合时按需叠加,方法冲突需显式协同而非覆盖。389 收藏 -
要避免IntersectionObserver立即触发,需设threshold:[0]并配合rootMargin(如'200px');懒加载图片须用data-src替代src,回调中赋值并清理;复用单个observer实例,加载后调用unobserve;不支持时降级为节流scroll+getBoundingClientRect。389 收藏 -
JavaScript定时器非实时调度器,而是事件循环中延迟触发的异步任务;setTimeout保证至少延迟后执行,setInterval仅按间隔向队列添加回调,均不精确。389 收藏 -
打印时position:fixed元素不出现是预期行为,非bug;因打印无视口概念,fixed语义失效,Chrome/Firefox/Safari均跳过渲染,需重置为static并清空top/right/bottom/left/z-index等属性。389 收藏 -
是的,const声明后仍可修改对象属性,因其仅锁定变量绑定(指针),不冻结堆内存中的数据;若需真正不可变,须配合Object.freeze()或不可变数据结构。389 收藏 -
Jest更适合中大型长期维护项目,Vitest更适合新项目和Vite生态;两者均需正确配置以避免模块解析错误,可靠测试需覆盖边界、隔离副作用、验证行为而非实现细节。389 收藏 -
PostCSS是构建时工具,必须集成于Webpack/Vite等构建流程,无法在HTML中直接运行或浏览器端实时处理;其作用是在编译阶段将CSS规则静态注入HTML的style属性或生成CSS文件。389 收藏 -
一个页面只能有一个<main>元素,且不能嵌套在<header>、<footer>、<nav>、<aside>内;它必须包裹本页独一无二、不可复用的核心内容,否则将损害可访问性、SEO及Lighthouse评分。389 收藏 -
Vue.js父子组件通信通过$emit派发事件实现双向数据流,子组件触发'inc'/'dec'操作类型,父组件统一校验并更新quantity,总价用computed自动响应变化。389 收藏