responsive-utilities.md 9.45 KB
Newer Older
Mark Otto's avatar
Mark Otto committed
1
---
Mark Otto's avatar
Mark Otto committed
2
layout: docs
Mark Otto's avatar
Mark Otto committed
3
title: Responsive utilities
Mark Otto's avatar
Mark Otto committed
4
description: Use responsive display utility classes for showing and hiding content by device, via media query.
5
group: layout
Mark Otto's avatar
Mark Otto committed
6
---
Mark Otto's avatar
Mark Otto committed
7

Mark Otto's avatar
Mark Otto committed
8
For faster mobile-friendly development, use these utility classes for showing and hiding content by device via media query. Also included are utility classes for toggling content when printed.
Mark Otto's avatar
Mark Otto committed
9

Mark Otto's avatar
Mark Otto committed
10
Try to use these on a limited basis and avoid creating entirely different versions of the same site. Instead, use them to complement each device's presentation.
Mark Otto's avatar
Mark Otto committed
11

Mark Otto's avatar
Mark Otto committed
12
##  Available classes
Mark Otto's avatar
Mark Otto committed
13

14
* The `.hidden-*-up` classes hide the element when the viewport is at the given breakpoint or wider. For example, `.hidden-md-up` hides an element on medium, large, and extra-large viewports.
Quy's avatar
Quy committed
15
* The `.hidden-*-down` classes hide the element when the viewport is at the given breakpoint or smaller. For example, `.hidden-md-down` hides an element on extra-small, small, and medium viewports.
16
17
18
* There are no explicit "visible"/"show" responsive utility classes; you make an element visible by simply not hiding it at that breakpoint size.
* You can combine one `.hidden-*-up` class with one `.hidden-*-down` class to show an element only on a given interval of screen sizes. For example, `.hidden-sm-down.hidden-xl-up` shows the element only on medium and large viewports. Using multiple `.hidden-*-up` classes or multiple `.hidden-*-down` classes is redundant and pointless.
* These classes don't attempt to accommodate less common cases where an element's visibility can't be expressed as a single contiguous range of viewport breakpoint sizes; you will instead need to use custom CSS in such cases.
Mark Otto's avatar
Mark Otto committed
19

Mark Otto's avatar
Mark Otto committed
20
21
22
23
24
25
26
<div class="table-responsive">
  <table class="table table-bordered table-striped responsive-utilities">
    <thead>
      <tr>
        <th></th>
        <th>
          Extra small devices
Bass Jobsen's avatar
Bass Jobsen committed
27
          <small>Portrait phones (&lt;544px)</small>
Mark Otto's avatar
Mark Otto committed
28
29
30
        </th>
        <th>
          Small devices
Bass Jobsen's avatar
Bass Jobsen committed
31
          <small>Landscape phones (&ge;544px - &lt;768px)</small>
Mark Otto's avatar
Mark Otto committed
32
33
34
        </th>
        <th>
          Medium devices
Bass Jobsen's avatar
Bass Jobsen committed
35
          <small>Tablets (&ge;768px - &lt;992px)</small>
Mark Otto's avatar
Mark Otto committed
36
37
38
        </th>
        <th>
          Large devices
Bass Jobsen's avatar
Bass Jobsen committed
39
          <small>Desktops (&ge;992px - &lt;1200px)</small>
40
41
42
        </th>
        <th>
          Extra large devices
Bass Jobsen's avatar
Bass Jobsen committed
43
          <small>Desktops (&ge;1200px)</small>
Mark Otto's avatar
Mark Otto committed
44
45
46
47
48
        </th>
      </tr>
    </thead>
    <tbody>
      <tr>
49
        <th scope="row"><code>.hidden-xs-down</code></th>
Mark Otto's avatar
Mark Otto committed
50
        <td class="is-hidden">Hidden</td>
51
52
53
54
55
56
57
        <td class="is-visible">Visible</td>
        <td class="is-visible">Visible</td>
        <td class="is-visible">Visible</td>
        <td class="is-visible">Visible</td>
      </tr>
      <tr>
        <th scope="row"><code>.hidden-sm-down</code></th>
Mark Otto's avatar
Mark Otto committed
58
59
        <td class="is-hidden">Hidden</td>
        <td class="is-hidden">Hidden</td>
60
61
62
        <td class="is-visible">Visible</td>
        <td class="is-visible">Visible</td>
        <td class="is-visible">Visible</td>
Mark Otto's avatar
Mark Otto committed
63
64
      </tr>
      <tr>
65
        <th scope="row"><code>.hidden-md-down</code></th>
Mark Otto's avatar
Mark Otto committed
66
67
68
        <td class="is-hidden">Hidden</td>
        <td class="is-hidden">Hidden</td>
        <td class="is-hidden">Hidden</td>
69
70
        <td class="is-visible">Visible</td>
        <td class="is-visible">Visible</td>
