Responsive Digital Agency Website Using HTML, CSS & JavaScript | Free Source Code

Responsive Agency Website using HTML, CSS & JavaScript

Creating a digital agency website is one of the best projects for learning frontend web development. In this tutorial, we will build a fully responsive agency website using HTML, CSS, and JavaScript, perfect for freelancers, startups, and creative agencies.

In this blog, you will learn step by step how to create a responsive restaurant website using HTML, CSS, and JavaScript. This website will include a homepage, menu section, services, and contact area, all styled beautifully with modern UI.


Why Build a Restaurant Website Project?

Building a responsive agency website helps you:

  • Learn HTML structure for multi-page websites
  • Master CSS Flexbox & Grid for layouts
  • Use media queries for responsiveness
  • Create a project that you can showcase in your portfolio

Video Tutorial of Restaurant Website

If you prefer watching instead of reading, here’s the complete step-by-step video tutorial of creating a Responsive Agency Website using HTML, CSS & JavaScript:


File Structure of the Project

  • index.html → for the structure
  • style.css → for styling
  • script.js → for functionality

HTML(index.html)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Savory Delights | Fine Dining Experience</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
    <link rel="stylesheet" href="style.css">
</head>
<body class="dark-mode">
    <!-- Header -->
    <header>
        <div class="container">
            <nav>
                <a href="#" class="logo">
                    <i class="fas fa-utensils"></i>
                    Savory <span>Delights</span>
                </a>
                <div class="menu-toggle" id="menu-toggle">
                    <i class="fas fa-bars"></i>
                </div>
                <ul class="nav-links" id="nav-links">
                    <li><a href="#home">Home</a></li>
                    <li><a href="#about">About</a></li>
                    <li><a href="#menu">Menu</a></li>
                    <li><a href="#testimonials">Testimonials</a></li>
                    <li><a href="#reservation">Reservations</a></li>
                    <li><a href="#contact">Contact</a></li>
                </ul>
                <button class="theme-toggle" id="theme-toggle">
                    <i class="fas fa-moon"></i>
                </button>
            </nav>
        </div>
    </header>

    <!-- Hero Section -->
    <section class="hero" id="home">
        <div class="container">
            <div class="hero-content">
                <h1>Exquisite Dining Experience</h1>
                <p>Indulge in our culinary masterpiece crafted with passion and the finest ingredients</p>
                <div class="hero-buttons">
                    <a href="#menu" class="btn">View Menu</a>
                    <a href="#reservation" class="btn">Reserve a Table</a>
                </div>
            </div>
        </div>
    </section>

    <!-- About Section -->
    <section class="about" id="about">
        <div class="container">
            <h2 class="section-title">Our Story</h2>
            <div class="about-content">
                <div class="about-text">
                    <h2>A Journey of Flavors</h2>
                    <p>Founded in 2005, Savory Delights began as a small family-owned restaurant with a passion for creating memorable dining experiences. Our chefs combine traditional recipes with innovative techniques to bring you dishes that tantalize your taste buds.</p>
                    <p>We source our ingredients from local farmers and producers, ensuring the freshest and most sustainable options for our discerning customers.</p>
                    <a href="#reservation" class="btn">Book a Table</a>
                </div>
                <div class="about-image">
                    <img src="https://images.unsplash.com/photo-1555396273-367ea4eb4db5?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NXx8cmVzdGF1cmFudCUyMGludGVyaW9yfGVufDB8fDB8fHww&auto=format&fit=crop&w=600&q=60" alt="Restaurant Interior">
                </div>
            </div>
        </div>
    </section>

    <!-- Menu Section -->
    <section class="menu" id="menu">
        <div class="container">
            <h2 class="section-title">Our Menu</h2>
            <div class="menu-filters">
                <button class="filter-btn active" data-filter="all">All</button>
                <button class="filter-btn" data-filter="starters">Starters</button>
                <button class="filter-btn" data-filter="mains">Main Courses</button>
                <button class="filter-btn" data-filter="desserts">Desserts</button>
                <button class="filter-btn" data-filter="drinks">Drinks</button>
            </div>
            <div class="menu-grid">
                <div class="menu-item" data-category="starters">
                    <img src="img/seafood.jpg" alt="" height="200px" width="100%">
                    <div class="menu-item-info">
                        <div class="menu-item-title">
                            <h3>Seafood Platter</h3>
                            <span class="menu-item-price">$18</span>
                        </div>
                        <p>Fresh selection of oysters, shrimp, and crab with homemade sauces</p>
                    </div>
                </div>
                <div class="menu-item" data-category="mains">
                    <img src="img/Herb-Crusted-Chicken.webp" alt="" height="200px" width="100%">
                    <div class="menu-item-info">
                        <div class="menu-item-title">
                            <h3>Herb-Crusted Chicken</h3>
                            <span class="menu-item-price">$24</span>
                        </div>
                        <p>Free-range chicken with rosemary and thyme, served with seasonal vegetables</p>
                    </div>
                </div>
                <div class="menu-item" data-category="mains">
                    <img src="img/beef_wellington_recipe_wes_tyler-scaled.jpg" alt="" height="200px" width="100%">
                    <div class="menu-item-info">
                        <div class="menu-item-title">
                            <h3>Beef Wellington</h3>
                            <span class="menu-item-price">$32</span>
                        </div>
                        <p>Prime beef tenderloin wrapped in puff pastry with mushroom duxelles</p>
                    </div>
                </div>
                <div class="menu-item" data-category="desserts">
                    <img src="img/Chocolate-Souffle.webp" alt="" height="200px" width="100%">
                    <div class="menu-item-info">
                        <div class="menu-item-title">
                            <h3>Chocolate Soufflé</h3>
                            <span class="menu-item-price">$12</span>
                        </div>
                        <p>Decadent chocolate soufflé with a molten center, served with vanilla ice cream</p>
                    </div>
                </div>
                <div class="menu-item" data-category="drinks">
                    <img src="img/whimsical-signature-cocktails.jpg" alt="" height="200px" width="100%">
                    <div class="menu-item-info">
                        <div class="menu-item-title">
                            <h3>Signature Cocktails</h3>
                            <span class="menu-item-price">$14</span>
                        </div>
                        <p>Handcrafted cocktails made with premium spirits and fresh ingredients</p>
                    </div>
                </div>
                <div class="menu-item" data-category="starters">
                    <img src="img/basket-for-artisan-bakery.jpg" alt="" height="200px" width="100%">
                    <div class="menu-item-info">
                        <div class="menu-item-title">
                            <h3>Artisan Bread Basket</h3>
                            <span class="menu-item-price">$9</span>
                        </div>
                        <p>Selection of homemade breads with infused olive oil and balsamic vinegar</p>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <!-- Testimonials Section -->
    <section class="testimonials" id="testimonials">
        <div class="container">
            <h2 class="section-title">What Our Customers Say</h2>
            <div class="testimonials-container">
                <div class="testimonial">
                    <div class="testimonial-text">
                        <p>"The best dining experience I've had in years. The food was exceptional and the service was impeccable."</p>
                    </div>
                    <div class="testimonial-author">
                        <img src="https://randomuser.me/api/portraits/women/65.jpg" alt="Sarah Johnson">
                        <div>
                            <h4>Sarah Johnson</h4>
                            <p>Food Critic</p>
                        </div>
                    </div>
                </div>
                <div class="testimonial">
                    <div class="testimonial-text">
                        <p>"Every dish was a masterpiece. The flavors were perfectly balanced and the presentation was stunning."</p>
                    </div>
                    <div class="testimonial-author">
                        <img src="https://randomuser.me/api/portraits/men/32.jpg" alt="Michael Chen">
                        <div>
                            <h4>Michael Chen</h4>
                            <p>Regular Customer</p>
                        </div>
                    </div>
                </div>
                <div class="testimonial">
                    <div class="testimonial-text">
                        <p>"The atmosphere was perfect for our anniversary dinner. The staff went above and beyond to make it special."</p>
                    </div>
                    <div class="testimonial-author">
                        <img src="https://randomuser.me/api/portraits/women/28.jpg" alt="Emily Rodriguez">
                        <div>
                            <h4>Emily Rodriguez</h4>
                            <p>First-time Visitor</p>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <!-- Reservation Section -->
    <section class="reservation" id="reservation">
        <div class="container">
            <h2 class="section-title">Make a Reservation</h2>
            <div class="reservation-form">
                <form id="reservationForm">
                    <div class="form-group">
                        <label for="name">Full Name</label>
                        <input type="text" id="name" placeholder="Enter your name" required>
                    </div>
                    <div class="form-group">
                        <label for="email">Email Address</label>
                        <input type="email" id="email" placeholder="Enter your email" required>
                    </div>
                    <div class="form-group">
                        <label for="phone">Phone Number</label>
                        <input type="tel" id="phone" placeholder="Enter your phone number" required>
                    </div>
                    <div class="form-group">
                        <label for="date">Date</label>
                        <input type="date" id="date" required>
                    </div>
                    <div class="form-group">
                        <label for="time">Time</label>
                        <input type="time" id="time" required>
                    </div>
                    <div class="form-group">
                        <label for="guests">Number of Guests</label>
                        <select id="guests" required>
                            <option value="">Select number of guests</option>
                            <option value="1">1 Person</option>
                            <option value="2">2 People</option>
                            <option value="3">3 People</option>
                            <option value="4">4 People</option>
                            <option value="5">5 People</option>
                            <option value="6">6 People</option>
                            <option value="7">7+ People</option>
                        </select>
                    </div>
                    <button type="submit" class="btn">Book Now</button>
                </form>
            </div>
        </div>
    </section>

    <!-- Footer -->
    <footer id="contact">
        <div class="container">
            <div class="footer-content">
                <div class="footer-column">
                    <h3>Savory Delights</h3>
                    <p>Experience the finest culinary journey with our exquisite dishes and impeccable service.</p>
                    <div class="social-links">
                        <a href="#"><i class="fab fa-facebook-f"></i></a>
                        <a href="#"><i class="fab fa-instagram"></i></a>
                        <a href="#"><i class="fab fa-twitter"></i></a>
                        <a href="#"><i class="fab fa-youtube"></i></a>
                    </div>
                </div>
                <div class="footer-column">
                    <h3>Hours</h3>
                    <ul>
                        <li>Monday - Thursday: 11am - 10pm</li>
                        <li>Friday - Saturday: 11am - 11pm</li>
                        <li>Sunday: 11am - 9pm</li>
                        <li>Happy Hour: 4pm - 6pm Daily</li>
                    </ul>
                </div>
                <div class="footer-column">
                    <h3>Contact</h3>
                    <ul>
                        <li><i class="fas fa-map-marker-alt"></i> 123 Gourmet Street, Foodville</li>
                        <li><i class="fas fa-phone"></i> (123) 456-7890</li>
                        <li><i class="fas fa-envelope"></i> info@savorydelights.com</li>
                    </ul>
                </div>
            </div>
            <div class="copyright">
                <p>&copy; 2025 Alizeh Codes. All rights reserved.</p>
            </div>
        </div>
    </footer>

    <script src="script.js"></script>
