DEV Community

Cover image for Create a split-screen layout
Phuoc Nguyen
Phuoc Nguyen

Posted on • Originally published at phuoc.ng

Create a split-screen layout

Here's what we'll cover:

  • How to use the display: grid declaration to create a grid
  • How to define columns in a grid using the grid-template-columns property

Have you ever visited a website or used an app that had multiple tasks or views happening at the same time? If so, you might have seen a split-screen layout. This design technique divides the screen into two or more sections, and it's a popular choice for e-commerce sites, news sites, and productivity tools.

One of the best things about split-screen layouts is that they make it easy for users to compare and contrast different types of information or functionality. Instead of having to switch between different pages or screens, users can see everything side-by-side. This reduces the need for excessive scrolling and navigation, making the user experience much smoother.

If you've ever logged into a website, you've probably seen a split-screen layout in action. Typically, the product features are displayed on the left side, while the login form is on the right side.

In the next sections, we'll explore how to use CSS grid to create a simple split-screen layout.

Setting up the HTML structure

First things first, let's create the HTML structure for our split-screen layout. We'll begin by setting up a container element that will hold both sides of the split-screen. Within this container, we will create two div elements, one for each side of the split-screen.

<div class="screen">
    <div class="screen__left">
        <!-- Content for left side goes here -->
    </div>
    <div class="screen__right">
        <!-- Content for right side goes here -->
    </div>
</div>
Enter fullscreen mode Exit fullscreen mode

Achieving layout with CSS flexbox

Before jumping into the solution of using CSS grid, we can use the trusty old method of using CSS flexbox to achieve the same layout.

To do this, we simply set the container's display property to flex and use the flex-basis property to define each side's width as half of the container's width (50%).

.screen {
    display: flex;
}

.screen__left,
.screen__right {
    flex-basis: 50%;
}
Enter fullscreen mode Exit fullscreen mode

You can customize the background color and padding for each side of your layout to fit your needs perfectly. Check out the example below to see how it works:

Utilizing CSS grid

In addition to using the CSS flexbox approach mentioned earlier, we can also make use of CSS grid to achieve our desired layout.

To do this, we simply use the display: grid declaration to create a grid within the .screen class. We can then define the columns of the grid by using the grid-template-columns property. In this case, we are defining two columns of equal width using repeat(2, 1fr). This means that each column will take up an equal amount of space within the .screen container.

.screen {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
}
Enter fullscreen mode Exit fullscreen mode

It's worth noting that we have the option to define different widths for each column by adjusting the values in grid-template-columns. For instance, if we wanted the left side to be twice as wide as the right side, we could simply use grid-template-columns: 2fr 1fr.

Feel free to customize the appearance of each side to your liking. For example, we can add a vertical line between two sides by using the border-right property for the left one.

.screen__left {
    border-right: 1px solid rgb(203 213 225);
}
Enter fullscreen mode Exit fullscreen mode

Let's take a look at the layout and see how it appears.

Conclusion

In this post, we explored two ways to create a split-screen layout using CSS: flexbox and grid. While both approaches have their advantages, CSS grid provides more flexibility and control over how elements are placed within the layout.

With grid-template-columns, we can easily adjust the width of each section of our split-screen layout, allowing us to create complex layouts with multiple elements.

Overall, using a split-screen layout is an effective way to enhance user experience on your website or application. By dividing content into separate sections and displaying them side-by-side, users can navigate your site or app more easily and find what they need quickly and efficiently.


If you found this series helpful, please consider giving the repository a star on GitHub or sharing the post on your favorite social networks 😍. Your support would mean a lot to me!

If you want more helpful content like this, feel free to follow me:

Top comments (0)