Statamic Imagehotspots is a Statamic addon that allows you to add hotspots to images.
Features
This addon provides the following features: - Save hotspot positions in percentages for absolute positioning usage - Supports SVG images - Antlers tag to access hotspots in your templates
How to Install
You can search for this addon in the Tools > Addons
section of the Statamic control panel and click install, or run the following command from your project root:
composer require darinlarimore/statamic-imagehotspots
How to Use
Setup Fields
Add an Image Hot Spots
field and configure the required asset Container
setting
Usage
- Add an image to the
Assets
field. - Click the
Refresh Image
button. - Click the
Add Hotspot
button. - Click and drag the hotspot to the desired position.
- Add a description for the hotspot.
Note: Hotspots cannot be placed in the red border area to prevent breaking the page bounds at certain sizes.
Front End Templating Example
This example uses Tailwind, Alpine.js, and the X-anchor alpine.js plugin. The {{ image_hot_spots }}{{ /image_hot_spots }}
tag pair is used to loop through the hotspots and the {{ hotspots }}{{ /hotspots }}
tag pair is used to access the hotspot data.
<section>
{{ image_hot_spots field="image_hot_spots_field" }}
<div class="relative">
<img src="{{glide :src="image.url" w=1280}}" class="w-full" alt="{{image.alt}}">
{{ hotspots }}
<div
x-data="{ open: false }"
class="absolute"
style="top: {{y}}%; left: {{x}}%; transform: translate(-12px, -12px);"
@mouseOver="open = true"
@mouseLeave="open = false"
>
<div
class="w-8 h-8 bg-blue-500 border-white border-2 rounded-full
flex justify-center items-center text-xs text-white font-bold cursor-pointer"
x-ref="button"
>
{{svg src="heroicons/solid/plus.svg" class="size-6"}}
</div>
{{# tooltip #}}
<div
class="bg-black p-4 shadow-lg w-64 text-white z-10"
x-cloak
x-show="open"
x-anchor.offset.5="$refs.button"
>
{{ content }}
</div>
</div>
{{ /hotspots }}
</div>
{{ /image_hot_spots }}
</section>
Note: the -translate-x
and -translate-y
classes are used to center the hotspots accurately and helps prevent the hotspots from breaking the page bounds.