utilities.md 10.9 KB
Newer Older
Mark Otto's avatar
Mark Otto committed
1
---
Mark Otto's avatar
Mark Otto committed
2
layout: docs
3
title: Utility classes
4
group: components
Mark Otto's avatar
Mark Otto committed
5
---
Mark Otto's avatar
Mark Otto committed
6

7
Bootstrap includes dozens of utilities—classes with a single purpose. They're designed to reduce the frequency of highly repetitive declarations in your CSS while allowing for quick and easy development.
8

Mark Otto's avatar
Mark Otto committed
9
10
11
12
13
## Contents

* Will be replaced with the ToC, excluding the "Contents" header
{:toc}

14
15
## Spacing

16
Assign `margin` or `padding` to an element or a subset of its sides with shorthand classes. Includes support for individual properties, all properties, and vertical and horizontal properties. All classes are multiples on the global default value, `1rem`.
17

18
19
20
The classes are named using the format: `{property}-{sides}-{size}`

Where *property* is one of:
21

22
23
24
25
* `m` - for classes that set `margin`
* `p` - for classes that set `padding`

Where *sides* is one of:
26

27
28
29
30
31
32
33
34
35
* `t` - for classes that set `margin-top` or `padding-top`
* `b` - for classes that set `margin-bottom` or `padding-bottom`
* `l` - for classes that set `margin-left` or `padding-left`
* `r` - for classes that set `margin-right` or `padding-right`
* `x` - for classes that set both `*-left` and `*-right`
* `y` - for classes that set both `*-top` and `*-bottom`
* `a` - for classes that set a `margin` or `padding` on all 4 sides of the element

Where *size* is one of:
36

37
38
39
40
41
42
* `0` - for classes that eliminate the `margin` or `padding` by setting it to `0`
* `1` - (by default) for classes that set the `margin` or `padding` to `$spacer-x` or `$spacer-y`
* `2` - (by default) for classes that set the `margin` or `padding` to `$spacer-x * 1.5` or `$spacer-y * 1.5`
* `3` - (by default) for classes that set the `margin` or `padding` to `$spacer-x * 3` or `$spacer-y * 3`

Here are some representative examples of these classes:
43

Mark Otto's avatar
Mark Otto committed
44
{% highlight scss %}
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
.m-t-0 {
  margin-top: 0 !important;
}

.m-l-1 {
  margin-left: $spacer-x !important;
}

.p-x-2 {
  padding-left: ($spacer-x * 1.5) !important;
  padding-right: ($spacer-x * 1.5) !important;
}

.p-a-3 {
  padding: ($spacer-y * 3) ($spacer-x * 3) !important;
}
Mark Otto's avatar
Mark Otto committed
61
{% endhighlight %}
62
63

Additionally, Bootstrap also includes an `.m-x-auto` class which sets the horizontal margins to `auto`.
64
65


66
## Text alignment
67
68
69
70
71
72
73
74

Easily realign text to components with text alignment classes.

{% example html %}
<p class="text-justify">Justified text.</p>
<p class="text-nowrap">No wrap text.</p>
{% endexample %}

75
76
77
78
79
80
81
82
83
84
85
86
87
For left, right, and center alignment, responsive classes are available that use the same viewport width breakpoints as the grid system.

{% example html %}
<p class="text-xs-left">Left aligned text on all viewport sizes.</p>
<p class="text-xs-center">Center aligned text on all viewport sizes.</p>
<p class="text-xs-right">Right aligned text on all viewport sizes.</p>

<p class="text-sm-left">Left aligned text on viewports sized SM (small) or wider.</p>
<p class="text-md-left">Left aligned text on viewports sized MD (medium) or wider.</p>
<p class="text-lg-left">Left aligned text on viewports sized LG (large) or wider.</p>
<p class="text-xl-left">Left aligned text on viewports sized XL (extra-large) or wider.</p>
{% endexample %}

88
## Text transform
89
90
91
92
93
94

Transform text in components with text capitalization classes.

