A set of built-in icons in jQuery Mobile can be applied to buttons, collapsibles, lists and more.
The following data-icon
attributes can be referenced to create the icons shown below:
Bars - data-icon="bars"
My buttonEdit - data-icon="edit"
My buttonLeft arrow - data-icon="arrow-l"
My buttonRight arrow - data-icon="arrow-r"
My buttonUp arrow - data-icon="arrow-u"
My buttonDown arrow - data-icon="arrow-d"
My buttonDelete - data-icon="delete"
My buttonPlus - data-icon="plus"
My buttonMinus - data-icon="minus"
My buttonCheck - data-icon="check"
My buttonGear - data-icon="gear"
My buttonRefresh - data-icon="refresh"
My buttonForward - data-icon="forward"
My buttonBack - data-icon="back"
My buttonGrid - data-icon="grid"
My buttonStar - data-icon="star"
My buttonAlert - data-icon="alert"
My buttonInfo - data-icon="info"
My buttonHome - data-icon="home"
My buttonSearch - data-icon="search"
My buttonBy default, all icons in buttons are placed to the left of the button text. This default may be overridden using the data-iconpos
attribute to set the icon to the right, above (top) or below (bottom) the text.
You can also create an icon-only button, by setting the data-iconpos
attribute to notext
. The button plugin will hide the text on-screen, but add it as a title
attribute on the link to provide context for screen readers and devices that support tooltips.
There is dark semi-opaque disc behind each icon to ensure good contrast when placed on any background color. If you prefer to not have this disc, it can be removed by adding the class ui-icon-nodisc
to the element or its container. Set data-iconshadow="false"
to disable the icon shadow.
Example of the class being applied to a wrapper.
The white vs. black icon sprite is set at the theme level but you can override which is used by adding the ui-icon-alt
class to the element or its container. This also changes the color that is used for the discs.
Example of the class being applied to a wrapper.
Example of the class applied to the UL
or OL
to change to the black icons for each list item.
Example of the class being applied to a collapsible.
To use custom icons, specify a data-icon
value that has a unique name like myapp-email
and the button plugin will generate a class by prefixing ui-icon-
to the data-icon
value and apply it to the button: ui-icon-myapp-email
.
You can then write a CSS rule in your stylesheet that targets the ui-icon-myapp-email
class to specify the icon background source. To maintain visual consistency with the rest of the icons, create a white icon 18x18 pixels saved as a PNG-8 with alpha transparency.
In this example, we're just pointing to a standalone icon image, but you could just as easily use an icon sprite and specify the positioning instead, just like the icon sprite we use in the framework.
.ui-icon-myapp-email {
background-image: url("app-icon-email.png");
}
This will create the standard resolution icon, but many devices now have very high resolution displays, like the retina display on the iPhone 4. To add a HD icon, create an icon that is 36x36 pixels (exactly double the 18 pixel size), and add second a rule that uses the -webkit-min-device-pixel-ratio: 2
media query to target a rule only to high resolution displays. Specify the background image for the HD icon file and set the background size to 18x18 pixels which will fit the 36 pixel icon into the same 18 pixel space. The media query block can wrap multiple icon rules:
@media only screen and (-webkit-min-device-pixel-ratio: 2) {
.ui-icon-myapp-email {
background-image: url("app-icon-email-highres.png");
background-size: 18px 18px;
}
...more HD icon rules go here...
}
The semi-transparent black circle behind the white icon ensures good contrast on any background color so it works well with the jQuery Mobile theming system. Here are examples of the same icons sitting on top of a range of different color swatches with themed buttons.
Swatch "a" themed buttons
Swatch "b" themed buttons
Swatch "c" themed buttons
Swatch "d" themed buttons
Swatch "e" themed buttons