Skip to main content

CSS Utilities

Ionic Framework provides a set of CSS utility classes that can be used on any element in order to modify the text, element placement or adjust the padding and margin.

If your app was not started using an available Ionic Framework starter, the stylesheets listed in the optional section of the global stylesheets will need to be included in order for these styles to work.

Text Modification#

Text Alignment#

<ion-grid>
<ion-row>
<ion-col>
<div class="ion-text-start">
<h3>text-start</h3>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ac vehicula lorem.
</div>
</ion-col>
<ion-col>
<div class="ion-text-end">
<h3>text-end</h3>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ac vehicula lorem.
</div>
</ion-col>
<ion-col>
<div class="ion-text-center">
<h3>text-center</h3>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ac vehicula lorem.
</div>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<div class="ion-text-justify">
<h3>text-justify</h3>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ac vehicula lorem.
</div>
</ion-col>
<ion-col>
<div class="ion-text-wrap">
<h3>text-wrap</h3>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ac vehicula lorem.
</div>
</ion-col>
<ion-col>
<div class="ion-text-nowrap">
<h3>text-nowrap</h3>
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
</div>
</ion-col>
</ion-row>
</ion-grid>
ClassStyle RuleDescription
.ion-text-lefttext-align: leftThe inline contents are aligned to the left edge of the line box.
.ion-text-righttext-align: rightThe inline contents are aligned to the right edge of the line box.
.ion-text-starttext-align: startThe same as text-left if direction is left-to-right and text-right if direction is right-to-left.
.ion-text-endtext-align: endThe same as text-right if direction is left-to-right and text-left if direction is right-to-left.
.ion-text-centertext-align: centerThe inline contents are centered within the line box.
.ion-text-justifytext-align: justifyThe inline contents are justified. Text should be spaced to line up its left and right edges to the left and right edges of the line box, except for the last line.
.ion-text-wrapwhite-space: normalSequences of whitespace are collapsed. Newline characters in the source are handled as other whitespace. Breaks lines as necessary to fill line boxes.
.ion-text-nowrapwhite-space: nowrapCollapses whitespace as for normal, but suppresses line breaks (text wrapping) within text.

Text Transformation#

<ion-grid>
<ion-row>
<ion-col>
<div class="ion-text-uppercase">
<h3>text-uppercase</h3>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ac vehicula lorem.
</div>
</ion-col>
<ion-col>
<div class="ion-text-lowercase">
<h3>text-lowercase</h3>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ac vehicula lorem.
</div>
</ion-col>
<ion-col>
<div class="ion-text-capitalize">
<h3>text-capitalize</h3>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ac vehicula lorem.
</div>
</ion-col>
</ion-row>
</ion-grid>
ClassStyle RuleDescription
.ion-text-uppercasetext-transform: uppercaseForces all characters to be converted to uppercase.
.ion-text-lowercasetext-transform: lowercaseForces all characters to be converted to lowercase.
.ion-text-capitalizetext-transform: capitalizeForces the first letter of each word to be converted to uppercase.

Responsive Text Classes#

All of the text classes listed above have additional classes to modify the text based on the screen size. Instead of text- in each class, use text-{breakpoint}- to only use the class on specific screen sizes, where {breakpoint} is one of the breakpoint names listed in Ionic Breakpoints.

The table below shows the default behavior, where {modifier} is any of the following: left, right, start, end, center, justify, wrap, nowrap, uppercase, lowercase, or capitalize, as they are described above.

ClassDescription
.ion-text-{modifier}Applies the modifier to the element on all screen sizes.
.ion-text-sm-{modifier}Applies the modifier to the element when min-width: 576px.
.ion-text-md-{modifier}Applies the modifier to the element when min-width: 768px.
.ion-text-lg-{modifier}Applies the modifier to the element when min-width: 992px.
.ion-text-xl-{modifier}Applies the modifier to the element when min-width: 1200px.

Element Placement#

Float Elements#

The float CSS property specifies that an element should be placed along the left or right side of its container, where text and inline elements will wrap around it. This way, the element is taken from the normal flow of the web page, though still remaining a part of the flow, contrary to absolute positioning.