</body>
</html> qux
  

CSS(style.css)

/* Base Styles */
        :root {
            --primary: #c9a66b;
            --secondary: #1a1a1a;
            --accent: #9e7540;
            --text-light: #f5f5f5;
            --text-dark: #333;
            --bg-light: #f8f8f8;
            --bg-dark: #121212;
            --card-light: #ffffff;
            --card-dark: #1e1e1e;
            --transition: all 0.3s ease;
        }

        .light-mode {
            --bg: var(--bg-light);
            --text: var(--text-dark);
            --card: var(--card-light);
            --shadow: rgba(0, 0, 0, 0.1);
        }

        .dark-mode {
            --bg: var(--bg-dark);
            --text: var(--text-light);
            --card: var(--card-dark);
            --shadow: rgba(0, 0, 0, 0.3);
        }

        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            transition: var(--transition);
        }

        body {
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
            background-color: var(--bg);
            color: var(--text);
            line-height: 1.6;
        }

        .container {
            width: 90%;
            max-width: 1200px;
            margin: 0 auto;
            padding: 0 20px;
        }

        section {
            padding: 80px 0;
        }

        .btn {
            display: inline-block;
            padding: 12px 28px;
            background: var(--primary);
            color: var(--text-light);
            border-radius: 30px;
            text-decoration: none;
            font-weight: 600;
            transition: var(--transition);
            border: none;
            cursor: pointer;
            text-transform: uppercase;
            letter-spacing: 1px;
            font-size: 0.9rem;
        }

        .btn:hover {
            background: var(--accent);
            transform: translateY(-3px);
            box-shadow: 0 10px 20px var(--shadow);
        }

        .section-title {
            text-align: center;
            margin-bottom: 50px;
            font-size: 2.5rem;
            color: var(--primary);
            position: relative;
        }

        .section-title:after {
            content: '';
            position: absolute;
            bottom: -15px;
            left: 50%;
            transform: translateX(-50%);
            width: 80px;
            height: 4px;
            background: var(--primary);
            border-radius: 2px;
        }

        /* Header Styles */
        header {
            background-color: var(--card);
            box-shadow: 0 2px 15px var(--shadow);
            position: fixed;
            width: 100%;
            top: 0;
            z-index: 1000;
        }

        nav {
            display: flex;
            justify-content: space-between;
            align-items: center;
            padding: 20px 0;
        }

        .logo {
            font-size: 1.8rem;
            font-weight: 700;
            color: var(--primary);
            text-decoration: none;
            display: flex;
            align-items: center;
        }

        .logo span {
            color: var(--text);
        }

        .logo i {
            margin-right: 10px;
        }

        .nav-links {
            display: flex;
            list-style: none;
        }

        .nav-links li {
            margin-left: 30px;
        }

        .nav-links a {
            text-decoration: none;
            color: var(--text);
            font-weight: 500;
            transition: var(--transition);
        }

        .nav-links a:hover {
            color: var(--primary);
        }

        .theme-toggle {
            background: none;
            border: none;
            color: var(--text);
            font-size: 1.2rem;
            cursor: pointer;
            margin-left: 20px;
        }

        .menu-toggle {
            display: none;
            font-size: 1.5rem;
            cursor: pointer;
            color: var(--text);
        }

        /* Hero Section */
        .hero {
            padding-top: 150px;
            padding-bottom: 80px;
            background: linear-gradient(rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7)), url('https://images.unsplash.com/photo-1517248135467-4c7edcad34c4?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8Mnx8cmVzdGF1cmFudHxlbnwwfHwwfHx8MA%3D%3D&w=1000&q=80');
            background-size: cover;
            background-position: center;
            color: white;
            text-align: center;
        }

        .hero-content {
            max-width: 800px;
            margin: 0 auto;
        }

        .hero h1 {
            font-size: 3.5rem;
            margin-bottom: 20px;
            text-transform: uppercase;
            letter-spacing: 2px;
        }

        .hero p {
            font-size: 1.2rem;
            margin-bottom: 30px;
        }

        .hero-buttons {
            display: flex;
            justify-content: center;
            gap: 20px;
            margin-top: 30px;
        }

        /* About Section */
        .about {
            background-color: var(--bg);
        }

        .about-content {
            display: flex;
            gap: 50px;
            align-items: center;
        }

        .about-text {
            flex: 1;
        }

        .about-text h2 {
            font-size: 2.5rem;
            margin-bottom: 20px;
            color: var(--primary);
        }

        .about-text p {
            margin-bottom: 20px;
            font-size: 1.1rem;
        }

        .about-image {
            flex: 1;
            border-radius: 10px;
            overflow: hidden;
            box-shadow: 0 15px 30px var(--shadow);
        }

        .about-image img {
            width: 100%;
            height: auto;
            display: block;
        }

        /* Menu Section */
        .menu {
            background-color: var(--card);
            padding: 80px 0;
        }

        .menu-filters {
            display: flex;
            justify-content: center;
            margin-bottom: 40px;
            flex-wrap: wrap;
            gap: 10px;
        }

        .filter-btn {
            padding: 8px 20px;
            background: var(--bg);
            color: var(--text);
            border: none;
            border-radius: 30px;
            cursor: pointer;
            transition: var(--transition);
        }

        .filter-btn.active, .filter-btn:hover {
            background: var(--primary);
            color: white;
        }

        .menu-grid {
            display: grid;
            grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
            gap: 30px;
        }

        .menu-item {
            background: var(--bg);
            border-radius: 10px;
            overflow: hidden;
            box-shadow: 0 5px 15px var(--shadow);
            transition: var(--transition);
        }

        .menu-item:hover {
            transform: translateY(-10px);
            box-shadow: 0 15px 30px var(--shadow);
        }

        .menu-item-img {
            height: 200px;
            background-color: var(--primary);
            display: flex;
            align-items: center;
            justify-content: center;
            color: white;
            font-size: 2rem;
        }

        .menu-item-info {
            padding: 20px;
        }

        .menu-item-title {
            display: flex;
            justify-content: space-between;
            margin-bottom: 10px;
        }

        .menu-item-title h3 {
            color: var(--primary);
        }

        .menu-item-price {
            color: var(--primary);
            font-weight: bold;
        }

        /* Testimonials */
        .testimonials {
            background-color: var(--bg);
        }

        .testimonials-container {
            display: flex;
            flex-wrap: wrap;
            gap: 30px;
            justify-content: center;
        }

        .testimonial {
            background: var(--card);
            padding: 30px;
            border-radius: 10px;
            box-shadow: 0 5px 15px var(--shadow);
            width: 300px;
            transition: var(--transition);
        }

        .testimonial:hover {
            transform: translateY(-5px);
            box-shadow: 0 15px 30px var(--shadow);
        }

        .testimonial-text {
            font-style: italic;
            margin-bottom: 20px;
        }

        .testimonial-author {
            display: flex;
            align-items: center;
        }

        .testimonial-author img {
            width: 50px;
            height: 50px;
            border-radius: 50%;
            margin-right: 15px;
            object-fit: cover;
        }

        /* Reservation Section */
        .reservation {
            background: linear-gradient(rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.8)), url('https://images.unsplash.com/photo-1576854284880-3200b1c6d614?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8MTB8fHJlc3RhdXJhbnQlMjB0YWJsZXxlbnwwfHwwfHx8MA%3D%3D&auto=format&fit=crop&w=1000&q=60');
            background-size: cover;
            background-position: center;
            color: white;
            text-align: center;
        }

        .reservation h2 {
            color: white;
        }

        .reservation-form {
            max-width: 600px;
            margin: 0 auto;
            background: rgba(0, 0, 0, 0.7);
            padding: 30px;
            border-radius: 10px;
        }

        .form-group {
            margin-bottom: 20px;
            text-align: left;
        }

        .form-group label {
            display: block;
            margin-bottom: 8px;
            font-weight: 500;
        }

        .form-group input,
        .form-group select,
        .form-group textarea {
            width: 100%;
            padding: 12px 15px;
            border: 1px solid #ddd;
            border-radius: 5px;
            font-size: 1rem;
            background: rgba(255, 255, 255, 0.9);
        }

        /* Footer */
        footer {
            background: var(--secondary);
            color: white;
            padding: 60px 0 30px;
        }

        .footer-content {
            display: flex;
            flex-wrap: wrap;
            gap: 40px;
            justify-content: space-between;
            margin-bottom: 40px;
        }

        .footer-column {
            flex: 1;
            min-width: 250px;
        }

        .footer-column h3 {
            color: var(--primary);
            margin-bottom: 20px;
            font-size: 1.5rem;
        }

        .footer-column p, .footer-column li {
            margin-bottom: 10px;
        }

        .footer-column ul {
            list-style: none;
        }

        .footer-column a {
            color: #ddd;
            text-decoration: none;
            transition: var(--transition);
        }

        .footer-column a:hover {
            color: var(--primary);
        }

        .social-links {
            display: flex;
            gap: 15px;
            margin-top: 20px;
        }

        .social-links a {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            width: 40px;
            height: 40px;
            background: rgba(255, 255, 255, 0.1);
            border-radius: 50%;
            transition: var(--transition);
        }

        .social-links a:hover {
            background: var(--primary);
            transform: translateY(-3px);
        }

        .copyright {
            text-align: center;
            padding-top: 30px;
            border-top: 1px solid rgba(255, 255, 255, 0.1);
        }

        /* Responsive Design */
        @media (max-width: 992px) {
            .about-content {
                flex-direction: column;
            }
            
            .hero h1 {
                font-size: 2.8rem;
            }
            
            .section-title {
                font-size: 2.2rem;
            }
        }
        
        @media (max-width: 768px) {
            .menu-toggle {
                display: block;
            }
            
            .nav-links {
                position: fixed;
                top: 80px;
                left: -100%;
                width: 100%;
                height: calc(100vh - 80px);
                background: var(--card);
                flex-direction: column;
                align-items: center;
                justify-content: center;
                transition: 0.5s;
                box-shadow: 0 5px 15px var(--shadow);
            }
            
            .nav-links.active {
                left: 0;
            }
            
            .nav-links li {
                margin: 20px 0;
            }
            
            .hero h1 {
                font-size: 2.5rem;
            }
            
            .section-title {
                font-size: 2rem;
            }
            
            .hero-buttons {
                flex-direction: column;
                align-items: center;
            }
        }

