svg+css+js实现可编辑部位颜色的Google Doodle卡通角色效果代码
代码语言:html
所属分类:动画
代码描述:svg+css+js实现可编辑部位颜色的Google Doodle卡通角色效果代码,还可以选择不同的动画。
代码标签: svg css js 编辑 部位 颜色 Google Doodle 卡通 角色
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <link rel='stylesheet' href='https://fonts.googleapis.com/css2?family=Paytone+One&display=swap'> <style> body { min-height: 100vh; display: flex; flex-direction: column; margin: 0; padding: 0; } .letter { width: 150px; height: 150px; position: relative; cursor: pointer; } .character { transform-origin: center bottom; animation: bounce 1.5s ease-in-out infinite; } .body-group { filter: drop-shadow(0 4px 4px rgba(0, 0, 0, 0.1)); } .letter-body { fill: #4285f4; } .eyes { animation: blink 3s infinite; transform-origin: center; } .pupil { animation: lookAround 4s infinite; transform-origin: center; } .arm { transform-origin: center 20%; animation: swing 2s ease-in-out infinite; } .leg { transform-origin: top center; animation: waddle 2s infinite alternate ease-in-out; } .right-leg { animation-delay: -1s; } @keyframes bounce { 0%, 100% { transform: translateY(0) scaleY(1) scaleX(1); } 30% { transform: translateY(-20px) scaleY(1.1) scaleX(0.9); } 60% { transform: translateY(5px) scaleY(0.9) scaleX(1.1); } } @keyframes blink { 0%, 48%, 52%, 100% { transform: scaleY(1); } 50% { transform: scaleY(0.1); } } @keyframes lookAround { 0%, 100% { transform: translate(0, 0); } 25% { transform: translate(2px, -1px); } 75% { transform: translate(-2px, 1px); } } @keyframes swing { 0%, 100% { transform: rotate(0deg); } 25% { transform: rotate(15deg); } 75% { transform: rotate(-15deg); } } @keyframes waddle { 0% { transform: rotate(-2deg) translateY(0); } 100% { transform: rotate(2deg) translateY(-0.5px); } } .letter:hover .character { animation: excited 0.5s infinite; } @keyframes excited { 0%, 100% { transform: scale(1) rotate(-3deg); } 50% { transform: scale(1.1) rotate(3deg); } } /* Keep original animations for O */ /* New animations for H */ @keyframes spinH { 0% { transform: rotateY(0deg); } 100% { transform: rotateY(360deg); } } .h-character { animation: spinH 2s infinite alternate ease-in-out; } /* New animations for L */ @keyframes pulseL { 0% { transform: scale(1); } 50% { transform: scale(1.1); } 100% { transform: scale(1); } } .l-character { animation: pulseL 3s infinite ease-in-out; } /* New animations for A */ @keyframes shakeA { 0%, 100% { transform: rotate(0deg); } 25% { transform: rotate(-5deg); } 75% { transform: rotate(5deg); } } .a-character { animation: shakeA 4s infinite ease-in-out; } /* Unique leg animations */ .h-leg { animation: hLegMove 1.5s infinite alternate ease-in-out; } .l-leg { animation: lLegMove 2s infinite alternate ease-in-out; } .a-leg { animation: aLegMove 2.5s infinite alternate ease-in-out; } @keyframes hLegMove { 0% { transform: rotate(-3deg) translateX(-2px); } 100% { transform: rotate(3deg) translateX(2px); } } @keyframes lLegMove { 0% { transform: translateY(0) rotate(-2deg); } 100% { transform: translateY(-3px) rotate(2deg); } } @keyframes aLegMove { 0% { transform: skewX(-2deg) translateY(-1px); } 100% { transform: skewX(2deg) translateY(1px); } } /* Option Set 2 */ @keyframes bounceH { 0% { transform: translateY(0); } 50% { transform: translateY(-15px) rotate(5deg); } 100% { transform: translateY(0); } } @keyframes swayL { 0% { transform: rotate(-8deg); } 100% { transform: rotate(8deg); } } @keyframes hopA { 0% { transform: translateY(0) scale(1); } 50% { transform: translateY(-10px) scale(0.95); } 100% { transform: translateY(0) scale(1); } } /* Option Set 3 */ @keyframes danceH { 0% { transform: translateX(0) rotate(0); } 25% { transform: translateX(-5px) rotate(-5deg); } 75% { transform: translateX(5px) rotate(5deg); } 100% { transform: translateX(0) rotate(0); } } @keyframes waveL { 0% { transform: skewX(0) translateY(0); } 25% { transform: skewX(5deg) translateY(-5px); } 75% { transform: skewX(-5deg) translateY(5px); } 100% { transform: skewX(0) translateY(0); } } @keyframes jumpA { 0% { transform: scale(1) translateY(0); } 40% { transform: scale(0.9) translateY(-20px); } 60% { transform: scale(1.1) translateY(-25px); } 100% { transform: scale(1) translateY(0); } } /* Option 1: Playful Wobble */ @keyframes wobbleH { 0% { transform: rotate(0deg) translateX(0); } 25% { transform: rotate(-3deg) translateX(-3px) scaleY(0.97); } 75% { transform: rotate(3deg) translateX(3px) scaleY(1.03); } 100% { transform: rotate(0deg) translateX(0); } } /* Option 2: Elastic Bounce */ @keyframes elasticH { 0% { transform: scaleY(1); } 30% { transform: scaleY(0.93) scaleX(1.05); } 60% { transform: scaleY(1.07) scaleX(0.95); } 100% { transform: scaleY(1); } } /* Option 3: Jelly Shake */ @keyframes jellyH { 0%, 100% { transform: skewX(0) skewY(0); } 25% { transform: skewX(-3deg) skewY(1deg); } 75% { transform: skewX(3deg) skewY(-1deg); } } /* Option 4: Pop Dance */ @keyframes popH { 0% { transform: translateY(0) scale(1); } 30% { transform: translateY(-10px) scale(1.1, 0.9); } 50% { transform: translateY(-15px) scale(0.95, 1.05); } 75% { transform: translateY(-5px) scale(1.05, 0.95); } 100% { transform: translateY(0) scale(1); } } .control-panel { position: fixed; bottom: 0; left: 0; right: 0; background: white; padding: 20px; box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1); font-family: "Google Sans", Arial, sans-serif; z-index: 1000; max-height: 180px; overflow-y: auto; } .letter-select { text-align: center; margin-bottom: 15px; } .letter-buttons { display: flex; justify-content: center; gap: 15px; margin-bottom: 20px; } .letter-btn { padding: 10px 20px; border: none; border-radius: 4px; font-size: 18px; cursor: pointer; transition: all 0.3s; } .letter-btn[data-letter="H"] { background: #db4437; color: white; } .letter-btn[data-letter="O"] { background: #4285f4; color: white; } .letter-btn[data-letter="L"] { background: #0f9d58; color: white; } .letter-btn[data-letter="A"] { background: #f4b400; color: white; } .modification-panel { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 20px; padding: 15px; background: #f8f9fa; border-radius: 8px; } .color-controls { dis.........完整代码请登录后点击上方下载按钮下载查看
网友评论0