Create a split-screen layout
Tags: webdev, css, tutorial, learning
Published: 2024-02-29 01:57:47

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:

{% codepen https://codepen.io/phuocng/pen/WNWNQNV %}

## 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.

{% codepen https://codepen.io/phuocng/pen/XWQWmJN %}

## 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](https://github.com/phuocng/css-grid) 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:

-   [DEV](https://dev.to/phuocng)
-   [GitHub](https://github.com/phuocng)
-   [Website](https://phuoc.ng)