Card Skeleton - MeggiTools
Run
Toggle Theme
Share Link
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Card Skeleton</title> <style> @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;600&display=swap'); * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Poppins', sans-serif; background: linear-gradient(135deg, #f3f3f3, #f9f9f9); display: flex; justify-content: center; align-items: center; height: 100vh; } .skeleton-card-wrapper { display: flex; flex-wrap: wrap; gap: 20px; width: 90%; } .skeleton-card { background: #fff; border-radius: 10px; box-shadow: 0 20px 40px rgba(0,0,0,0.1); width: calc(33.333% - 20px); padding: 20px; animation: fadeIn 1.5s ease-in-out; } .skeleton-card .image { background: #ddd; height: 150px; width: 100%; border-radius: 10px; margin-bottom: 15px; animation: shimmer 1.5s infinite; } .skeleton-card .text { background: #ddd; height: 20px; width: 100%; border-radius: 5px; margin-bottom: 10px; animation: shimmer 1.5s infinite; } .skeleton-card .text.short { width: 60%; } @keyframes fadeIn { from { opacity: 0; transform: translateY(-20px); } to { opacity: 1; transform: translateY(0); } } @keyframes shimmer { 0% { background-position: -200px 0; } 100% { background-position: calc(200px + 100%) 0; } } </style> </head> <body> <div class="skeleton-card-wrapper"> <div class="skeleton-card"> <div class="image"></div> <div class="text"></div> <div class="text short"></div> </div> <div class="skeleton-card"> <div class="image"></div> <div class="text"></div> <div class="text short"></div> </div> <div class="skeleton-card"> <div class="image"></div> <div class="text"></div> <div class="text short"></div> </div> </div> </body> </html>