<ion-grid>
<ion-row>
<ion-col class="ion-float-left">
<div>
<h3>float-left</h3>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ac vehicula lorem.
</div>
</ion-col>
<ion-col class="ion-float-right">
<div>
<h3>float-right</h3>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ac vehicula lorem.
</div>
</ion-col>
</ion-row>
</ion-grid>
ClassStyle RuleDescription
.ion-float-leftfloat: leftThe element will float on the left side of its containing block.
.ion-float-rightfloat: rightThe element will float on the right side of its containing block.
.ion-float-startfloat: left / float: rightThe same as float-left if direction is left-to-right and float-right if direction is right-to-left.
.ion-float-endfloat: left / float: rightThe same as float-right if direction is left-to-right and float-left if direction is right-to-left.

Responsive Float Classes#

All of the float classes listed above have additional classes to modify the float based on the screen size. Instead of float- in each class, use float-{breakpoint}- to only use the class on specific screen sizes, where {breakpoint} is one of the breakpoint names listed in Ionic Breakpoints.

The table below shows the default behavior, where {modifier} is any of the following: left, right, start, or end, as they are described above.

ClassDescription
.ion-float-{modifier}Applies the modifier to the element on all screen sizes.
.ion-float-sm-{modifier}Applies the modifier to the element when min-width: 576px.
.ion-float-md-{modifier}Applies the modifier to the element when min-width: 768px.
.ion-float-lg-{modifier}Applies the modifier to the element when min-width: 992px.
.ion-float-xl-{modifier}Applies the modifier to the element when min-width: 1200px.

Element Display#

The display CSS property determines if an element should be visible or not. The element will still be in the DOM, but not rendered, if it is hidden.

<ion-grid>
<ion-row>
<ion-col class="ion-hide">
<div>
<h3>hidden</h3>
You can't see me.
</div>
</ion-col>
<ion-col>
<div>
<h3>not-hidden</h3>
You can see me!
</div>
</ion-col>
</ion-row>
</ion-grid>
ClassStyle RuleDescription
.ion-hidedisplay: noneThe element will be hidden.

Responsive Display Attributes#

There are also additional classes to modify the visibility based on the screen size. Instead of just .ion-hide for all screen sizes, use .ion-hide-{breakpoint}-{dir} to only use the class on specific screen sizes, where {breakpoint} is one of the breakpoint names listed in Ionic Breakpoints, and {dir} is whether the element should be hidden on all screen sizes above (up) or below (down) the specified breakpoint.

ClassDescription
.ion-hide-sm-{dir}Applies the modifier to the element when min-width: 576px (up) or max-width: 576px (down).
.ion-hide-md-{dir}Applies the modifier to the element when min-width: 768px (up) or max-width: 768px (down).
.ion-hide-lg-{dir}Applies the modifier to the element when min-width: 992px (up) or max-width: 992px (down).
.ion-hide-xl-{dir}Applies the modifier to the element when min-width: 1200px (up) or max-width: 1200px (down).

Content Space#

Element Padding#

The padding class sets the padding area of an element. The padding area is the space between the content of the element and its border.

The default amount of padding to be applied is 16px and is set by the --ion-padding variable. See the CSS Variables section for more information on how to change these values.

<ion-grid>
<ion-row>
<ion-col class="ion-padding">
<div>
padding
</div>
</ion-col>
<ion-col class="ion-padding-top">
<div>
padding-top
</div>
</ion-col>
<ion-col class="ion-padding-start">
<div>
padding-start
</div>
</ion-col>
<ion-col class="ion-padding-end">
<div>
padding-end
</div>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="ion-padding-bottom">
<div>
padding-bottom
</div>
</ion-col>
<ion-col class="ion-padding-vertical">
<div>
padding-vertical
</div>
</ion-col>
<ion-col class="ion-padding-horizontal">
<div>
padding-horizontal
</div>
</ion-col>
<ion-col class="ion-no-padding">
<div>
no-padding
</div>
</ion-col>
</ion-row>
</ion-grid>
ClassStyle RuleDescription
.ion-paddingpadding: 16pxApplies padding to all sides.
.ion-padding-toppadding-top: 16pxApplies padding to the top.
.ion-padding-startpadding-start: 16pxApplies padding to the start.
.ion-padding-endpadding-end: 16pxApplies padding to the end.
.ion-padding-bottompadding-bottom: 16pxApplies padding to the bottom.
.ion-padding-verticalpadding: 16px 0Applies padding to the top and bottom.
.ion-padding-horizontalpadding: 0 16pxApplies padding to the left and right.
.ion-no-paddingpadding: 0Applies no padding to all sides.

