header is a toolbar at the top of the page that usually contains the page title text and optional buttons positioned to the the left and/or right of the title for navigation or actions. Headers can optionally be positioned as fixed so they remain at the top of the screen at all times instead of scrolling with the page.
The title text is normally an H1 heading element but it's possible to use any heading level (H1-H6) to allow for semantic flexibility. For example, a page containing multiple mobile 'pages' may use a H1 element on the home 'page' and a H2 element on the secondary pages. All heading levels are styled identically by default to maintain visual consistency.
<div data-role="header"> <h1>Page Title</h1> </div>
header toolbar is themed with the "a" swatch by default (black in the default theme) but you can easily set the theme swatch color.
In the standard header configuration, there are slots for buttons on either side of the text heading. Each button is typically an
anchor element, but any valid button markup will work. To save space, buttons in toolbars are set to inline styling so the button is only as wide as the text and icons it contains.
The header plugin looks for immediate children of the header container, and automatically sets the first link in the left button slot and the second link in the right. In this example, the 'Cancel' button will appear in the left slot and 'Save' will appear in the right slot based on their sequence in the source order.
<div data-role="header" data-position="inline"> <a href="index.html" data-icon="delete">Cancel</a> <h1>Edit Contact</h1> <a href="index.html" data-icon="check">Save</a> </div>
Buttons automatically adopt the swatch color of the bar they sit in, so a link in a header bar with the "a" color will also be styled as "a" colored buttons. It's simple to make a button visually stand out. Here, we add the
data-theme attribute and set the color swatch for the button to "b" to make the "Save" button pop.
<div data-role="header" data-position="inline"> <a href="index.html" data-icon="delete">Cancel</a> <h1>Edit Contact</h1> <a href="index.html" data-icon="check" data-theme="b">Save</a> </div>
The button position can also be controlled by adding classes to the button anchors, rather than relying on source order. This is especially useful if you only want a button in the right slot. To specify the button position, add the class of
ui-btn-right to the anchor.
<div data-role="header" data-position="inline"> <h1>Page Title</h1> <a href="index.html" data-icon="gear" class="ui-btn-right">Options</a> </div>
The heading in the header bar has some margin that will give the bar its height. If you choose not to use a heading, you will need to add an element with
class="ui-title" so that the bar can get the height and display correctly.
<div data-role="header" data-position="inline"> <a href="index.html" data-icon="gear" class="ui-btn-right">Options</a> <span class="ui-title" /> </div>
jQuery Mobile has a feature to automatically create and append "back" buttons to any header, though it is disabled by default. This is primarily useful in chromeless installed applications, such as those running in a native app webview. The framework automatically generates a "back" button on a header when the page plugin's
addBackBtn option is true. This can also be set via markup if the page div has a
If you use the attribute
If you just want a reverse transition without actually going back in history, you should use the
If you'd like to configure the back button text, you can either use the
data-back-btn-text="previous" attribute on your page element, or set it programmatically via the page plugin's options:
$.mobile.page.prototype.options.backBtnText = "previous";
If you'd like to configure the back button role-theme, you can use:
$.mobile.page.prototype.options.backBtnTheme = "a";
If you're doing this programmatically, set this option inside the mobileinit event handler.
If you need to to create a header that doesn't follow the default configuration, simply wrap your custom styled markup in any container, such as
div. The plugin won't apply the automatic button logic to the wrapped content inside the header container so you can write custom styles for laying out the content in your header.
It's also possible to create custom bars without using the header data-role at all. For example, start with any container and add the
ui-bar class to apply standard bar padding and add the
ui-bar-b class to assign the bar swatch styles from your theme. (The "b" can be any swatch letter.)
<div class="ui-bar ui-bar-b"> <h3>I'm just a div with bar classes and a <a href="#" data-role="button">Button</a></h3> </div>
This will produce this bar:
.ui-bar should not be added to header or footer bars that span the full width of the page, as the additional padding will cause a full-width element to break out of its parent container. To add padding inside of a full-width toolbar, wrap the toolbar's contents in an element and apply the padding to that element instead.
By writing some simple styles, it's easy to build message bars like this:
And here's some additional text in a paragraph.