Dynamic tiling window managers like dwm and xmonad can do this. They default to a 'master/stack' layout but you can change the layout algorithm. You esentially have a 'master' window and a stack of secondary windows. You can promote a window with super+enter and it gets swapped into the master area.
There are some autotiling scripts for i3 that can emulate this behavior as well.