MorphingBlob
morphingblob-1779378412885.tsx
'use client'
import { useEffect, useRef } from 'react'
export default function MorphingBlob() {
return (
<div style={{ background: '#0A0A0A', display: 'flex', alignItems: 'center', justifyContent: 'center', padding: 60, gap: 40, flexWrap: 'wrap' }}>
<style>{`
@keyframes morph1 {
0%,100% { border-radius: 60% 40% 30% 70% / 60% 30% 70% 40%; }
25% { border-radius: 30% 60% 70% 40% / 50% 60% 30% 60%; }
50% { border-radius: 50% 60% 20% 60% / 30% 60% 70% 40%; }
75% { border-radius: 70% 30% 50% 50% / 30% 30% 70% 70%; }
}
@keyframes morph2 {
0%,100% { border-radius: 30% 60% 70% 40% / 50% 60% 30% 60%; }
33% { border-radius: 60% 40% 30% 70% / 60% 30% 70% 40%; }
66% { border-radius: 70% 30% 50% 50% / 30% 70% 70% 30%; }
}
@keyframes float { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-12px); } }
@keyframes spin { to { transform: rotate(360deg); } }
@keyframes colorShift {
0% { background: linear-gradient(135deg, #C9A84C, #6366f1); }
33% { background: linear-gradient(135deg, #6366f1, #22c55e); }
66% { background: linear-gradient(135deg, #22c55e, #ef4444); }
100% { background: linear-gradient(135deg, #ef4444, #C9A84C); }
}
`}</style>
{[
{ anim: 'morph1 8s ease-in-out infinite, float 6s ease-in-out infinite', size: 140, bg: 'linear-gradient(135deg, #C9A84C, #f59e0b)', label: 'Morphing' },
{ anim: 'morph2 10s ease-in-out infinite, float 8s ease-in-out infinite 1s', size: 100, bg: 'linear-gradient(135deg, #6366f1, #8b5cf6)', label: 'Floating' },
{ anim: 'morph1 6s ease-in-out infinite 2s, float 4s ease-in-out infinite 0.5s', size: 120, bg: 'linear-gradient(135deg, #22c55e, #06b6d4)', label: 'Animated' },
].map((b, i) => (
<div key={i} style={{ display: 'flex', flexDirection: 'column', alignItems: 'center', gap: 16 }}>
<div style={{
width: b.size, height: b.size,
background: b.bg,
animation: b.anim,
boxShadow: `0 0 40px ${i === 0 ? 'rgba(201,168,76,0.3)' : i === 1 ? 'rgba(99,102,241,0.3)' : 'rgba(34,197,94,0.3)'}`,
}} />
<span style={{ color: '#555', fontSize: 12, letterSpacing: '0.05em' }}>{b.label}</span>
</div>
))}
</div>
)
}Component info
CategoryAnimations & Cursors
Frameworkreact
TierFREE
Views0
Copies0
About
CSS animated morphing blob with color shift and scale animation
More from Animations & Cursors
'use client'
import { useState, useEffect, useRef } from 'react'
interface AnimatedNumberProps {
target: number
duration?: number
prefix?: string
suffix?: string
decimals?: number
onComplete?: () => void
}
function AnimatedNumber({ targCounterAnimation
Animations & Cursors
import React from 'react';
import { motion } from 'framer-motion';
interface MorphCursorProps {
children: React.ReactNode;
}
const MorphCursor: React.FC<MorphCursorProps> = ({ children }) => {
const [cursorType, setCursorType] = React.useState(MorphCursor
Animations & Cursors
import { useEffect, useState } from 'react';
interface Dot {
x: number;
y: number;
opacity: number;
}
const TrailCursor = () => {
const [dots, setDots] = useState<Dot[]>([]);
const [mousePosition, setMousePosition] = useState({ x: 0, y: 0TrailCursor
Animations & Cursors
import { useState, useEffect } from 'react';
import { motion } from 'framer-motion';
interface PixelCursorProps {
color: string;
}
const PixelCursor: React.FC<PixelCursorProps> = ({ color }) => {
const [mousePosition, setMousePosition] = useStaPixelCursor
Animations & Cursors