修正节点内视频预览被裁切:绕过 art-venture 的全局 CSS 误伤

现象:「加载透明视频」节点下方的预览按原始像素尺寸渲染,容器
overflow:hidden 把画面裁掉一大块,只能看到局部。

根因不在本节点。ComfyUI 官方给节点视频预览的样式本来是对的
(.comfy-img-preview video { object-fit:contain; width:100%; height:100% }),
但 comfyui-art-venture 的 web/upload.js 为自家 LoadVideoFromUrl 注入了一条
同名全局选择器的规则,把宽高改成 var(--comfy-img-preview-width/height)。
这两个变量只在 art-venture 自家节点的 DOM 上定义,其它节点取到空值,
变量为空时整条声明失效,<video> 退回固有尺寸撑破容器而被裁切。

修法(web/rui_video_preview_fit.js,随 WEB_DIRECTORY 加载):
- 本节点专属规则 .comfy-img-preview.rui-video-fit video 强制
  100% + object-fit:contain;容器标记通过拦截 node.videoContainer
  的赋值时打上,无需轮询、不受创建时机影响
- 全局兜底规则给那两个变量补 100% 回退值:变量有值时行为完全不变
  (art-venture 自身节点不受影响),仅在变量为空这种本就失效的
  情况下恢复官方行为,对其它插件是纯修复

浏览器内 A/B 实测(640x640 视频、347px 宽容器):
修复前 video 渲染 640x640 溢出被裁;两条规则各自生效后均为 347x347 完整显示。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
rui40000
2026-08-18 18:29:05 +08:00
co-authored by Claude Opus 5
parent 61129bde89
commit a513f5a66c
3 changed files with 128 additions and 1 deletions
+4 -1
View File
@@ -183,4 +183,7 @@ NODE_DISPLAY_NAME_MAPPINGS.update(EIGHTDIR_NODE_DISPLAY_NAME_MAPPINGS)
NODE_DISPLAY_NAME_MAPPINGS.update(UNMULT_NODE_DISPLAY_NAME_MAPPINGS)
NODE_DISPLAY_NAME_MAPPINGS.update(LOADVIDA_NODE_DISPLAY_NAME_MAPPINGS)
__all__ = ['NODE_CLASS_MAPPINGS', 'NODE_DISPLAY_NAME_MAPPINGS']
# 前端资源目录:修正节点内视频预览被 art-venture 的全局 CSS 裁切的问题
WEB_DIRECTORY = "./web"
__all__ = ['NODE_CLASS_MAPPINGS', 'NODE_DISPLAY_NAME_MAPPINGS', 'WEB_DIRECTORY']