请帮忙。 我有一个像下图这样的图像显示在主页上(一个更大的图像)。 请注意,“FORGE”房屋的中间有一个白色和蓝色标记,并带有黑色箭头。
“出租”房屋也是如此。
这些标记中的每一个都将充当交互式按钮。以下是预期的交互行为:
还希望它能够响应,如果当屏幕调整大小时,按钮应保留在这些特定位置。
我正在尝试使用绝对定位、x、y 坐标来尝试使其工作。但由于我喜欢此类用户界面的经验,无法找到可行的解决方案。不确定我是否应该使用画布或其他方法。
任何帮助将不胜感激。
我的代码看起来像这样,但看起来我没有走在正确的轨道上:
const ImageComponent = () => { const markers = [ { name: 'Forge', x: 100, y: 200 }, { name: 'Rentals', x: 300, y: 150 }, // Add more ]; const handleMarkerClick = (m) => { // do something with marker }; return ( <div style={{ position: 'relative' }}> <img src="path/to/image.jpg" alt="Image with markers" /> {markers.map((marker, index) => ( <div key={index} className="marker" style={{ left: marker.x, top: marker.y, position: "absolute" }} onClick={() => handleMarkerClick(marker)} /> ))} </div> ); };
您应该将控件放置在图像容器的绝对位置。 实现取决于多种因素,例如图像放置的位置、是否全屏显示、图像之前或之后是否有内容等。 但这段代码应该向您展示主要原理。
如果在调整窗口大小时调整图像大小,则应该创建一个与图像完全相同的容器。然后,您可以设置控件相对于该容器的位置,并使它们固定在各自的点上。
使用你的代码,它会是这样的(但我建议在样式文件中移动你的样式,学习如何在react中使用模块样式):
只需修复位置并添加正常的控制视图即可。
为了进行控制,您应该制作单独的组件。以下是如何实现您想要的行为的示例: