前端技术文章
-
必须用.value是因为ref返回的是响应式包装对象,其内部通过getter/setter拦截对.value的读写以实现依赖收集和更新触发;模板中自动解包,script中需手动访问。414 收藏 -
设grid-template-rows:50vh1fr,父容器需有明确高度(如height:100vh);首项加align-items:start防拉伸,避免height:100%;响应式下vh有兼容性问题,建议JS动态计算或用CSS变量。414 收藏 -
Symbol是ES6引入的唯一值类型,用于避免属性名冲突、模拟私有成员、替代常量枚举及自定义对象行为。414 收藏 -
HTML分享本身不拖慢传播,因其本质是静态链接或轻量JS调用,不阻塞渲染;真正影响传播的是分享路径顺畅度、卡片吸引力及内容与平台流量逻辑的匹配度。414 收藏 -
JavaScript中最推荐的单例实现是模块级单例,利用ES6模块默认导出的天然单例特性,简洁、可靠且符合语言习惯;其次为ES6Class配合静态工厂方法,避免直接new;闭包方式适用于ES5环境。413 收藏 -
Array.prototype.every()返回布尔值,天然适配“全通过才放行”的权限校验;支持短路求值、零额外开销、链式嵌套、否定校验,但需防范空数组误判及undefined异常。413 收藏 -
应使用CSScolor属性而非废弃的<font>标签;内联样式适合临时调试,类选择器利于统一维护;需显式定义伪类如:hover;注意可访问性与对比度规范。413 收藏 -
embed标签必须显式设置type="application/pdf",否则Firefox/Safari会失败;iframe兼容性更好;复杂功能需用pdf.js实现。413 收藏 -
column-width是建议宽度而非强制分割,需父容器设width或max-width才生效;多列与视差滚动原生不兼容,应改用Grid/Flex模拟列结构并手动实现视差。413 收藏 -
appearance:none单独使用基本无效,必须配合-webkit-appearance:none、-moz-appearance:none三前缀声明,立即设置width/height防塌缩,并用position:absolute+clip隐藏原生控件以保障可访问性与点击区域。413 收藏 -
@layer优先级由源码中声明顺序决定,第三方样式未包装则落入隐式顶层并高于所有显式层;必须用@importurl()layer()显式导入框架到指定层,且@layer声明须在顶层、不可嵌套。413 收藏 -
轮播图的指示器和左右箭头必须共用同一BEM块名carousel,分别命名为carousel__indicator和carousel__control,后者用--prev/--next修饰符区分方向,禁用状态统一用--disabled修饰符,确保样式隔离、状态同步与事件委托一致。413 收藏 -
最稳妥的做法是用rgba()或hsla()设置background-color实现背景半透明,避免使用opacity(会导致整个元素及子元素变透明);现代浏览器均支持,可结合CSS自定义属性动态控制。413 收藏 -
WebSocket需手动实现重连机制,关键包括:onclose须在readyState=0时用addEventListener绑定;采用指数退避(起始1s、倍率1.6、上限30s)并设最大重试次数;结合心跳(25sping/15spong超时)与连接标识防消息混乱;所有send前校验readyState===OPEN且匹配_ws._id。413 收藏 -
main标签用于定义页面核心内容,提升语义化与可访问性,一个页面仅能使用一次,不可嵌套在header、footer等元素内,应排除导航、页脚等公共部分。413 收藏