S'il vous plaît, aidez-moi. J'ai une image comme celle ci-dessous qui s'affiche sur la page d'accueil (une image plus grande). A noter que la maison "FORGE" possède un marqueur blanc et bleu au milieu avec une flèche noire.
Il en va de même pour les logements « locatifs ».
Chacun de ces marqueurs agira comme un bouton interactif. Voici le comportement d'interaction attendu :
Je veux également qu'il soit réactif, si et quand l'écran est redimensionné, les boutons doivent rester dans ces positions spécifiques.
J'essaie d'utiliser le positionnement absolu, les coordonnées x, y pour essayer de le faire fonctionner. Mais comme j’apprécie l’expérience de ce type d’interface utilisateur, je ne trouve pas de solution efficace. Je ne sais pas si je dois utiliser de la toile ou autre chose.
Toute aide serait grandement appréciée.
Mon code ressemble à ceci, mais il semble que je ne suis pas sur la bonne voie :
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> ); };
Vous devez placer le contrôle à la position absolue du conteneur d'image. La mise en œuvre dépend de divers facteurs, tels que l'endroit où l'image est placée, si elle est en plein écran, s'il y a du contenu avant ou après l'image, etc. Mais ce code devrait vous montrer le principe principal.
Si l'image est redimensionnée lorsque la fenêtre est redimensionnée, vous devez créer un conteneur identique à l'image. Vous pouvez ensuite définir la position des contrôles par rapport à ce conteneur et les ancrer à leurs points respectifs.
Utilisez votre code et il ressemblera à ceci (mais je vous recommande de déplacer vos styles dans le fichier de styles pour apprendre comment utiliser les styles de module dans React) :
Corrigez simplement la position et ajoutez une vue de contrôle normale.
Pour le contrôle, vous devez créer des composants séparés. Voici un exemple de la façon d'obtenir le comportement que vous souhaitez :