{% example html %}
<p class="text-lowercase">Lowercased text.</p>
<p class="text-uppercase">Uppercased text.</p>
95
<p class="text-capitalize">CapiTaliZed text.</p>
96
97
{% endexample %}

98
## Font weight and italics
99

100
Quickly change the weight (boldness) of text or italicize text.
101
102

{% example html %}
103
104
<p class="font-weight-bold">Bold text.</p>
<p class="font-weight-normal">Normal weight text.</p>
105
<p class="font-italic">Italic text.</p>
106
107
{% endexample %}

108
## Contextual colors and backgrounds
109

Mark Otto's avatar
Mark Otto committed
110
111
112
113
114
115
116
117
118
119
120
Convey meaning through color with a handful of emphasis utility classes. These may also be applied to links and will darken on hover just like our default link styles.

{% example html %}
<p class="text-muted">Fusce dapibus, tellus ac cursus commodo, tortor mauris nibh.</p>
<p class="text-primary">Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
<p class="text-success">Duis mollis, est non commodo luctus, nisi erat porttitor ligula.</p>
<p class="text-info">Maecenas sed diam eget risus varius blandit sit amet non magna.</p>
<p class="text-warning">Etiam porta sem malesuada magna mollis euismod.</p>
<p class="text-danger">Donec ullamcorper nulla non metus auctor fringilla.</p>
{% endexample %}

121
122
123
124
125
126
127
128
129
130
131
Contextual text classes also work well on anchors with the provided hover and focus states.

{% example html %}
<a href="#" class="text-muted">Muted link</a>
<a href="#" class="text-primary">Primary link</a>
<a href="#" class="text-success">Success link</a>
<a href="#" class="text-info">Info link</a>
<a href="#" class="text-warning">Warning link</a>
<a href="#" class="text-danger">Danger link</a>
{% endexample %}

Mark Otto's avatar
Mark Otto committed
132
133
134
135
136
137
138
139
Similar to the contextual text color classes, easily set the background of an element to any contextual class. Anchor components will darken on hover, just like the text classes.

{% example html %}
<div class="bg-primary">Nullam id dolor id nibh ultricies vehicula ut id elit.</div>
<div class="bg-success">Duis mollis, est non commodo luctus, nisi erat porttitor ligula.</div>
<div class="bg-info">Maecenas sed diam eget risus varius blandit sit amet non magna.</div>
<div class="bg-warning">Etiam porta sem malesuada magna mollis euismod.</div>
<div class="bg-danger">Donec ullamcorper nulla non metus auctor fringilla.</div>
petetnt's avatar
petetnt committed
140
<div class="bg-inverse">Cras mattis consectetur purus sit amet fermentum.</div>
Mark Otto's avatar
Mark Otto committed
141
142
{% endexample %}

143
144
145
{% callout info %}
#### Dealing with specificity

146
Sometimes contextual classes cannot be applied due to the specificity of another selector. In some cases, a sufficient workaround is to wrap your element's content in a `<div>` with the class.
147
148
149
150
{% endcallout %}

{% callout warning %}
#### Conveying meaning to assistive technologies
Mark Otto's avatar
Mark Otto committed
151

152
Ensure that any meaning conveyed through color is also conveyed in a format that is not purely presentational.
153
{% endcallout %}
Mark Otto's avatar
Mark Otto committed
154

155
## Close icon
Mark Otto's avatar
Mark Otto committed
156

157
Use a generic close icon for dismissing content like modals and alerts. **Be sure to include text for screen readers**, as we've done with `aria-label`.
Mark Otto's avatar
Mark Otto committed
158
159

{% example html %}
Mark Otto's avatar
Mark Otto committed
160
<button type="button" class="close" aria-label="Close">
Mark Otto's avatar
Mark Otto committed
161
162
163
164
  <span aria-hidden="true">&times;</span>
</button>
{% endexample %}

165
## Responsive floats
Mark Otto's avatar
Mark Otto committed
166

