Back
Discover how to craft a tooltip that blooms like a garden when hovered, revealing a bouquet of interactive elements inspired by the art of botanical cultivation.
<div class="garden-container"> <button class="garden-tooltip-button" aria-label="Garden Tooltip Button" onmouseover="expandGarden(event)" onmouseout="collapseGarden(event)"> <span class="tooltip-icon" aria-hidden="true">🌸</span> <div class="garden-tooltip"> <p>Explore the flora of this digital garden!</p> <ul> <li>🌷 Tulip</li> <li>🌻 Sunflower</li> <li>🌹 Rose</li> </ul> </div> </button> </div>We utilize the
<button>
element for accessibility and assign proper aria-label
for screen readers. The .garden-tooltip
is hidden initially and only revealed upon interaction.
.garden-container { position: relative; display: inline-block; padding: 20px; } .garden-tooltip-button { border: none; background: none; cursor: pointer; position: relative; } .tooltip-icon { font-size: 24px; transition: transform 0.3s ease; } .garden-tooltip { position: absolute; top: 50%; left: 100%; border-radius: 12px; background: rgba(255, 255, 255, 0.9); backdrop-filter: blur(8px); padding: 10px; transform: scale(0.8); transform-origin: left center; transition: opacity 0.3s ease, transform 0.3s ease; opacity: 0; box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2); pointer-events: none; } .garden-tooltip-button:focus .tooltip-icon { transform: scale(1.2); } .garden-tooltip p, .garden-tooltip ul { margin: 0; font-size: 14px; list-style-type: none; } .garden-tooltip ul li { margin: 5px 0; font-weight: bold; }The tooltip reveals itself smoothly with scale and opacity transitions, achieving a glassmorphic effect by blending blur effects and semi-transparent layers.
function expandGarden(event) { const tooltip = event.currentTarget.querySelector('.garden-tooltip'); tooltip.style.opacity = '1'; tooltip.style.transform = 'scale(1)'; } function collapseGarden(event) { const tooltip = event.currentTarget.querySelector('.garden-tooltip'); tooltip.style.opacity = '0'; tooltip.style.transform = 'scale(0.8)'; }These functions change the state of the tooltip on hover in and out, providing seamless interaction. Remember to use
event.currentTarget
to ensure the correct element is targeted.
<div class="garden-container"> <button class="garden-tooltip-button" aria-label="Garden Tooltip Button" onmouseover="expandGarden(event)" onmouseout="collapseGarden(event)"> <span class="tooltip-icon" aria-hidden="true">🌸</span> <div class="garden-tooltip"> <p>Explore the flora of this digital garden!</p> <ul> <li>🌷 Tulip</li> <li>🌻 Sunflower</li> <li>🌹 Rose</li> </ul> </div> </button> </div> <script> function expandGarden(event) { const tooltip = event.currentTarget.querySelector('.garden-tooltip'); tooltip.style.opacity = '1'; tooltip.style.transform = 'scale(1)'; } function collapseGarden(event) { const tooltip = event.currentTarget.querySelector('.garden-tooltip'); tooltip.style.opacity = '0'; tooltip.style.transform = 'scale(0.8)'; } </script> <style> .garden-container { position: relative; display: inline-block; padding: 20px; } .garden-tooltip-button { border: none; background: none; cursor: pointer; position: relative; } .tooltip-icon { font-size: 24px; transition: transform 0.3s ease; } .garden-tooltip { position: absolute; top: 50%; left: 100%; border-radius: 12px; background: rgba(255, 255, 255, 0.9); backdrop-filter: blur(8px); padding: 10px; transform: scale(0.8); transform-origin: left center; transition: opacity 0.3s ease, transform 0.3s ease; opacity: 0; box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2); pointer-events: none; } .garden-tooltip-button:focus .tooltip-icon { transform: scale(1.2); } .garden-tooltip p, .garden-tooltip ul { margin: 0; font-size: 14px; list-style-type: none; } .garden-tooltip ul li { margin: 5px 0; font-weight: bold; } </style>Thank you for reading this article.
Comments
No comments yet. Be the first to comment!