Mark Otto's avatar
Mark Otto committed
71
72
      </tr>
      <tr>
73
74
        <th scope="row"><code>.hidden-lg-down</code></th>
        <td class="is-hidden">Hidden</td>
Mark Otto's avatar
Mark Otto committed
75
76
77
        <td class="is-hidden">Hidden</td>
        <td class="is-hidden">Hidden</td>
        <td class="is-hidden">Hidden</td>
78
        <td class="is-visible">Visible</td>
Mark Otto's avatar
Mark Otto committed
79
80
      </tr>
      <tr>
81
82
83
        <th scope="row"><code>.hidden-xl-down</code></th>
        <td class="is-hidden">Hidden</td>
        <td class="is-hidden">Hidden</td>
Mark Otto's avatar
Mark Otto committed
84
85
86
87
88
        <td class="is-hidden">Hidden</td>
        <td class="is-hidden">Hidden</td>
        <td class="is-hidden">Hidden</td>
      </tr>
      <tr>
89
90
91
92
93
        <th scope="row"><code>.hidden-xs-up</code></th>
        <td class="is-hidden">Hidden</td>
        <td class="is-hidden">Hidden</td>
        <td class="is-hidden">Hidden</td>
        <td class="is-hidden">Hidden</td>
Mark Otto's avatar
Mark Otto committed
94
95
96
        <td class="is-hidden">Hidden</td>
      </tr>
      <tr>
97
        <th scope="row"><code>.hidden-sm-up</code></th>
Mark Otto's avatar
Mark Otto committed
98
99
        <td class="is-visible">Visible</td>
        <td class="is-hidden">Hidden</td>
100
101
102
        <td class="is-hidden">Hidden</td>
        <td class="is-hidden">Hidden</td>
        <td class="is-hidden">Hidden</td>
Mark Otto's avatar
Mark Otto committed
103
104
      </tr>
      <tr>
105
        <th scope="row"><code>.hidden-md-up</code></th>
Mark Otto's avatar
Mark Otto committed
106
107
108
        <td class="is-visible">Visible</td>
        <td class="is-visible">Visible</td>
        <td class="is-hidden">Hidden</td>
109
110
        <td class="is-hidden">Hidden</td>
        <td class="is-hidden">Hidden</td>
Mark Otto's avatar
Mark Otto committed
111
112
      </tr>
      <tr>
113
        <th scope="row"><code>.hidden-lg-up</code></th>
Mark Otto's avatar
Mark Otto committed
114
115
116
117
        <td class="is-visible">Visible</td>
        <td class="is-visible">Visible</td>
        <td class="is-visible">Visible</td>
        <td class="is-hidden">Hidden</td>
118
        <td class="is-hidden">Hidden</td>
Mark Otto's avatar
Mark Otto committed
119
120
      </tr>
      <tr>
121
122
123
124
125
126
        <th scope="row"><code>.hidden-xl-up</code></th>
        <td class="is-visible">Visible</td>
        <td class="is-visible">Visible</td>
        <td class="is-visible">Visible</td>
        <td class="is-visible">Visible</td>
        <td class="is-hidden">Hidden</td>
Mark Otto's avatar
Mark Otto committed
127
128
129
130
131
132
133
134
135
136
137
      </tr>
    </tbody>
  </table>
</div>

<h2 id="responsive-utilities-print">Print classes</h2>
<p>Similar to the regular responsive classes, use these for toggling content for print.</p>
<div class="table-responsive">
  <table class="table table-bordered table-striped responsive-utilities">
    <thead>
      <tr>
138
        <th>Class</th>
Mark Otto's avatar
Mark Otto committed
139
140
141
142
143
144
        <th>Browser</th>
        <th>Print</th>
      </tr>
    </thead>
    <tbody>
      <tr>
145
        <th><code>.visible-print-block</code></th>
Mark Otto's avatar
Mark Otto committed
146
        <td class="is-hidden">Hidden</td>
147
148
149
150
151
152
153
154
155
156
157
        <td class="is-visible">Visible<br>(as <code>display: block</code>)</td>
      </tr>
      <tr>
        <th><code>.visible-print-inline</code></th>
        <td class="is-hidden">Hidden</td>
        <td class="is-visible">Visible<br>(as <code>display: inline</code>)</td>
      </tr>
      <tr>
        <th><code>.visible-print-inline-block</code></th>
        <td class="is-hidden">Hidden</td>
        <td class="is-visible">Visible<br>(as <code>display: inline-block</code>)</td>
Mark Otto's avatar
Mark Otto committed
158
159
160
161
162
163
164
165
166
167
168
      </tr>
      <tr>
        <th><code>.hidden-print</code></th>
        <td class="is-visible">Visible</td>
        <td class="is-hidden">Hidden</td>
      </tr>
    </tbody>
  </table>
</div>

## Test cases
Mark Otto's avatar
Mark Otto committed
169

