Design
Page is the surface that defines the interactive space and contains the global elements that are: the layout, the header, the footer, and the content.
There are several layout and style varations:
- Most data room pages use the fluid layout, to maximise horizontal space for dense content such as tables.
- Most web pages use the fixed or hybrid layout, to create a more comfortable reading length for block copy.
- Dialog page is for full page, non-layered modal interactions.
- There is a legacy popup page layout, to support some old corners of the data room.
Pages should include a Header and Footer; they may also include a Sidebar Menu or Vertical Navigation on the left of the main content area.
Code
Page layout
The overall page layout is set by the base class ace-page
on the BODY, plus optional modifiers (fluid is the default if no modifier is set):
<body class="ace-page ace-page-fluid">
</body>
<body class="ace-page ace-page-fixed">
</body>
<body class="ace-page ace-page-hybrid">
</body>
<body class="ace-page ace-page-dialog">
</body>
<body class="ace-page ace-page-popup">
</body>
To ensure Page works on mobiles, include the viewport meta tag in the HEAD:
<meta name="viewport" content="width=device-width, initial-scale=1" />
The pattern continues with a page wrapper, header, content and footer element. The #hidden div provides a location for content which should never be visible, for example script elements.
<body class="ace-page">
<div id="page">
<header id="header" role="banner">
<!-- Header goes here-->
</header>
<main id="content" role="main">
<!-- Content goes here-->
</main>
<footer id="footer" role="contentinfo">
<!-- Footer goes here-->
</footer>
</div>
<div id="hidden">
<!-- Hidden content like scripts goes here-->
</div>
</body>
Header
Refer to the Header documentation for full details.
Content
Content has the optional pattern to set up content with a sidebar:
<div class="ace-group ace-page-content">
<div class="ace-item ace-page-content-sidebar">
<p class="ace-p">Sidebar</p>
</div>
<div class="ace-item ace-page-content-content">
<h1 class="ace-h1">Content</h1>
<p class="ace-p">Your masterpiece begins here.</p>
</div>
</div>
footer
To set up a simple footer with right-aligned content:
<div class="ace-footer">
<div class="ace-footer-content">
<p class="ace-p">ACE © ansarada</p>
</div>
</div>
Putting it together
<div id="page">
<header id="header" role="banner">
<div class="ace-header ace-group ace-group-split">
<div class="ace-item ace-header-logo"><img src="filename.ext" alt="Descriptive text" />
</div>
<div class="ace-item ace-header-main">
<h1 class="ace-h1">ACE</h1>
</div>
<div class="ace-item ace-header-controls">
<ul class="ace-ul">
<li>Control</li>
<li>Control</li>
</ul>
</div>
</div>
</header>
<main id="content" role="main">
<div class="ace-group ace-page-content">
<div class="ace-item ace-page-content-sidebar">
<p class="ace-p">Sidebar</p>
</div>
<div class="ace-item ace-page-content-content">
<h1 class="ace-h1">Content</h1>
<p class="ace-p">Your masterpiece begins here.</p>
</div>
</div>
</main>
<footer id="footer" role="contentinfo">
<div class="ace-footer">
<div class="ace-footer-content">
<p class="ace-p">ACE © ansarada</p>
</div>
</div>
</footer>
</div>
<div id="hidden">
</div>
Page dialog pattern
View the Page Dialog demonstration.
Page Dialogs are for non-layered modal interactions. Note this is similar but not the same as the Dialog component, which is used for modal interactions layered over the current view.
Configuration:
- Set BODY to class
ace-page-dialog
- The Page Dialog pattern (starting with ace-page-dialog-content) then sits within the ace-page-content-content page content.
- ace-dialog-footer component is required at the bottom of the ace-page-dialog-content.
Design notes
- ace-panel-primary borders get removed.
- ace-item last item get a grey line.
- ace-forms get a white background.
<body class="ace-page ace-page-dialog">
<div id="page">
<header id="header" role="banner">
<!-- ACE Header-->
</header>
<main id="content" role="main">
<div class="ace-group ace-page-content">
<div class="ace-item ace-page-content-content">
<div class="ace-page-dialog-content">
<!-- ACE content header can go here-->
<p class="ace-p">Page dialog contents.</p>
<div class="ace-dialog-footer">
<div class="ace-button-group ace-button-group-separate">
<button class="ace-button" type="button"><span>Answer and request approval</span></button>
<button class="ace-button ace-button-icon" type="button"><span><span class="ace-icon ace-icon-control-close" title="Close">Close</span></span></button>
</div>
</div>
</div>
</div>
</div>
</main>
<footer id="footer" role="contentinfo">
<!-- ACE Footer-->
</footer>
</div>
</body>
Legacy page patterns
Popup pattern
<body class="ace-page ace-page-popup">
<div id="page">
<header id="header" role="banner">
<h1 class="ace-h1">Header Text</h1>
</header>
<main id="content" role="main">
<div class="ace-group ace-page-content">
<div class="ace-item ace-page-content-content">
<p class="ace-p">Content</p>
</div>
</div>
</main>
<footer id="footer" role="contentinfo">
<button class="ace-button" id="printButton" type="button"><span>Print</span></button>
<button class="ace-button ace-button-icon ace-button-icon" type="button"><span><span class="ace-icon ace-icon-control-close" title="close">close</span></span></button>
</footer>
</div>
<div id="hidden">
</div>
</body>
Popup with form pattern
<body class="ace-page ace-page-popup">
<div id="page">
<header id="header" role="banner">
<h1 class="ace-h1">Header Text</h1>
</header>
<form method="POST" action="http://example.com">
<main id="content" role="main">
<div class="ace-group ace-page-content">
<div class="ace-item ace-page-content-content">
<div class="ace-form ace-form-sidelabel">
<!-- Form content goes here-->
</div>
</div>
</div>
</main>
<footer id="footer" role="contentinfo">
<button class="ace-button" type="submit"><span>Submit</span></button>
<button class="ace-button ace-button-icon ace-button-icon" type="button"><span><span class="ace-icon ace-icon-control-close" title="close">close</span></span></button>
</footer>
</form>
</div>
<div id="hidden">
</div>
</body>