js实现可爱变色爱心抖动动画效果代码

代码语言:html

所属分类:动画

代码描述:js实现可爱变色爱心抖动动画效果代码

代码标签: js 可爱 变色 爱心 抖动 动画

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="en" >

<head>
  <meta charset="UTF-8">
  
  
  
  
<style>
:root {
    --heart-size: 250px;
    --eye-size: calc(var(--heart-size) * 0.2);
    --pupil-base-size: calc(var(--eye-size) * 0.4);
    --pupil-dilation-factor: 1;
    --current-pupil-size: calc(var(--pupil-base-size) * var(--pupil-dilation-factor));
    
    --mouse-x: 0px;
    --mouse-y: 0px;

    --heart-center-x: 0px;
    --heart-center-y: 0px;

    --mouse-proximity-to-heart: 0;
    
    --heart-base-color: #ff4757;
    --heart-highlight: #ff6b81;
    --heart-shadow: #ff1f35;
    --eye-color: #fff;
    --pupil-color: #2c3e50;
    --glow-color: #ff69b4;
    --bg-color: #f8e9f2;
}

body {
    background: radial-gradient(circle, var(--bg-color), #e8d0e0);
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 100vh;
    margin: 0;
    overflow: hidden;
    font-family: 'Arial', sans-serif;
    transition: background 0.5s ease;
}

.scene {
    position: relative;
    width: 100vw;
    height: 100vh;
    perspective: 800px;
}

.heart-container {
    position: absolute;
    top: 50%;
    left: 50%;
    width: var(--heart-size);
    height: var(--heart-size);
    transform-style: preserve-3d;
    transform: translate(-50%, -50%) rotateY(0deg);
    
    --heartbeat-scale-factor: calc(1 + 0.08 * var(--mouse-proximity-to-heart));
    animation: heartbeat 1.5s infinite cubic-bezier(0.215, 0.61, 0.355, 1);
    
    filter: drop-shadow(0 0 calc(20px * var(--mouse-proximity-to-heart)) var(--glow-color));
    transition: filter 0.3s ease-out, transform 0.5s ease;
    will-change: transform;
}

@keyframes heartbeat {
    0%, 100% {
        transform: translate(-50%, -50%) scale(var(--heartbeat-scale-factor));
    }
    10% {
        transform: translate(-50%, -50%) scale(calc(var(--heartbeat-scale-factor) * 0.98));
    }
    13% {
        transform: translate(-50%, -50%) scale(calc(var(--heartbeat-scale-factor) * 0.94));
    }
    16% {
        transform: translate(-50%, -50%) scale(calc(var(--heartbeat-scale-factor) * 0.92));
    }
    25% {
        transform: translate(-50%, -50%) scale(calc(var(--heartbeat-scale-factor) * 1.05));
    }
    30% {
        transform: translate(-50%, -50%) scale(calc(var(--heartbeat-scale-factor) * 1.08));
    }
    35% {
        transform: translate(-50%, -50%) scale(calc(var(--heartbeat-scale-factor) * 1.04));
    }
    45% {
        transform: translate(-50%, -50%) scale(calc(var(--heartbeat-scale-factor) * 0.98));
    }
    60% {
        transform: translate(-50%, -50%) scale(var(--heartbeat-scale-factor));
    }
}

.heart {
    position: absolute;
    width: 100%;
    height: 100%;
    background: linear-gradient(135deg, var(--heart-highlight) 0%, var(--heart-base-color) 50%, var(--heart-shadow) 100%);
    transform: rotate(-45deg);
    box-shadow: -10px 10px 30px rgba(0, 0, 0, 0.2),
                inset -5px 5px 25px rgba(255, 255, 255, 0.4),
                inset 5px -5px 25px rgba(0, 0, 0, 0.2);
    border-radius: 5px;
    transition: background 0.3s ease;
}

.heart::before,
.heart::after {
    content: '';
    position: ab.........完整代码请登录后点击上方下载按钮下载查看

网友评论0