Mark Otto's avatar
Mark Otto committed
170
Resize your browser or load on different devices to test the responsive utility classes.
Mark Otto's avatar
Mark Otto committed
171

Mark Otto's avatar
Mark Otto committed
172
173
174
175
Green checkmarks indicate the element **is visible** in your current viewport.

<div class="row responsive-utilities-test visible-on">
  <div class="col-xs-6 col-sm-3">
176
177
    <span class="hidden-sm-up visible">&#10004; Visible on extra small</span>
    <span class="hidden-xs-down not-visible">Extra small</span>
Mark Otto's avatar
Mark Otto committed
178
179
  </div>
  <div class="col-xs-6 col-sm-3">
180
181
    <span class="hidden-md-up visible">&#10004; Visible on small or narrower</span>
    <span class="hidden-sm-down not-visible">Small or narrower</span>
Mark Otto's avatar
Mark Otto committed
182
183
  </div>
  <div class="col-xs-6 col-sm-3">
184
185
    <span class="hidden-lg-up visible">&#10004; Visible on medium or narrower</span>
    <span class="hidden-md-down not-visible">Medium or narrower</span>
Mark Otto's avatar
Mark Otto committed
186
187
  </div>
  <div class="col-xs-6 col-sm-3">
188
189
    <span class="hidden-xl-up visible">&#10004; Visible on large or narrower</span>
    <span class="hidden-lg-down not-visible">Large or narrower</span>
Mark Otto's avatar
Mark Otto committed
190
191
  </div>
</div>
Mark Otto's avatar
Mark Otto committed
192
193
194

<hr>

Mark Otto's avatar
Mark Otto committed
195
196
<div class="row responsive-utilities-test visible-on">
  <div class="col-xs-6 col-sm-3">
197
198
    <span class="hidden-xs-down visible">&#10004; Visible on small or wider</span>
    <span class="hidden-sm-up not-visible">Small or wider</span>
Mark Otto's avatar
Mark Otto committed
199
200
  </div>
  <div class="col-xs-6 col-sm-3">
201
202
    <span class="hidden-sm-down visible">&#10004; Visible on medium or wider</span>
    <span class="hidden-md-up not-visible">Medium or wider</span>
Mark Otto's avatar
Mark Otto committed
203
204
  </div>
  <div class="col-xs-6 col-sm-3">
205
206
    <span class="hidden-md-down visible">&#10004; Visible on large or wider</span>
    <span class="hidden-lg-up not-visible">Large or wider</span>
Mark Otto's avatar
Mark Otto committed
207
208
  </div>
  <div class="col-xs-6 col-sm-3">
209
210
    <span class="hidden-lg-down visible">&#10004; Visible on extra large</span>
    <span class="hidden-xl-up not-visible">Extra large</span>
Mark Otto's avatar
Mark Otto committed
211
212
  </div>
</div>
Mark Otto's avatar
Mark Otto committed
213
214
215

<hr>

216
<div class="row responsive-utilities-test visible-on">
Mark Otto's avatar
Mark Otto committed
217
  <div class="col-xs-6 col-sm-4">
218
219
    <span class="hidden-sm-up visible">&#10004; Your viewport is exactly extra small</span>
    <span class="hidden-xs-down not-visible">Your viewport is NOT exactly extra small</span>
Mark Otto's avatar
Mark Otto committed
220
  </div>
Mark Otto's avatar
Mark Otto committed
221
  <div class="col-xs-6 col-sm-4">
222
223
    <span class="hidden-xs-down hidden-md-up visible">&#10004; Your viewport is exactly small</span>
    <span class="hidden-sm-only not-visible">Your viewport is NOT exactly small</span>
Mark Otto's avatar
Mark Otto committed
224
  </div>
Mark Otto's avatar
Mark Otto committed
225
  <div class="col-xs-6 col-sm-4">
226
227
    <span class="hidden-sm-down hidden-lg-up visible">&#10004; Your viewport is exactly medium</span>
    <span class="hidden-md-only not-visible">Your viewport is NOT exactly medium</span>
Mark Otto's avatar
Mark Otto committed
228
  </div>
Mark Otto's avatar
Mark Otto committed
229
230
231
232
  </div>

<div class="row responsive-utilities-test visible-on">
  <div class="col-xs-6 col-sm-4">
233
234
    <span class="hidden-md-down hidden-xl-up visible">&#10004; Your viewport is exactly large</span>
    <span class="hidden-lg-only not-visible">Your viewport is NOT exactly large</span>
Mark Otto's avatar
Mark Otto committed
235
  </div>
Mark Otto's avatar
Mark Otto committed
236
  <div class="col-xs-6 col-sm-4">
237
238
    <span class="hidden-lg-down visible">&#10004; Your viewport is exactly extra large</span>
    <span class="hidden-xl-only not-visible">Your viewport is NOT exactly extra large</span>
Mark Otto's avatar
Mark Otto committed
239
240
  </div>
</div>