Skip to content

Instantly share code, notes, and snippets.

@loftwah
Last active June 13, 2024 11:10
Show Gist options
  • Save loftwah/bd1b7572deb04d21ffd8d2858220655c to your computer and use it in GitHub Desktop.
Save loftwah/bd1b7572deb04d21ffd8d2858220655c to your computer and use it in GitHub Desktop.
HTML Landing Page Guide

Creating a Landing Page with HTML and Tailwind CSS in VS Code

This guide will walk you through setting up and creating a basic landing page using HTML and Tailwind CSS with VS Code on Windows. We'll use the Tailwind CSS CDN for quick setup but note that for production, especially in a larger application, you'd want to integrate Tailwind through a build process.

Step-by-Step Instructions

1. Setting Up VS Code

Install Visual Studio Code (VS Code)

  1. Download and Install VS Code:

    • Visit the VS Code website and download the installer for Windows.
    • Run the installer and follow the prompts to install VS Code.

Previewing HTML in VS Code

VS Code allows you to preview HTML files directly. Use the built-in Live Preview feature:

  1. Open the index.html file in VS Code.
  2. Right-click on the file in the file explorer or within the editor.
  3. Select Open with Live Preview.

If Live Preview is not visible, you can directly open the HTML file in your web browser by locating the file on your computer and double-clicking it.

2. Creating Your Project and Setting Up Tailwind CSS

Create a Project Folder

  1. Create a New Folder:

    • For example, create a folder named LandingPage in a directory of your choice.
  2. Open the Folder in VS Code:

    • Start VS Code and go to File > Open Folder, then select the LandingPage folder.

Create and Set Up the HTML File

  1. Create the HTML File:

    • In VS Code, right-click in the file explorer panel on the left and select New File.
    • Name it index.html.
  2. Add the Basic HTML and Tailwind CSS Setup:

    • Open index.html and add the following code:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Landing Page</title>
    <!-- Tailwind CSS CDN for Quick Start -->
    <link href="https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css" rel="stylesheet">
</head>
<body class="bg-gray-100">
    <!-- Content will go here -->
</body>
</html>

Tailwind CSS Documentation and Colors

Tailwind CSS provides extensive documentation for its utility-first framework. You can find detailed information about installation, usage, and customization on their official documentation page.

For colors, Tailwind provides a palette of default colors that can be used effectively for design. You can explore the default colors and their shades in the Tailwind Colors Documentation.

For example:

  • bg-blue-500 sets the background color to blue.
  • text-gray-700 sets the text color to a darker shade of gray.

These colors can be customized as needed, but the defaults offer a robust starting point.

3. Building the Landing Page Layout

We'll create a simple landing page with the following sections:

  • Header with a navigation bar.
  • Hero Section with a headline and a call-to-action button.
  • Feature Section with three columns for features.
  • Footer.

Key Principles for Modern Layouts

  • Flexbox for Layout: Use flex utilities to create flexible and responsive layouts.
  • Padding over Margin: Prefer padding (p-4, py-20, etc.) to control spacing within elements rather than margins.
  • Minimalism: Avoid unnecessary styles and stick to modern, clean layouts.

HTML and Tailwind CSS Skeleton

Add the following code to your index.html file to set up the layout:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Landing Page</title>
    <!-- Tailwind CSS CDN for Quick Start -->
    <link href="https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css" rel="stylesheet">