Element Margin#

The margin area extends the border area with an empty area used to separate the element from its neighbors.

The default amount of margin to be applied is 16px and is set by the --ion-margin variable. See the CSS Variables section for more information on how to change these values.

<ion-grid>
<ion-row>
<ion-col class="ion-margin">
<div>
margin
</div>
</ion-col>
<ion-col class="ion-margin-top">
<div>
margin-top
</div>
</ion-col>
<ion-col class="ion-margin-start">
<div>
margin-start
</div>
</ion-col>
<ion-col class="ion-margin-end">
<div>
margin-end
</div>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="ion-margin-bottom">
<div>
margin-bottom
</div>
</ion-col>
<ion-col class="ion-margin-vertical">
<div>
margin-vertical
</div>
</ion-col>
<ion-col class="ion-margin-horizontal">
<div>
margin-horizontal
</div>
</ion-col>
<ion-col class="ion-no-margin">
<div>
no-margin
</div>
</ion-col>
</ion-row>
</ion-grid>
ClassStyle RuleDescription
.ion-marginmargin: 16pxApplies margin to all sides.
.ion-margin-topmargin-top: 16pxApplies margin to the top.
.ion-margin-startmargin-start: 16pxApplies margin to the left.
.ion-margin-endmargin-end: 16pxApplies margin to the right.
.ion-margin-bottommargin-bottom: 16pxApplies margin to the bottom.
.ion-margin-verticalmargin: 16px 0Applies margin to the top and bottom.
.ion-margin-horizontalmargin: 0 16pxApplies margin to the left and right.
.ion-no-marginmargin: 0Applies no margin to all sides.

Flex Properties#

Flex Container Properties#