167
168
169
These utility classes float an element to the left or right, or disable floating, based on the current viewport size using the [CSS `float` property](https://developer.mozilla.org/en-US/docs/Web/CSS/float). `!important` is included to avoid specificity issues. These use the same viewport width breakpoints as the grid system.

Two similar non-responsive mixins (`pull-left` and `pull-right`) are also available.
Mark Otto's avatar
Mark Otto committed
170
171

{% example html %}
172
173
174
175
176
177
178
179
<div class="pull-xs-left">Float left on all viewport sizes</div><br>
<div class="pull-xs-right">Float right on all viewport sizes</div><br>
<div class="pull-xs-none">Don't float on all viewport sizes</div><br>

<div class="pull-sm-left">Float left on viewports sized SM (small) or wider</div><br>
<div class="pull-md-left">Float left on viewports sized MD (medium) or wider</div><br>
<div class="pull-lg-left">Float left on viewports sized LG (large) or wider</div><br>
<div class="pull-xl-left">Float left on viewports sized XL (extra-large) or wider</div><br>
Mark Otto's avatar
Mark Otto committed
180
181
{% endexample %}

Mark Otto's avatar
Mark Otto committed
182
{% highlight scss %}
183
// Related simple non-responsive mixins
Mark Otto's avatar
Mark Otto committed
184
.element {
Mark Otto's avatar
Mark Otto committed
185
  @include pull-left;
Mark Otto's avatar
Mark Otto committed
186
187
}
.another-element {
Mark Otto's avatar
Mark Otto committed
188
  @include pull-right;
Mark Otto's avatar
Mark Otto committed
189
190
191
}
{% endhighlight %}

192
## Center content
Mark Otto's avatar
Mark Otto committed
193
194
195
196

Set an element to `display: block;` and center via `margin`. Available as a mixin and class.

{% example html %}
Mark Otto's avatar
Mark Otto committed
197
<div class="center-block">Centered block</div>
Mark Otto's avatar
Mark Otto committed
198
199
{% endexample %}

Mark Otto's avatar
Mark Otto committed
200
{% highlight scss %}
Mark Otto's avatar
Mark Otto committed
201
// Class
Mark Otto's avatar
Mark Otto committed
202
203
204
205
206
207
.center-block {
  display: block;
  margin-left: auto;
  margin-right: auto;
}

Mark Otto's avatar
Mark Otto committed
208
// Usage as a mixin
Mark Otto's avatar
Mark Otto committed
209
.element {
210
  @include center-block;
Mark Otto's avatar
Mark Otto committed
211
212
213
}
{% endhighlight %}

Mark Otto's avatar
Mark Otto committed
214
215
Easily clear `float`s by adding `.clearfix` **to the parent element**. Utilizes [the micro clearfix](http://nicolasgallagher.com/micro-clearfix-hack/) as popularized by Nicolas Gallagher. Can also be used as a mixin.

Mark Otto's avatar
Mark Otto committed
216
217
218
{% highlight html %}
<div class="clearfix">...</div>
{% endhighlight %}
Mark Otto's avatar
Mark Otto committed
219

Mark Otto's avatar
Mark Otto committed
220
221
222
223
224
225
226
227
228
229
230
231
232
{% highlight scss %}
// Mixin itself
.clearfix() {
  &:before,
  &:after {
    content: " ";
    display: table;
  }
  &:after {
    clear: both;
  }
}

Mark Otto's avatar
Mark Otto committed
233
// Usage as a mixin
Mark Otto's avatar
Mark Otto committed
234
.element {
235
  @include clearfix;
Mark Otto's avatar
Mark Otto committed
236
237
238
}
{% endhighlight %}

239
## Invisible content
Mark Otto's avatar
Mark Otto committed
240

241
The `.invisible` class can be used to toggle only the visibility of an element, meaning its `display` is not modified and the element can still affect the flow of the document.
242
243

{% highlight html %}
244
<div class="invisible">...</div>
Mark Otto's avatar
Mark Otto committed
245
246
{% endhighlight %}

247
{% highlight scss %}
Mark Otto's avatar
Mark Otto committed
248
// Class
249
250
251
252
.invisible {
  visibility: hidden;
}

Mark Otto's avatar
Mark Otto committed
253
// Usage as a mixin
254
255
256
.element {
  .invisible();
}
Mark Otto's avatar
Mark Otto committed
257
{% endhighlight %}
258

259
## Screen readers and keyboard users
Mark Otto's avatar
Mark Otto committed
260

Heinrich Fenkart's avatar
Heinrich Fenkart committed
261
262
263
264
265
Hide an element to all devices **except screen readers** with `.sr-only`. Combine `.sr-only` with `.sr-only-focusable` to show the element again when it's focused (e.g. by a keyboard-only user). Can also be used as mixins.

{% comment %}
Necessary for following [accessibility best practices](../getting-started/#accessibility).
{% endcomment %}
Mark Otto's avatar
Mark Otto committed
266

Mark Otto's avatar
Mark Otto committed
267
268
269
{% highlight html %}
<a class="sr-only sr-only-focusable" href="#content">Skip to main content</a>
{% endhighlight %}
Mark Otto's avatar
Mark Otto committed
270

Mark Otto's avatar
Mark Otto committed
271
{% highlight scss %}
Mark Otto's avatar
Mark Otto committed
272
// Usage as a mixin
Mark Otto's avatar
Mark Otto committed
273
.skip-navigation {
274
275
  @include sr-only;
  @include sr-only-focusable;
Mark Otto's avatar
Mark Otto committed
276
277
278
}
{% endhighlight %}

279
## Image replacement
Mark Otto's avatar
Mark Otto committed
280
281
282

Utilize the `.text-hide` class or mixin to help replace an element's text content with a background image.

Mark Otto's avatar
Mark Otto committed
283
{% highlight html %}
Mark Otto's avatar
Mark Otto committed
284
<h1 class="text-hide">Custom heading</h1>
Mark Otto's avatar
Mark Otto committed
285
{% endhighlight %}
Mark Otto's avatar
Mark Otto committed
286
287

{% highlight scss %}
Mark Otto's avatar
Mark Otto committed
288
// Usage as a mixin
Mark Otto's avatar
Mark Otto committed
289
.heading {
290
  @include text-hide;
Mark Otto's avatar
Mark Otto committed
291
292
}
{% endhighlight %}
293

294
## Responsive embeds
295
296
297
298
299
300
301
302
303
304
305
306
307

Allow browsers to determine video or slideshow dimensions based on the width of their containing block by creating an intrinsic ratio that will properly scale on any device.

Rules are directly applied to `<iframe>`, `<embed>`, `<video>`, and `<object>` elements; optionally use an explicit descendant class `.embed-responsive-item` when you want to match the styling for other attributes.

**Pro-Tip!** You don't need to include `frameborder="0"` in your `<iframe>`s as we override that for you.

{% example html %}
<div class="embed-responsive embed-responsive-16by9">
  <iframe class="embed-responsive-item" src="//www.youtube.com/embed/zpOULjyy-n8?rel=0" allowfullscreen></iframe>
</div>
{% endexample %}

308
Aspect ratios can be customized with modifier classes.
309
310

{% highlight html %}
311
312
313
314
315
<!-- 21:9 aspect ratio -->
<div class="embed-responsive embed-responsive-21by9">
  <iframe class="embed-responsive-item" src="..."></iframe>
</div>

316
317
318
319
320
321
322
323
324
<!-- 16:9 aspect ratio -->
<div class="embed-responsive embed-responsive-16by9">
  <iframe class="embed-responsive-item" src="..."></iframe>
</div>

<!-- 4:3 aspect ratio -->
<div class="embed-responsive embed-responsive-4by3">
  <iframe class="embed-responsive-item" src="..."></iframe>
</div>
325
326
327
328
329

<!-- 1:1 aspect ratio -->
<div class="embed-responsive embed-responsive-1by1">
  <iframe class="embed-responsive-item" src="..."></iframe>
</div>
330
{% endhighlight %}