JavaScript(script.js)

// Theme Toggle Functionality
        const themeToggle = document.getElementById('theme-toggle');
        const themeIcon = themeToggle.querySelector('i');
        const body = document.body;
        
        themeToggle.addEventListener('click', () => {
            if (body.classList.contains('dark-mode')) {
                body.classList.remove('dark-mode');
                body.classList.add('light-mode');
                themeIcon.classList.remove('fa-moon');
                themeIcon.classList.add('fa-sun');
            } else {
                body.classList.remove('light-mode');
                body.classList.add('dark-mode');
                themeIcon.classList.remove('fa-sun');
                themeIcon.classList.add('fa-moon');
            }
        });
        
        // Mobile Menu Toggle
        const menuToggle = document.getElementById('menu-toggle');
        const navLinks = document.getElementById('nav-links');
        
        menuToggle.addEventListener('click', () => {
            navLinks.classList.toggle('active');
        });
        
        // Close menu when clicking on a link
        document.querySelectorAll('.nav-links a').forEach(link => {
            link.addEventListener('click', () => {
                navLinks.classList.remove('active');
            });
        });
        
        // Menu Filtering
        const filterButtons = document.querySelectorAll('.filter-btn');
        const menuItems = document.querySelectorAll('.menu-item');
        
        filterButtons.forEach(button => {
            button.addEventListener('click', () => {
                // Remove active class from all buttons
                filterButtons.forEach(btn => btn.classList.remove('active'));
                
                // Add active class to clicked button
                button.classList.add('active');
                
                const filter = button.getAttribute('data-filter');
                
                menuItems.forEach(item => {
                    if (filter === 'all' || item.getAttribute('data-category') === filter) {
                        item.style.display = 'block';
                    } else {
                        item.style.display = 'none';
                    }
                });
            });
        });
        
        // Form Submission
        document.getElementById('reservationForm').addEventListener('submit', function(e) {
            e.preventDefault();
            alert('Thank you for your reservation! We will confirm your booking shortly.');
            this.reset();
        });
        
        // Set minimum date for reservation to today
        const today = new Date().toISOString().split('T')[0];
        document.getElementById('date').setAttribute('min', today);


Download & Preview

👉 Download Agency Website Source Code
👉 Live Preview of Agency Website

For more free projects and tutorials, visit my Website.


Final Words

By following this tutorial, you have successfully created a responsive agency website using HTML, CSS & JavaScript.

This project helps you practice:
✔ Responsive design
✔ Navigation bar
✔ Hero section with background
✔ CSS styling for buttons & layout

If you found this helpful, please share it with others and stay tuned for more HTML CSS JavaScript projects for beginners. 🚀


Post a Comment

0 Comments