跳到主要内容

交互与命中

指针命中必须回答:client 点落到哪个节点、落在该节点局部用户空间的哪里。生产换算永远是 client → inverse(getScreenCTM)。不要用 offsetX 当用户单位。

几何怎么建见 02 标记与几何工程。CTM 定义见 用户坐标系与变换

文档清单

文档解决的问题
指针事件与 elementFromPointDOM 命中 vs isPointInFillpointer-eventsopacity: 0
getScreenCTM 与坐标变换生产换算;getCTM 不含外层 HTML CSS transform
相机与锚点缩放改 viewBox;锚点公式;不要 CSS scale 整棵树
指针状态机与捕获pointerIdsetPointerCapture;不要 movementX 累加
框选多选与变换手柄橡皮筋屏幕空间、命中用户空间;non-scaling-stroke
Overlay 与 HTML 叠加输入框叠在 SVG 上;getScreenCTM 对齐
SVG 无障碍title / descrole;可交互图不要做成 img

约定

  • isPointInFill / isPointInStroke 的点在 元素局部用户空间
  • getCTM() / getScreenCTM() 的 IDL 是 DOMMatrix | null。不在渲染树就不要算。
  • vector-effect 生产只用 non-scaling-stroke(手柄描边、网格)。
  • 用户空间 = viewBox 用户单位。

权威资料

核对日期:2026-08-26