← Back toCSS grid

Create a split-screen layout

Written byPhuoc Nguyen
Created
31 Dec, 2023
Tags
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.
html
<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>

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%`).
css
.screen {
display: flex;
}

.screen__left,
.screen__right {
flex-basis: 50%;
}
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.
css
.screen {
display: grid;
grid-template-columns: repeat(2, 1fr);
}
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.
css
.screen__left {
border-right: 1px solid rgb(203 213 225);
}
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 post 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!

Questions? 🙋

Do you have any questions about front-end development? If so, feel free to create a new issue on GitHub using the button below. I'm happy to help with any topic you'd like to learn more about, even beyond what's covered in this post.
While I have a long list of upcoming topics, I'm always eager to prioritize your questions and ideas for future content. Let's learn and grow together! Sharing knowledge is the best way to elevate ourselves 🥷.
Ask me questions

Recent posts ⚡

Newsletter 🔔

If you're into front-end technologies and you want to see more of the content I'm creating, then you might want to consider subscribing to my newsletter.
By subscribing, you'll be the first to know about new articles, products, and exclusive promotions.
Don't worry, I won't spam you. And if you ever change your mind, you can unsubscribe at any time.
Phước Nguyễn