Content formatting

jQuery Mobile provides a number of tools and widgets to help you format content for mobile.

HTML markup

Our goal is to leave the main content area pretty much unstyled except for adding in a bit of padding and applying the theme font family and color. We don't use CSS resets or a lot of custom styles because standard HTML markup is provides a lot of visual texture out of the box. By taking a light hand with content styling, it gives designers and developers a clean slate to work with instead of fighting against a lot of complex styles. Here is what standard HTML markup looks like by default:

Default HTML rendering example

Collapsible panels

To create a collapsible block of content, create a container and add the data-role="collapsible" attribute.

Directly inside this container, add any header element (H1-H6). The framework will style the header to look like a clickable button and add a "+" icon to the left to indicate it's expandable.

After the heading, add any HTML markup you want to be collapsible. The framework will wrap all this markup in a container that will be hidden or shown when the heading is clicked.

		
<div data-role="collapsible">
	<h3>I'm a header</h3>
	<p>I'm the collapsible content.</p>
</div>

By default, the content will be expanded. To collapse the content when the page loads, add the data-state="collapsed" attribute to the wrapper.

<div data-role="collapsible" data-state="collapsed">

This code will create a collapsible widget like this:

I'm a header

I'm the collapsible content.

The collapsible content is minimally styled -- we just add a bit of margin between the bar and content but you can add custom styles to tweak the appearance of the collapsible container or heading button.

Collapsible examples

Multi-column grids

On a mobile device, using multiple column layouts isn't generally recommended because of the narrow screen width but there are times where you may need to place buttons or other small elements side-by-side.The framework provides a simple way to build CSS based columns through the grid block styles. Grids have preset configurations for 2- and 3-column layouts that can be used in any situation that requires columns. The grids don't have any padding, margins, borders or background colors -- they are invisible.

To build a 2 column (50/50%) layout, start with a container with a class of ui-grid-a and add two child containers inside that are classed with ui-block-a for the first column and ui-block-b for the second.


<div class="ui-grid-a">
	<div class="ui-block-a">Block A</div>
	<div class="ui-block-b">Block B</div>
</div><!-- /grid-a -->

This will produce a 50/50% grid for our content. (Note that we've added color swatches to the boxes so you can see them)

Block A
Block B

There is a second grid for a 3 column layout (33/33/33%) that is similar in structure but uses class=grid-b on the parent and 3 child wrappers, each with block-a/b/c for the column child containers.


<div class="ui-grid-a">
	<div class="ui-block-a">Block A</div>
	<div class="ui-block-b">Block B</div>
	<div class="ui-block-c">Block C</div>
</div><!-- /grid-a -->

This will produce a 33/33/33% grid for our content.

Block A
Block B
Block C
Grid examples