Isolate pattern viewport scrolling

This commit is contained in:
wuyanwanwu
2026-08-14 00:49:39 +08:00
parent 193f55fe30
commit c999334671
13 changed files with 45 additions and 41 deletions
+25 -23
View File
@@ -809,29 +809,31 @@ export default function Home() {
</div>
</div>
<div
className="canvas-stage"
ref={patternStageRef}
>
<div className="canvas-wrap">
<canvas
ref={canvasRef}
onPointerDown={handlePatternPointerDown}
onPointerMove={handlePatternPointerMove}
onPointerUp={handlePatternPointerUp}
onPointerCancel={handlePatternPointerCancel}
onLostPointerCapture={handlePatternLostPointerCapture}
onContextMenu={(event) => event.preventDefault()}
onClick={handleCanvasClick}
onMouseMove={handleCanvasMove}
onMouseLeave={() => setHoveredPixel(null)}
aria-label="转换后的拼豆像素图,可拖动查看,轻点格子选择颜色"
/>
{hoveredPixel && <div className="pixel-tooltip" style={{ left: hoveredPixel.left, top: hoveredPixel.top }}>
<span className="tooltip-swatch" style={{ backgroundColor: hoveredPixel.color.hex }} />
<strong> {hoveredPixel.row} · {hoveredPixel.column} </strong>
<small>{hoveredPixel.color.code} · {hoveredPixel.color.name} · {hoveredPixel.color.hex}</small>
</div>}
<div className="canvas-viewport">
<div
className="canvas-stage"
ref={patternStageRef}
>
<div className="canvas-wrap">
<canvas
ref={canvasRef}
onPointerDown={handlePatternPointerDown}
onPointerMove={handlePatternPointerMove}
onPointerUp={handlePatternPointerUp}
onPointerCancel={handlePatternPointerCancel}
onLostPointerCapture={handlePatternLostPointerCapture}
onContextMenu={(event) => event.preventDefault()}
onClick={handleCanvasClick}
onMouseMove={handleCanvasMove}
onMouseLeave={() => setHoveredPixel(null)}
aria-label="转换后的拼豆像素图,可拖动查看,轻点格子选择颜色"
/>
{hoveredPixel && <div className="pixel-tooltip" style={{ left: hoveredPixel.left, top: hoveredPixel.top }}>
<span className="tooltip-swatch" style={{ backgroundColor: hoveredPixel.color.hex }} />
<strong> {hoveredPixel.row} · {hoveredPixel.column} </strong>
<small>{hoveredPixel.color.code} · {hoveredPixel.color.name} · {hoveredPixel.color.hex}</small>
</div>}
</div>
</div>
</div>