About this snippet

Engage customers by adding details to your product photos. When a user hovers over a pulsating dot, a tooltip appears with more information, which is perfect for showcasing features on complex items.

Size
2.4 KB
Uses
HTML, CSS
Loads
placehold.co
Views
367
<div class="hotspot-container">
  <img src="https://placehold.co/800x500/1e293b/ffffff?text=Product+Showcase" alt="Product">
  
  <!-- Hotspot 1 -->
  <div class="hotspot" style="top: 30%; left: 40%;">
    <div class="dot">
      <div class="ping"></div>
    </div>
    <div class="tooltip">
      <h4>Ergonomic Design</h4>
      <p>Fits perfectly in your hand.</p>
    </div>
  </div>

  <!-- Hotspot 2 -->
  <div class="hotspot" style="top: 60%; left: 70%;">
    <div class="dot">
      <div class="ping"></div>
    </div>
    <div class="tooltip">
      <h4>Wireless Charging</h4>
      <p>Fast and convenient power.</p>
    </div>
  </div>
</div>
.hotspot-container {
  font-family: system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
  position: relative;
  max-width: 800px;
  margin: 0 auto;
  border-radius: 12px;
  overflow: hidden;
  box-shadow: 0 10px 30px rgba(0,0,0,0.1);
}
img {
  width: 100%;
  display: block;
}
.hotspot {
  position: absolute;
  cursor: pointer;
}
.dot {
  width: 20px;
  height: 20px;
  background: #3b82f6;
  border-radius: 50%;
  border: 2px solid #fff;
  position: relative;
  z-index: 2;
  box-shadow: 0 0 10px rgba(0,0,0,0.2);
}
.ping {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 100%;
  height: 100%;
  background: #3b82f6;
  border-radius: 50%;
  animation: ping 1.5s cubic-bezier(0, 0, 0.2, 1) infinite;
  opacity: 0.7;
  z-index: 1;
}
@keyframes ping {
  75%, 100% {
    transform: translate(-50%, -50%) scale(2.5);
    opacity: 0;
  }
}
.tooltip {
  position: absolute;
  bottom: 30px;
  left: 50%;
  transform: translateX(-50%) translateY(10px);
  background: #fff;
  padding: 15px;
  border-radius: 8px;
  width: 200px;
  box-shadow: 0 10px 25px rgba(0,0,0,0.1);
  opacity: 0;
  visibility: hidden;
  transition: all 0.3s ease;
  pointer-events: none;
  z-index: 10;
  text-align: center;
}
.tooltip::after {
  content: "";
  position: absolute;
  bottom: -6px;
  left: 50%;
  margin-left: -6px;
  border-width: 6px 6px 0;
  border-style: solid;
  border-color: #fff transparent transparent transparent;
}
.hotspot:hover .tooltip {
  opacity: 1;
  visibility: visible;
  transform: translateX(-50%) translateY(0);
}
.tooltip h4 {
  margin: 0 0 5px;
  color: #1f2937;
  font-size: 0.95rem;
}
.tooltip p {
  margin: 0;
  color: #6b7280;
  font-size: 0.85rem;
  line-height: 1.4;
}
Esc
↑↓ moveEnter select

Start from a template

Open an .html file, or HTML, CSS, JS, Markdown, Less or TypeScript files. You can also drop them here. Styles and scripts go into their panes.

Share

Source

Keyboard shortcuts

Save