</head>
<body class="bg-gray-100 font-sans leading-normal tracking-normal">
    <!-- Header -->
    <header class="bg-white shadow">
        <div class="container mx-auto p-4 flex justify-between items-center">
            <h1 class="text-2xl font-bold">My Website</h1>
            <nav>
                <ul class="flex">
                    <li class="px-2"><a href="#" class="text-gray-700">Home</a></li>
                    <li class="px-2"><a href="#" class="text-gray-700">About</a></li>
                    <li class="px-2"><a href="#" class="text-gray-700">Services</a></li>
                    <li class="px-2"><a href="#" class="text-gray-700">Contact</a></li>
                </ul>
            </nav>
        </div>
    </header>

    <!-- Hero Section -->
    <section class="bg-blue-500 text-white py-20 flex items-center justify-center">
        <div class="text-center px-4">
            <h2 class="text-4xl font-bold pb-4">Welcome to Our Landing Page</h2>
            <p class="text-lg pb-8">Your success starts here. Join us today.</p>
            <button class="bg-white text-blue-500 font-bold py-2 px-4 rounded">Get Started</button>
        </div>
    </section>

    <!-- Features Section -->
    <section class="container mx-auto py-20 px-4">
        <h2 class="text-3xl font-bold text-center pb-10">Our Features</h2>
        <div class="flex flex-col md:flex-row justify-center items-stretch">
            <div class="flex-1 bg-white p-6 rounded-lg shadow-lg text-center md:px-2 pb-6 md:pb-0">
                <div class="pb-4">
                    <!-- Placeholder for an icon or image -->
                    <div class="bg-gray-300 h-16 w-16 mx-auto rounded-full"></div>
                </div>
                <h3 class="text-xl font-bold pb-2">Feature One</h3>
                <p class="text-gray-700">Description of feature one.</p>
            </div>
            <div class="flex-1 bg-white p-6 rounded-lg shadow-lg text-center md:px-2 pb-6 md:pb-0">
                <div class="pb-4">
                    <!-- Placeholder for an icon or image -->
                    <div class="bg-gray-300 h-16 w-16 mx-auto rounded-full"></div>
                </div>
                <h3 class="text-xl font-bold pb-2">Feature Two</h3>
                <p class="text-gray-700">Description of feature two.</p>
            </div>
            <div class="flex-1 bg-white p-6 rounded-lg shadow-lg text-center md:px-2">
                <div class="pb-4">
                    <!-- Placeholder for an icon or image -->
                    <div class="bg-gray-300 h-16 w-16 mx-auto rounded-full"></div>
                </div>
                <h3 class="text-xl font-bold pb-2">Feature Three</h3>
                <p class="text-gray-700">Description of feature three.</p>
            </div>
        </div>
    </section>

    <!-- Footer -->
    <footer class="bg-gray-800 text-white py-6">
        <div class="container mx-auto text-center">
            <p>&copy; 2024 My Website. All rights reserved.</p>
        </div>
    </footer>
</body>
</html>

Explanation of the Layout

  1. Header:

    • The navigation links are now spaced using padding (px-2).
    • This avoids the use of margins for spacing between the navigation items.
  2. Hero Section:

    • Centered horizontally and vertically using flexbox (flex, items-center, justify-center).
    • The text is wrapped in a div with px-4 to provide horizontal padding for better layout on smaller screens.
  3. Features Section:

    • The feature boxes are laid out using flex and flex-col for vertical stacking on smaller screens and pd:flex-row for horizontal layout on larger screens.
    • md:px-2 provides horizontal padding between the feature boxes on medium and larger screens.
    • pb-6 adds vertical padding between feature boxes on smaller screens.
    • The use of px-2 for spacing on medium and larger screens helps align elements using padding rather than margins.
  4. Footer:

    • Consistent padding (py-6) is used to add space inside the footer.

Using Tailwind CSS Effectively

For effective use of Tailwind CSS:

  • Flexbox Utilities: Use flex, flex-col, justify-center, items-center, etc., to create flexible and responsive layouts.
  • Padding Utilities: Use p-*, py-*, px-* to control the spacing within elements rather than relying on margins.
  • Color Utilities: Tailwind provides a wide range of colors. Use classes like bg-blue-500 and text-gray-700 for setting background and text colors. Refer to the Tailwind Color Documentation for more details.

Tailwind CSS for Production

For quick development, using the CDN link is fine. However, for production:

  • Optimize for Performance: Use Tailwind’s build tools to remove unused styles and reduce CSS file size.
  • Custom Configuration: Tailwind allows customization to fit specific project needs. This is done through configuration files when installed via npm.
  • Deployment Considerations: When deploying to platforms like GitHub Pages, using the CDN is convenient, but integrating Tailwind via a build process is preferred for larger projects or more control.

For setting up Tailwind for production, follow the installation guide on their documentation.

This approach ensures we use modern practices with padding and flexbox for layout while avoiding unnecessary margins.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment