App Layout
A collection of elements, along with guidelines and templates that can be used to structure your app’s layout.
<app-header reveals>
<app-toolbar>
<paper-icon-button icon="menu" onclick="drawer.toggle()"></paper-icon-button>
<div main-title>My app</div>
<paper-icon-button icon="delete"></paper-icon-button>
<paper-icon-button icon="search"></paper-icon-button>
<paper-icon-button icon="close"></paper-icon-button>
<paper-progress value="10" indeterminate bottom-item></paper-progress>
</app-toolbar>
</app-header>
<app-drawer id="drawer" swipe-open></app-drawer>
<sample-content size="10"></sample-content>
Install
$ bower install PolymerElements/app-layout --save
Import
<link rel="import" href="/bower_components/app-layout/app-layout.html">
What is inside
Elements
-
app-box - A container element that can have scroll effects - visual effects based on scroll position.
-
app-drawer - A navigation drawer that can slide in from the left or right.
-
app-drawer-layout - A wrapper element that positions an app-drawer and other content.
-
app-grid - A helper class useful for creating responsive, fluid grid layouts using custom properties.
-
app-header - A container element for app-toolbars at the top of the screen that can have scroll effects - visual effects based on scroll position.
-
app-header-layout - A wrapper element that positions an app-header and other content.
-
app-toolbar - A horizontal toolbar containing items that can be used for label, navigation, search and actions.
Templates
The templates are a means to define, illustrate and share best practices in App Layout. Pick a template and customize it:
Patterns
Sample code for various UI patterns:
-
Transform navigation:
As more screen space is available, side navigation can transform into tabs.
(Demo - Source)
-
Expand Card:
Content cards may expand to take up more horizontal space.
(Demo - Source)
-
Material Design Responsive Toolbar:
Toolbar changes its height and padding to adapt mobile screen size.
(Demo - Source)
Users
Here are some web apps built with App Layout:
Tools and References
Changes in App Layout 2.0
-
Distribution is now done with slots, so things have changed because of that,
app-drawer-layout
1.x
<app-drawer-layout>
<app-drawer>...</app-drawer>
<div>content</div>
</app-drawer-layout>
2.0
<app-drawer-layout>
<app-drawer slot="drawer">...</app-drawer>
<div>content</div>
</app-drawer-layout>
1.x
<app-header-layout>
<app-header>...</app-header>
<div>content</div>
</app-header-layout>
2.0
<app-header-layout>
<app-header slot="header">...</app-header>
<div>content</div>
</app-header-layout>
app-box
1.x
<app-box effects="...">
<img background ...>
</app-box>
2.0
<app-box effects="...">
<img slot="background" ...>
</app-box>
-
In app-drawer-layout
, the drawer-toggle
element needs to be manually hidden
when app-drawer-layout
is not in narrow layout. To add this, add the following CSS rule where
app-drawer-layout
is used:
app-drawer-layout:not([narrow]) [drawer-toggle] {
display: none;
}
-
In app-drawer-layout
, if you specify a value for --app-drawer-width
, that value must be
accessible by both app-drawer
and app-drawer-layout
. This can be done by defining the value
on the :host
that contains (or html
if outside a shadow root):
:host {
--app-drawer-width: 300px;
}
-
app-scrollpos-control
has been removed from App Layout in favor of using multiple scrolling regions to preserve the scroll position. In terms of UX, document.rootScroller
is a new web platform API that will allow non-document scroll to hide the address bar on mobile.