前端技术文章
-
视频网站首页需解决三大技术难题:背景视频防跳动(fixed+object-fit+autoplay+muted+playsinline)、多列卡片错位(flex布局+aspect-ratio+flex-shrink:0)、多区域同步播放(单video+canvas逐帧绘制+显式设置canvas尺寸)。251 收藏 -
BEM规范强制块名使用中划线:user-profile✅,userProfile❌(CSS非法),user_profile❌(混淆修饰符);元素名必须基于完整块名+双下划线,如user-profile__avatar✅;工具链依赖中划线正则校验,确保语义唯一与工程化稳定。155 收藏 -
不能用float实现现代多列布局,它与grid是替代而非互补关系;float会使grid子项脱离轨道、导致塌陷重叠,且clear无效,CSS规范已明确float在Flex/Grid子项上无效果。190 收藏 -
poster不能替代首帧,仅可作加载占位;因其为静态图、早于视频解码渲染,与真实首帧来源和时机均不同,需用ffmpeg导出首帧覆盖并处理加载失败fallback。126 收藏 -
Vue3中inject不创建响应式,仅透出provide侧已声明的响应式代理;若provide未用reactive/ref包装,则inject返回的普通值无法触发更新。153 收藏 -
trimEnd()比trim()更合适,因为用户粘贴文本常在末尾有多余空行或空白符,trimEnd()仅清除末尾空白,避免误删开头有意保留的缩进或空格。138 收藏 -
@media(orientation:landscape)不稳定,根本原因是viewport缺失或被覆盖、依赖重排导致延迟触发、iOS/安卓兼容性差异;需配合viewport设置、aspect-ratio兜底、dvh单位及主动matchMedia监听。351 收藏 -
不能直接将React或Vue的render函数用于Canvas渲染,因其默认生成DOMVNode或ReactElement,依赖document.createElement等DOMAPI;Canvas需自定义renderer接管VNode解释权,手动实现绘制逻辑与坐标映射。484 收藏 -
v-show通过直接操作DOM的display样式实现显隐,跳过虚拟DOM的diff和patch流程;初始即渲染所有元素,仅切换display值,适合高频切换但需注意内存常驻问题。138 收藏 -
不能直接用CSS选择器定位带阴影的元素,因为CSS选择器无法基于已应用的样式(如box-shadow)进行匹配,只能依据DOM结构、属性或状态。正确做法是通过类名(如.has-shadow)、数据属性(如data-shadow)或语义化标签等结构性标识,在添加box-shadow时同步赋予元素可被选择的特征,从而实现精准定位与管理。286 收藏 -
事件委托高效是因为将多个子元素的事件监听集中到父元素,利用冒泡机制统一处理,节省内存、提升性能,且动态增删子元素时无需重新绑定或解绑。458 收藏 -
HTML水印仅为视觉提示,非真正版权保护;background-image水印易被删除,因伪元素和背景图属标准CSS层级,无封装加密,且跨域图片需设置crossOrigin='anonymous'并服务端支持CORS。486 收藏 -
float在现代开发中已无布局未来,仅剩邮件模板多栏排版和图文环绕两个不可替代场景;display:flow-root是标准清除方案,而迁移本质是思维重构——从“让元素浮起”转向“定义数据流与轴向”。472 收藏 -
局部同构更新不能实现“不重刷页面却更新SEO”,SEO内容必须由服务端直出并存在于初始HTML中;局部刷新仅能安全更新与服务端输出严格匹配的子树,不得破坏已有SEO结构。478 收藏 -
优先选iframe嵌入第三方地图,因其开箱即用、兼容性好、无需密钥和JS初始化;需从官方“嵌入地图”页签获取代码,注意src格式、响应式写法及国内GFW下的fallback方案。448 收藏