Budget Travel Card Template
Preview
Edit
Download
Run
Download Options
HTML File
Download as .html file
CSS File
Download as .css file
JavaScript File
Download as .js file
Combined HTML
All code in one HTML file
Project ZIP
All files in a ZIP archive
Cancel
HTML
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Premium Budget Travel | Affordable Adventures</title> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&family=Montserrat:wght@700;800&display=swap" rel="stylesheet"> </head> <body> <div class="container"> <header> <div class="tagline">Smart Travel, Smart Savings</div> <h1>Discover Affordable Adventures</h1> </header> <div class="cards-container"> <!-- Card 1 --> <div class="card card-1"> <div class="card-badge"> <i class="fas fa-crown"></i> <span>Most Popular</span> </div> <div class="card-image"> <!-- Using placeholder images with color gradient fallbacks --> <div style="width: 100%; height: 100%; background: linear-gradient(135deg, #4cc9f0, #4361ee); display: flex; align-items: center; justify-content: center; color: white; font-size: 1.5rem; font-weight: bold;"> <i class="fas fa-umbrella-beach" style="font-size: 3rem; opacity: 0.8;"></i> </div> </div> <div class="card-content"> <div class="destination-header"> <h2 class="destination">Bali, Indonesia</h2> <div class="country-flag" style="background: linear-gradient(to bottom, #ff0000, #ff0000 50%, #fff 50%, #fff);"></div> </div> <div class="price-range"> <i class="fas fa-tags"></i> <span>$25-40 / day</span> </div> <h3 class="highlights-title"> <i class="fas fa-sun"></i> <span>Budget Highlights</span> </h3> <ul class="highlights"> <li><i class="fas fa-check-circle"></i> Affordable guesthouses & homestays from $10/night</li> <li><i class="fas fa-check-circle"></i> Delicious local street food for $2-5 per meal</li> <li><i class="fas fa-check-circle"></i> Free temple visits and pristine beach access</li> <li><i class="fas fa-check-circle"></i> Cheap scooter rentals for island exploration</li> <li><i class="fas fa-check-circle"></i> Inexpensive spa treatments & wellness activities</li> </ul> </div> <div class="card-footer"> <button class="cta-button"> <span>Explore Bali Itinerary</span> <i class="fas fa-arrow-right"></i> </button> </div> </div> <!-- Card 2 --> <div class="card card-2"> <div class="card-badge"> <i class="fas fa-gem"></i> <span>Best Value</span> </div> <div class="card-image"> <div style="width: 100%; height: 100%; background: linear-gradient(135deg, #ff9e00, #ff7d29); display: flex; align-items: center; justify-content: center; color: white; font-size: 1.5rem; font-weight: bold;"> <i class="fas fa-monument" style="font-size: 3rem; opacity: 0.8;"></i> </div> </div> <div class="card-content"> <div class="destination-header"> <h2 class="destination">Lisbon, Portugal</h2> <div class="country-flag" style="background: linear-gradient(to right, #006600 40%, #ff0000 40%, #ff0000 60%, #ffff00 60%);"></div> </div> <div class="price-range"> <i class="fas fa-tags"></i> <span>$40-60 / day</span> </div> <h3 class="highlights-title"> <i class="fas fa-umbrella-beach"></i> <span>Budget Highlights</span> </h3> <ul class="highlights"> <li><i class="fas fa-check-circle"></i> Historic hostels from $15-25 per night</li> <li><i class="fas fa-check-circle"></i> Affordable tapas and local wines under $10</li> <li><i class="fas fa-check-circle"></i> Free walking tours and museum discounts</li> <li><i class="fas fa-check-circle"></i> Inexpensive public transport with day passes</li> <li><i class="fas fa-check-circle"></i> Beautiful free viewpoints (miradouros) across the city</li> </ul> </div> <div class="card-footer"> <button class="cta-button"> <span>Discover Lisbon Deals</span> <i class="fas fa-arrow-right"></i> </button> </div> </div> <!-- Card 3 --> <div class="card card-3"> <div class="card-badge"> <i class="fas fa-bolt"></i> <span>Rising Star</span> </div> <div class="card-image"> <div style="width: 100%; height: 100%; background: linear-gradient(135deg, #06d6a0, #04b586); display: flex; align-items: center; justify-content: center; color: white; font-size: 1.5rem; font-weight: bold;"> <i class="fas fa-utensils" style="font-size: 3rem; opacity: 0.8;"></i> </div> </div> <div class="card-content"> <div class="destination-header"> <h2 class="destination">Hanoi, Vietnam</h2> <div class="country-flag" style="background: linear-gradient(to bottom, #da251d, #da251d 50%, #ff0 50%, #ff0);"></div> </div> <div class="price-range"> <i class="fas fa-tags"></i> <span>$20-35 / day</span> </div> <h3 class="highlights-title"> <i class="fas fa-utensils"></i> <span>Budget Highlights</span> </h3> <ul class="highlights"> <li><i class="fas fa-check-circle"></i> Comfortable hostels from $5-10 per night</li> <li><i class="fas fa-check-circle"></i> Incredible street food for $1-3 per meal</li> <li><i class="fas fa-check-circle"></i> Free cultural experiences in the Old Quarter</li> <li><i class="fas fa-check-circle"></i> Very affordable domestic travel options</li> <li><i class="fas fa-check-circle"></i> Budget-friendly day trips to Ha Long Bay</li> </ul> </div> <div class="card-footer"> <button class="cta-button"> <span>Plan Vietnam Trip</span> <i class="fas fa-arrow-right"></i> </button> </div> </div> </div> </div> </body> </html>
CSS
:root { --primary-blue: #4361ee; --secondary-blue: #3a56d4; --primary-orange: #ff7d29; --secondary-orange: #ff6b00; --primary-green: #06d6a0; --secondary-green: #05c793; --dark: #2b2d42; --light: #f8f9fa; --gray: #8d99ae; --light-gray: #edf2f4; --shadow: 0 10px 30px rgba(0, 0, 0, 0.08); --shadow-hover: 0 20px 40px rgba(0, 0, 0, 0.12); --radius: 16px; --transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.1); } * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Poppins', sans-serif; background-color: #f0f2f5; color: var(--dark); line-height: 1.6; min-height: 100vh; padding: 40px 20px; background-image: linear-gradient(135deg, #f5f7fa 0%, #e4edf5 100%); } .container { max-width: 1300px; margin: 0 auto; } header { text-align: center; margin-bottom: 70px; position: relative; } .tagline { display: inline-block; background: linear-gradient(90deg, var(--primary-blue), var(--primary-green)); -webkit-background-clip: text; background-clip: text; color: transparent; font-weight: 700; font-size: 0.95rem; letter-spacing: 2px; text-transform: uppercase; margin-bottom: 15px; position: relative; padding-bottom: 8px; } .tagline::after { content: ''; position: absolute; bottom: 0; left: 50%; transform: translateX(-50%); width: 60px; height: 3px; background: linear-gradient(90deg, var(--primary-blue), var(--primary-green)); border-radius: 3px; } h1 { font-family: 'Montserrat', sans-serif; font-size: 3.2rem; font-weight: 800; margin-bottom: 20px; background: linear-gradient(90deg, #2b2d42 0%, #4a4d69 100%); -webkit-background-clip: text; background-clip: text; color: transparent; line-height: 1.1; } .subtitle { color: var(--gray); font-size: 1.2rem; max-width: 700px; margin: 0 auto 30px; font-weight: 300; } .header-icons { display: flex; justify-content: center; gap: 30px; margin-top: 40px; } .icon-item { display: flex; align-items: center; gap: 12px; color: var(--dark); font-weight: 500; background: white; padding: 12px 20px; border-radius: 50px; box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05); transition: var(--transition); } .icon-item:hover { transform: translateY(-5px); box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1); } .icon-item i { font-size: 1.2rem; color: var(--primary-blue); } .cards-container { display: grid; grid-template-columns: repeat(auto-fill, minmax(380px, 1fr)); gap: 35px; margin-bottom: 80px; } .card { background: white; border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow); transition: var(--transition); position: relative; height: 100%; display: flex; flex-direction: column; } .card:hover { transform: translateY(-15px); box-shadow: var(--shadow-hover); } .card-badge { position: absolute; top: 20px; right: 20px; background: white; color: var(--dark); padding: 8px 16px; border-radius: 50px; font-weight: 700; font-size: 0.85rem; box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1); z-index: 2; display: flex; align-items: center; gap: 6px; } .card-badge i { color: #ffd166; } .card-image { height: 200px; width: 100%; overflow: hidden; position: relative; } .card-image img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.7s ease; } .card:hover .card-image img { transform: scale(1.08); } .card-image::after { content: ''; position: absolute; bottom: 0; left: 0; width: 100%; height: 60px; background: linear-gradient(to top, white, transparent); } .card-content { padding: 30px; flex-grow: 1; display: flex; flex-direction: column; } .destination-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 20px; } .destination { font-family: 'Montserrat', sans-serif; font-size: 1.8rem; font-weight: 800; color: var(--dark); line-height: 1.2; } .country-flag { width: 40px; height: 26px; border-radius: 4px; box-shadow: 0 3px 10px rgba(0, 0, 0, 0.1); } .price-range { display: inline-flex; align-items: center; background: linear-gradient(90deg, #f0f7ff, #e6f0ff); color: var(--primary-blue); padding: 8px 20px; border-radius: 50px; font-weight: 700; font-size: 1.1rem; margin-bottom: 25px; align-self: flex-start; transition: var(--transition); } .card:hover .price-range { transform: scale(1.05); } .price-range i { margin-right: 8px; font-size: 1rem; } .highlights-title { display: flex; align-items: center; gap: 10px; margin-bottom: 20px; color: var(--dark); font-weight: 600; font-size: 1.2rem; } .highlights-title i { font-size: 1.3rem; } .highlights { list-style-type: none; margin-bottom: 30px; flex-grow: 1; } .highlights li { padding: 12px 0; border-bottom: 1px solid var(--light-gray); display: flex; align-items: flex-start; gap: 12px; transition: var(--transition); } .highlights li:hover { padding-left: 5px; color: var(--primary-blue); } .highlights li:last-child { border-bottom: none; } .highlights li i { color: #06d6a0; margin-top: 4px; flex-shrink: 0; font-size: 1.1rem; } .card-footer { padding: 25px 30px; border-top: 1px solid var(--light-gray); background-color: #fcfcfd; } .cta-button { display: flex; align-items: center; justify-content: center; gap: 12px; width: 100%; padding: 18px; border: none; border-radius: 12px; font-family: 'Poppins', sans-serif; font-weight: 600; font-size: 1.1rem; cursor: pointer; transition: var(--transition); letter-spacing: 0.5px; position: relative; overflow: hidden; } .cta-button::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent); transition: left 0.7s; } .cta-button:hover::before { left: 100%; } .cta-button:hover { transform: translateY(-3px); box-shadow: 0 10px 20px rgba(0, 0, 0, 0.15); } .cta-button i { font-size: 1.2rem; transition: transform 0.3s ease; } .cta-button:hover i { transform: translateX(5px); } /* Card-specific styles */ .card-1 .card-badge { background: linear-gradient(90deg, #e3f2fd, #bbdefb); } .card-1 .price-range { background: linear-gradient(90deg, #f0f7ff, #e6f0ff); color: var(--primary-blue); } .card-1 .cta-button { background: linear-gradient(90deg, var(--primary-blue), var(--secondary-blue)); color: white; } .card-1 .highlights-title i { color: var(--primary-blue); } .card-2 .card-badge { background: linear-gradient(90deg, #fff3e0, #ffe0b2); } .card-2 .price-range { background: linear-gradient(90deg, #fff5e6, #ffedd5); color: var(--primary-orange); } .card-2 .cta-button { background: linear-gradient(90deg, var(--primary-orange), var(--secondary-orange)); color: white; } .card-2 .highlights-title i { color: var(--primary-orange); } .card-3 .card-badge { background: linear-gradient(90deg, #e8f5e9, #c8e6c9); } .card-3 .price-range { background: linear-gradient(90deg, #f0fff4, #e6ffe6); color: var(--primary-green); } .card-3 .cta-button { background: linear-gradient(90deg, var(--primary-green), var(--secondary-green)); color: white; } .card-3 .highlights-title i { color: var(--primary-green); } .info-footer { text-align: center; padding: 30px; background: white; border-radius: var(--radius); box-shadow: var(--shadow); max-width: 800px; margin: 0 auto; } .info-footer h3 { font-family: 'Montserrat', sans-serif; margin-bottom: 15px; color: var(--dark); } .info-footer p { color: var(--gray); margin-bottom: 20px; } .disclaimer { font-size: 0.9rem; color: #a0a0a0; font-style: italic; } /* Responsive design */ @media (max-width: 1200px) { .cards-container { grid-template-columns: repeat(auto-fill, minmax(350px, 1fr)); } } @media (max-width: 992px) { h1 { font-size: 2.7rem; } .cards-container { gap: 30px; } .header-icons { flex-wrap: wrap; } } @media (max-width: 768px) { body { padding: 30px 15px; } h1 { font-size: 2.3rem; } .cards-container { grid-template-columns: 1fr; max-width: 500px; margin-left: auto; margin-right: auto; } .header-icons { flex-direction: column; align-items: center; gap: 15px; } .icon-item { width: 100%; max-width: 300px; justify-content: center; } } @media (max-width: 480px) { h1 { font-size: 2rem; } .subtitle { font-size: 1rem; } .card-content, .card-footer { padding: 25px 20px; } .destination { font-size: 1.6rem; } .cta-button { padding: 16px; } }
JavaScript
// Enhanced interactive elements document.querySelectorAll('.card').forEach(card => { card.addEventListener('mouseenter', function() { this.style.zIndex = '10'; }); card.addEventListener('mouseleave', function() { this.style.zIndex = '1'; }); }); // CTA button interactions document.querySelectorAll('.cta-button').forEach(button => { button.addEventListener('click', function() { const card = this.closest('.card'); const destination = card.querySelector('.destination').textContent; const price = card.querySelector('.price-range span').textContent; // Create a temporary confirmation effect const originalText = this.innerHTML; this.innerHTML = '<i class="fas fa-check"></i><span> Added to Itinerary!</span>'; this.style.background = 'linear-gradient(90deg, #06d6a0, #04b586)'; setTimeout(() => { this.innerHTML = originalText; // Return to original color based on card if (card.classList.contains('card-1')) { this.style.background = 'linear-gradient(90deg, #4361ee, #3a56d4)'; } else if (card.classList.contains('card-2')) { this.style.background = 'linear-gradient(90deg, #ff7d29, #ff6b00)'; } else { this.style.background = 'linear-gradient(90deg, #06d6a0, #05c793)'; } // Show notification showNotification(`Added ${destination} (${price}) to your travel plan!`); }, 1500); }); }); // Show notification function function showNotification(message) { // Remove existing notification const existingNotification = document.querySelector('.notification'); if (existingNotification) { existingNotification.remove(); } // Create notification element const notification = document.createElement('div'); notification.className = 'notification'; notification.innerHTML = ` <div style="position: fixed; bottom: 30px; right: 30px; background: #2b2d42; color: white; padding: 18px 25px; border-radius: 12px; box-shadow: 0 10px 25px rgba(0,0,0,0.2); z-index: 1000; display: flex; align-items: center; gap: 12px; max-width: 400px; animation: slideIn 0.5s ease;"> <i class="fas fa-check-circle" style="color: #06d6a0; font-size: 1.3rem;"></i> <span>${message}</span> </div> `; // Add to page document.body.appendChild(notification); // Add CSS for animation const style = document.createElement('style'); style.textContent = ` @keyframes slideIn { from { transform: translateX(100%); opacity: 0; } to { transform: translateX(0); opacity: 1; } } `; document.head.appendChild(style); // Remove after 4 seconds setTimeout(() => { notification.style.animation = 'slideOut 0.5s ease'; notification.style.animationFillMode = 'forwards'; // Add slideOut animation const slideOutStyle = document.createElement('style'); slideOutStyle.textContent = ` @keyframes slideOut { from { transform: translateX(0); opacity: 1; } to { transform: translateX(100%); opacity: 0; } } `; document.head.appendChild(slideOutStyle); // Remove element after animation setTimeout(() => { notification.remove(); }, 500); }, 4000); } // Highlight list item hover effect document.querySelectorAll('.highlights li').forEach(item => { item.addEventListener('mouseenter', function() { const icon = this.querySelector('i'); icon.style.transform = 'scale(1.2)'; }); item.addEventListener('mouseleave', function() { const icon = this.querySelector('i'); icon.style.transform = 'scale(1)'; }); });
Output Preview
Desktop
Mobile
Fullscreen