<ion-grid>
<ion-row class="ion-justify-content-start">
<ion-col size="3">
<div>
1 of 2
</div>
</ion-col>
<ion-col size="3">
<div>
2 of 2
</div>
</ion-col>
</ion-row>
<ion-row class="ion-justify-content-center">
<ion-col size="3">
<div>
1 of 2
</div>
</ion-col>
<ion-col size="3">
<div>
2 of 2
</div>
</ion-col>
</ion-row>
<ion-row class="ion-justify-content-end">
<ion-col size="3">
<div>
1 of 2
</div>
</ion-col>
<ion-col size="3">
<div>
2 of 2
</div>
</ion-col>
</ion-row>
<ion-row class="ion-justify-content-around">
<ion-col size="3">
<div>
1 of 2
</div>
</ion-col>
<ion-col size="3">
<div>
2 of 2
</div>
</ion-col>
</ion-row>
<ion-row class="ion-justify-content-between">
<ion-col size="3">
<div>
1 of 2
</div>
</ion-col>
<ion-col size="3">
<div>
2 of 2
</div>
</ion-col>
</ion-row>
<ion-row class="ion-justify-content-evenly">
<ion-col size="3">
<div>
1 of 2
</div>
</ion-col>
<ion-col size="3">
<div>
2 of 2
</div>
</ion-col>
</ion-row>
</ion-grid>
<ion-grid>
<ion-row class="ion-align-items-start">
<ion-col>
<div>
1 of 4
</div>
</ion-col>
<ion-col>
<div>
2 of 4
</div>
</ion-col>
<ion-col>
<div>
3 of 4
</div>
</ion-col>
<ion-col>
<div>
4 of 4
#
#
#
</div>
</ion-col>
</ion-row>
<ion-row class="ion-align-items-end">
<ion-col>
<div>
1 of 4
</div>
</ion-col>
<ion-col>
<div>
2 of 4
</div>
</ion-col>
<ion-col>
<div>
3 of 4
</div>
</ion-col>
<ion-col>
<div>
4 of 4
#
#
#
</div>
</ion-col>
</ion-row>
<ion-row class="ion-align-items-center">
<ion-col>
<div>
1 of 4
</div>
</ion-col>
<ion-col>
<div>
2 of 4
</div>
</ion-col>
<ion-col>
<div>
3 of 4
</div>
</ion-col>
<ion-col>
<div>
4 of 4
#
#
#
</div>
</ion-col>
</ion-row>
<ion-row class="ion-align-items-baseline">
<ion-col>
<div>
1 of 4
</div>
</ion-col>
<ion-col>
<div>
2 of 4
</div>
</ion-col>
<ion-col>
<div>
3 of 4
</div>
</ion-col>
<ion-col>
<div>
4 of 4
#
#
#
</div>
</ion-col>
</ion-row>
<ion-row class="ion-align-items-stretch">
<ion-col>
<div>
1 of 4
</div>
</ion-col>
<ion-col>
<div>
2 of 4
</div>
</ion-col>
<ion-col>
<div>
3 of 4
</div>
</ion-col>
<ion-col>
<div>
4 of 4
#
#
#
</div>
</ion-col>
</ion-row>
</ion-grid>
ClassStyle RuleDescription
.ion-justify-content-startjustify-content: flex-startItems are packed toward the start on the main axis.
.ion-justify-content-endjustify-content: flex-endItems are packed toward the end on the main axis.
.ion-justify-content-centerjustify-content: centerItems are centered along the main axis.
.ion-justify-content-aroundjustify-content: space-aroundItems are evenly distributed on the main axis with equal space around them.
.ion-justify-content-betweenjustify-content: space-betweenItems are evenly distributed on the main axis.
.ion-justify-content-evenlyjustify-content: space-evenlyItems are distributed so that the spacing between any two items is equal.
.ion-align-items-startalign-items: flex-startItems are packed toward the start on the cross axis.
.ion-align-items-endalign-items: flex-endItems are packed toward the end on the cross axis.
.ion-align-items-centeralign-items: centerItems are centered along the cross axis.
.ion-align-items-baselinealign-items: baselineItems are aligned so that their baselines align.
.ion-align-items-stretchalign-items: stretchItems are stretched to fill the container.
.ion-nowrapflex-wrap: nowrapItems will all be on one line.
.ion-wrapflex-wrap: wrapItems will wrap onto multiple lines, from top to bottom.
.ion-wrap-reverseflex-wrap: wrap-reverseItems will wrap onto multiple lines, from bottom to top.

Flex Item Properties#

<ion-grid>
<ion-row>
<ion-col class="ion-align-self-start">
<div>
1 of 4
</div>
</ion-col>
<ion-col class="ion-align-self-center">
<div>
2 of 4
</div>
</ion-col>
<ion-col class="ion-align-self-end">
<div>
3 of 4
</div>
</ion-col>
<ion-col>
<div>
4 of 4
#
#
#
</div>
</ion-col>
</ion-row>
</ion-grid>
ClassStyle RuleDescription
.ion-align-self-startalign-self: flex-startItem is packed toward the start on the cross axis.
.ion-align-self-endalign-self: flex-endItem is packed toward the end on the cross axis.
.ion-align-self-centeralign-self: centerItem is centered along the cross axis.
.ion-align-self-baselinealign-self: baselineItem is aligned so that its baseline aligns with other item baselines.
.ion-align-self-stretchalign-self: stretchItem is stretched to fill the container.
.ion-align-self-autoalign-self: autoItem is positioned according to the parent's align-items value.

Border Display#

The border display CSS property determines if the border should be visible or not. The property can be applied to the ion-header and the ion-footer.

<ion-header class="ion-no-border">
<ion-toolbar>
<ion-title>Header - No Border</ion-title>
</ion-toolbar>
</ion-header>
<ion-footer class="ion-no-border">
<ion-toolbar>
<ion-title>Footer - No Border</ion-title>
</ion-toolbar>
</ion-footer>
ClassDescription
.ion-no-borderThe element will have no border.

Ionic Breakpoints#

Ionic uses breakpoints in media queries in order to style an application differently based on the screen size. The following breakpoint names are used in the utility classes listed above, where the class will apply when the width is met.

Breakpoint NameWidth
xs0
sm576px
md768px
lg992px
xl1200px