Description

Splitting a layout allows a screen to be segmented into two or more re-sizable areas or split panes, that can be shown side by side. This flexible layout option is suitable for comparison type-of-scenarios, or for working simultaneously on different items at the same time.

Usage

It is to use split screens and side panels in the same UI, as this will fragment the content area and the user's focus. Instead, use panes themselves as a kind of side panel.

Anatomy

So many ways to split a screen...

Behaviors & Interactions

Resizing

There are two ways to resize split panes:

When resizing a pane, the neighbouring pane will also be affected. Do not create the illusion split panes are layering over or covering other panes. Never use resizing as a means of closing panes.

2
do
false
Give users the freedom and control to decide for themselves the size of a split pane.
dont
false
Don't overlay or cover neighbouring panes when a pane is resized. Content on both sides of splitter should be responsive.
guideline
Fixed-size PanesSplit panes may alternatively have fixed sizes that prevent the user from resizing them at all. If using a fixed-size split pane, do not use a gripper icon or interaction state changes on the splitter itself.

Opening and Closing

Split screen layouts may use additional panes that can be opened and closed when desired. The pattern for these interactions depends on the usage of toolbars, whether a single global application toolbar, or localized header toolbars in each pane (See the Best Practices section for toolbar usage on spit screen layouts).

For example, if using...

Never use splitters and resizing interactions to open and close panes.

Best Practices

Default to Split Form

Decide which pane should act as the main focus and how additional panes feed into or support it. Show as many opened panes as possible and in their most useful size by default. Users will benefit from understanding they are dealing with multiple resizable segments from the start and feel more inclined to resize split panes as desired.

If appropriate, consider an action button to return the layout to default. Occasionally, additional split panes may be opened and closed in progressive disclosure.

Enforce Size Caps

Consider minimum and maximum limits for panes, in terms of percentage of the browser window size, to avoid users pushing panes fully off-screen. Minimum sizes can prevent users from accidentally closing the pane or resizing the browser screen when they intended to grab the splitter instead.

2
do
false
Enforce minimum and maximum sizes for split panes
dont
false
Don't allow splitters to be pushed to the edge of the browser window or panes to be pushed completely off screen.

Work with Responsive Controls

When resizing panes, ensure its inner contents can be resized responsively. This is especially important if the controls being used are custom design elements from outside of the Fiori UI5 component library. As such, consider responsive breakpoints to make content render optimally in all variations of pane sizes. Ignoring this principle will result in multiple sets of vertical and horizontal scrollbars in the same screen (yikes!).

Use Toolbars Responsibly

Prioritize headers and toolbars that can be placed inside panes themselves, instead of one global application toolbar, as this creates a more direct relationship between tools and the content they pertain to. If using a global application toolbar, avoid double-dipping with additional localized toolbars so functions aren’t scattered and cluttering the entire UI.

Split screen layout with localized Header toolbars

Split screen layout with an Application toolbar

Avoid 'death by scrollbar'

Horizontal and vertical scrollbars can be used inside a split panes, but because multiple scrollbars across the same screen can be annoying, reduce over-relying on them where possible. For example:

Specifications

<div> <div>Badge</div> <div>Component</div> <div>Specification</div> <div>Details</div> </div> <div> <div></div> <div></div> <div> <ul> <li><em>Standard:</em> @sapUiBaseBG</li> <li><em>List:</em> @sapUiGroupContentBackground</li> </ul> <p>Use <a href="http%3A%2F%2Fveui5infra.dhcp.wdf.sap.corp%3A8080%2Fdemokit%2F%23%2Fapi%2Fsap.m.PageBackgroundDesign">sap.m.PageBackgroundDesign</a> enumeration for different colors, or hard coding the values above if not using UI5.</p> </div> <div> <ul> <li><em>Standard:</em> #F7F7F7</li> <li><em>List:</em> #FFFFFF</li> </ul> <p>Use <a href="http%3A%2F%2Fveui5infra.dhcp.wdf.sap.corp%3A8080%2Fdemokit%2F%23%2Fapi%2Fsap.m.PageBackgroundDesign">sap.m.PageBackgroundDesign</a> enumeration for different colors, or hard coding values if not using UI5.</p> </div> </div> <div> <div></div> <div>* reverse width and height values for horizontal splitter</div> <div> <p>0.25rem</p> <p>100%</p> <ul> <li>Solid: @sapUiShellBackground</li> <li>Translucent: @sapUiGroupContentBackground</li> <li>Transparent: colorless</li> </ul> <p>@sapUiButtonLiteHoverBackground</p> <p>@sapUiButtonLiteActiveBackground</p> </div> <div> <p>4px</p> <p>100%</p> <ul> <li>Solid: #EDEFF0</li> <li>Translucent: #FFFFFF</li> <li>Transparent: colorless</li> </ul> <p>#EBF5FE</p> <p>#0854A0</p> </div> </div> <div> <div></div> <div>* Icon is vertically and horizontally centered inside the splitter.</div> <div> <p>FPA-Icons</p> <p>Grip-vertical</p> <p>&#xe62f;</p> <p>1rem</p> <ul> <li><em>Regular:</em> @sapUiButtonIconColor</li> <li><em>Hover:</em> @sapUiButtonIconColor</li> <li><em>Down:</em> @sapUiButtonActiveTextColor</li> </ul> </div> <div> <p>FPA-Icons</p> <p>Grip-vertical</p> <p>&#xe62f;</p> <p>16px</p> <ul> <li><em>Regular:</em> #0854A0</li> <li><em>Hover:</em> #0854A0</li> <li><em>Down:</em> #FFFFFF</li> </ul> </div> </div>