DEV Community

Cover image for How to create a multi column layout Tailwind CSS
Michael Andreuzza
Michael Andreuzza

Posted on

How to create a multi column layout Tailwind CSS

Today we are doing something simple yet useful, a multi column layout with Tailwind CSS.

See it live and get the coee

Why the multi column layout shines across UIs

This kind of layout, dubbed "Responsive Flexbox Grid with Tailwind CSS," is particularly well-suited for a myriad of user interfaces (UIs) thanks to its flexibility, scalability, and adaptability. Below are some scenarios where this layout truly excels:

  • Dashboard Interfaces: Dashboards often contain multiple sections of information, including charts, tables, and summary panels. A responsive flexbox grid helps organize these elements in a way that optimizes the use of space across different screen sizes, ensuring that critical information is always accessible and legible.

  • Content-Rich Websites or Blogs: For websites with a substantial amount of content, such as news sites or blogs, this layout helps in structuring articles, sidebars, and navigation in a clean, organized manner. It improves readability and enhances the user's ability to find relevant information quickly.

  • E-commerce Platforms: E-commerce sites benefit from multi-column layouts in displaying products, descriptions, and filters side-by-side. This layout adapts gracefully across devices, providing an optimal shopping experience whether on a mobile phone, tablet, or desktop.

  • Portfolios or Photo Galleries: Artists, photographers, and designers can use this layout to showcase their work in an aesthetically pleasing grid that adjusts based on the viewing device, ensuring that their portfolio looks its best on any screen.

  • Educational Platforms and Online Courses: For educational content, a responsive grid can help in neatly organizing course materials, lesson navigation, and related resources, making it easier for students to engage with the material without being overwhelmed by a cluttered interface.

  • Admin Panels and User Settings: Admin panels and settings pages often contain multiple sections and categories. Using a responsive grid helps in categorizing these elements for easy navigation and management, adapting the layout for optimal usability across devices.

  • Social Media Platforms or Community Sites: These platforms can utilize the layout for displaying feeds, user profiles, and additional information side-by-side, enhancing the user experience by providing a coherent structure that adjusts seamlessly across screens.

In essence, the multicolumn layout is advantageous for any UI that requires an organized, scalable approach to content presentation. Its responsiveness ensures that the design remains functional and appealing across all devices, a critical factor in today's multi-device online environment.

Understanding the Layout Structure

The layout consists of three main components:

  1. Sidebar Navigation for Blog Entries
  2. Main Content Area
  3. Table of Contents (TOC) Section

Each of these components is responsive and adapts to the screen size using specific Tailwind CSS classes. Let's break down the classes and understand their roles:

The sidebar navigation

class=".hidden lg:fixed lg:inset-y-0 lg:z-50 lg:flex lg:w-72 lg:flex-col"
Enter fullscreen mode Exit fullscreen mode
  • .hidden: Initially hides the sidebar on smaller screens.
  • lg:fixed: On larger screens, the sidebar becomes fixed to the side.
  • lg:inset-y-0: Stretches the sidebar from the top to the bottom of the viewport.
  • lg:z-50: Elevates the sidebar above other elements (z-index).
  • lg:flex: Applies flexbox layout for inner elements.
  • lg:w-72: Sets a fixed width to the sidebar.
  • lg:flex-col: Stacks the flex items (children) vertically.

Main content area

class="lg:pl-72 xl:pr-96"
Enter fullscreen mode Exit fullscreen mode
  • lg:pl-72: Adds left padding to make room for the sidebar on larger screens.
  • xl:pr-96: Adds right padding to make room for the TOC on extra-large screens.

Table of contents (TOC) section

class="fixed inset-y-0 right-0 py-10 hidden w-96 overflow-y-auto border-l  px-4 sm:px-6 lg:px-8 bg-white xl:block"
Enter fullscreen mode Exit fullscreen mode
  • fixed: The TOC is fixed alongside the right edge of the viewport.
  • inset-y-0 right-0: Positions the TOC at the top and along the right side.
  • py-10: Adds padding to the top and bottom.
  • hidden: The TOC is hidden by default and only visible on extra-large screens.
  • w-96: Sets the width of the TOC.
  • overflow-y-auto: Allows vertical scrolling if the content is too long.
  • border-l: Creates a visual boundary with a light gray border.
  • px-4 sm:px-6 lg:px-8: Sets horizontal padding, which adjusts for different screen sizes.
  • xl:block: Makes the TOC visible on extra-large screens.

Responsive behavior

Tailwind's responsiveness is built on mobile-first principles. By using prefix classes like sm:, lg:, and xl:, we can conditionally apply styles based on the width of the viewport. This means our layout will look great whether it's on a phone, tablet, or desktop monitor.

Combining components

The combination of these components with the utility classes from Tailwind CSS results in a clean, responsive multi-column layout. The sidebar and TOC become accessible as needed, ensuring the main content is always the focus while providing additional navigational tools when there's enough screen real estate.

Wrapping tt up

Embracing Tailwind CSS and its utility-first mindset streamlines the crafting of intricate, responsive designs. It's like having a magic wandโ€”once you get the hang of the spells (or, in our case, classes), you can effortlessly conjure up layouts that not only look good but also function seamlessly across any device.

Think of Tailwind CSS not as a replacement for traditional CSS, but as a supercharger for your web design toolkit. It boosts your efficiency and keeps your code tidy, all while offering the leeway to fine-tune your site's look and feel down to the last pixel, no matter the screen size.

Top comments (0)