Celeste

Revision as of 20:36, 26 May 2026 by Toad64 (talk | contribs) (can this be code work on the hero page cards too? time to test)

Hero Card interaction with mouse

This javascript code adds a listener to the .HeroCard element to allow the card the mouse is currently hovered over to tilt based on the mouse's location, relative to the center of the card:

document.querySelectorAll('.HeroCard').forEach(function(el) {
  el.style.transition = 'none';
  el.style.transformStyle = 'preserve-3d';
  el.style.willChange = 'transform';

  var animFrame;
  var current = { x: 0, y: 0 };
  var target = { x: 0, y: 0 };
  var mouseX = 0, mouseY = 0;
  var isOver = false;
  var rect = {};
  
  var updateMouse = function(e){
  	mouseX = e.clientX;
    mouseY = e.clientY;
  }

  var tick = function() {
    var cx = rect.left + rect.width / 2;
    var cy = rect.top + rect.height / 2;
    var dx = (mouseX - cx) / (rect.width / 2);
    var dy = (mouseY - cy) / (rect.height / 2);

    target.x = dy * -12;
    target.y = dx * 12;

    current.x += (target.x - current.x) * 0.12;
    current.y += (target.y - current.y) * 0.12;

    el.style.transform = 'perspective(400px) rotateX(' + current.x + 'deg) rotateY(' + current.y + 'deg) scale(' + (isOver ? 1.05 : 1) + ')';

    animFrame = requestAnimationFrame(tick);
  };
  
  el.addEventListener('mouseenter', function() {
    rect = el.getBoundingClientRect(); // Measure ONCE
    document.addEventListener('mousemove', updateMouse);
    animFrame = requestAnimationFrame(tick); // Ignition
  });

  el.addEventListener('mouseleave', function() {
    document.removeEventListener('mousemove', updateMouse);
    cancelAnimationFrame(animFrame); // Kill the engine
    
    el.style.transition = 'transform 0.5s ease-out'; 
    el.style.transform = 'perspective(400px) rotateX(0deg) rotateY(0deg) scale(1)';
    
    setTimeout(function() { el.style.transition = 'none'; }, 500);
  });
});

You can see this code in action by clicking Here (desktop required).

Heroes
 

Hero Labs

Abrams

 

Hero Labs

Apollo

 

Hero Labs

Bebop

 

Hero Labs

Billy

 

Hero Labs

Calico

 

Hero Labs

Celeste

 

Hero Labs

The Doorman

 

Hero Labs

Drifter

 

Hero Labs

Dynamo

 

Hero Labs

Graves

 

Hero Labs

Grey Talon

 

Hero Labs

Haze

 

Hero Labs

Holliday

 

Hero Labs

Infernus

 

Hero Labs

Ivy

 

Hero Labs

Kelvin

 

Hero Labs

Lady Geist

 

Hero Labs

Lash

 

Hero Labs

McGinnis

 

Hero Labs

Mina

 

Hero Labs

Mirage

 

Hero Labs

Mo & Krill

 

Hero Labs

Paige

 

Hero Labs

Paradox

 

Hero Labs

Pocket

 

Hero Labs

Rem

 

Hero Labs

Seven

 

Hero Labs

Shiv

 

Hero Labs

Silver

 

Hero Labs

Sinclair

 

Hero Labs

Venator

 

Hero Labs

Victor

 

Hero Labs

Vindicta

 

Hero Labs

Viscous

 

Hero Labs

Vyper

 

Hero Labs

Warden

 

Hero Labs

Wraith

 

Hero Labs

Yamato


Using a similar code, this also works with the hero image card found on that Hero's wiki page:

add new java script block here, if needed
 
Performer
Disruptive
Dazzling
Weapon Stats
Damage Per Second:  31
Bullet Damage:  18 +0.82
Ammo:  8
Bullets per sec:  1.72
Reload Time:  2s
Bullet Velocity:  50m/s
Light Melee:  50 +1.58
Heavy Melee:  116 +3.67
Crit Bonus Scale:  -25%
Vitality Stats
Health:  690 +33
Health Regen:  1
Move Speed:  6.2m/s
Sprint Speed:  1.6m/s
Dash Speed:  16.1m/s
Stamina:  4
Stamina Cooldown:  5s
Spirit Stats
Spirit Power:  0 +1.1
Information
Release Date:February 9 2026
Internal names:Unicorn, Pepper