Skip to content

Instantly share code, notes, and snippets.

@yamatt
Forked from jpnelson/split.css
Last active September 25, 2021 14:11
Show Gist options
  • Save yamatt/884cbd16373c9b4b0162b9c9d4e11aa2 to your computer and use it in GitHub Desktop.
Save yamatt/884cbd16373c9b4b0162b9c9d4e11aa2 to your computer and use it in GitHub Desktop.
Responsive, resizable panel layout with flexbox JUST CSS
* {
box-sizing: border-box;
}
html, body {
height: 100%;
padding: 0;
margin: 0;
}
.container {
height: 100%;
position:relative;
}
.split {
display: flex;
height: 100%;
}
.split > :nth-child(1) {
overflow: auto;
}
.split > :nth-child(2) {
flex-grow: 1;
}
/* Vertical */
.split.vertical {
flex-direction: column;
}
.split.vertical > :nth-child(1) {
resize: vertical;
}
/* Horizontal */
.split.horizontal {
flex-direction: row;
}
.split.horizontal > :nth-child(1) {
resize: horizontal;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Split panels</title>
<link rel="stylesheet" href="split.css">
</head>
<body>
<div class="container">
<div class="split horizontal">
<div class="split vertical" style="width: 30em;">
<div style="height: 20em; background-color: #f1a9a0">&nbsp;</div>
<div style="background-color: #f1e7fe">&nbsp;</div>
</div>
<div style="background-color: #fff9de">&nbsp;</div>
</div>
</div>
</body>
</html>
@dragontheory
Copy link

Can this have three or more columns - all resizable? As soon as I give additional columns "resize: horizontal;", they seem to be confused. Should I adjust the flex properties? Thanks so much!
https://codepen.io/dragontheory/pen/jRVZXd

@walkermatt
Copy link

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