media-object.md 7.49 KB
Newer Older
Mark Otto's avatar
Mark Otto committed
1
2
---
layout: page
Mark Otto's avatar
Mark Otto committed
3
title: Media object
4
group: layout
Mark Otto's avatar
Mark Otto committed
5
6
---

Mark Otto's avatar
Mark Otto committed
7
8
9
10
11
The [media object](http://www.stubbornella.org/content/2010/06/25/the-media-object-saves-hundreds-of-lines-of-code/) is an abstract element used as the basis for building more complex and repetitive components (like blog comments, Tweets, etc). Included is support for left and right aligned content, content alignment options, nesting, and more.

{% callout info %}
**Heads up!** When [flexbox mode]({{ site.baseurl }}/getting-started/flexbox/) is enabled, the media object will use `flex` styles wherever possible.
{% endcallout %}
Mark Otto's avatar
Mark Otto committed
12

Mark Otto's avatar
Mark Otto committed
13
14
15
16
17
18
## Contents

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

## Default media
Mark Otto's avatar
Mark Otto committed
19

Mark Otto's avatar
Mark Otto committed
20
21
22
23
The default media allow to float a media object (images, video, audio) to the left or right of a content block.

{% example html %}
<div class="media">
Mark Otto's avatar
Mark Otto committed
24
  <a class="media-left" href="#">
Mark Otto's avatar
Mark Otto committed
25
26
27
28
29
30
31
32
33
    <img class="media-object" data-src="holder.js/64x64" alt="Generic placeholder image">
  </a>
  <div class="media-body">
    <h4 class="media-heading">Media heading</h4>
    Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
  </div>
</div>
{% endexample %}

Mark Otto's avatar
Mark Otto committed
34
## Nesting
Mark Otto's avatar
Mark Otto committed
35
36
37
38
39

Media components can also be nested.

{% example html %}
<div class="media">
Mark Otto's avatar
Mark Otto committed
40
41
42
43
44
  <div class="media-left">
    <a href="#">
      <img class="media-object" data-src="holder.js/64x64" alt="Generic placeholder image">
    </a>
  </div>
Mark Otto's avatar
Mark Otto committed
45
46
47
  <div class="media-body">
    <h4 class="media-heading">Media heading</h4>
    Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
Mark Otto's avatar
Mark Otto committed
48
    <div class="media">
Mark Otto's avatar
Mark Otto committed
49
      <a class="media-left" href="#">
Mark Otto's avatar
Mark Otto committed
50
51
52
        <img class="media-object" data-src="holder.js/64x64" alt="Generic placeholder image">
      </a>
      <div class="media-body">
Mark Otto's avatar
Mark Otto committed
53
        <h4 class="media-heading">Nested media heading</h4>
Mark Otto's avatar
Mark Otto committed
54
55
56
57
58
        Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
      </div>
    </div>
  </div>
</div>
Mark Otto's avatar
Mark Otto committed
59
60
{% endexample %}

Mark Otto's avatar
Mark Otto committed
61
## Alignment
Mark Otto's avatar
Mark Otto committed
62
63
64
65
66

The images or other media can be aligned top, middle, or bottom. The default is top aligned.

{% example html %}
<div class="media">
Mark Otto's avatar
Mark Otto committed
67
68
69
70
71
  <div class="media-left">
    <a href="#">
      <img class="media-object" data-src="holder.js/64x64" alt="Generic placeholder image">
    </a>
  </div>
Mark Otto's avatar
Mark Otto committed
72
73
74
75
76
77
78
79
80
81
  <div class="media-body">
    <h4 class="media-heading">Top aligned media</h4>
    <p>Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.</p>
    <p>Donec sed odio dui. Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</p>
  </div>
</div>
{% endexample %}

{% example html %}
<div class="media">
Mark Otto's avatar
Mark Otto committed
82
83
84
85
86
  <div class="media-left media-middle">
    <a href="#">
      <img class="media-object" data-src="holder.js/64x64" alt="Generic placeholder image">
    </a>
  </div>
Mark Otto's avatar
Mark Otto committed
87
88
89
90
91
92
93
94
95
96
  <div class="media-body">
    <h4 class="media-heading">Middle aligned media</h4>
    <p>Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.</p>
    <p>Donec sed odio dui. Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</p>
  </div>
</div>
{% endexample %}

{% example html %}
<div class="media">
Mark Otto's avatar
Mark Otto committed
97
98
99
100
101
  <div class="media-left media-bottom">
    <a href="#">
      <img class="media-object" data-src="holder.js/64x64" alt="Generic placeholder image">
    </a>
  </div>
Mark Otto's avatar
Mark Otto committed
102
103
104
105
106
107
108
109
  <div class="media-body">
    <h4 class="media-heading">Bottom aligned media</h4>
    <p>Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.</p>
    <p>Donec sed odio dui. Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</p>
  </div>
</div>
{% endexample %}

Mark Otto's avatar
Mark Otto committed
110
## Media list
Mark Otto's avatar
Mark Otto committed
111

Mark Otto's avatar
Mark Otto committed
112
113
114
115
116
With a bit of extra markup, you can use media inside list (useful for comment threads or articles lists).

{% example html %}
<ul class="media-list">
  <li class="media">
Mark Otto's avatar
Mark Otto committed
117
118
119
120
121
    <div class="media-left">
      <a href="#">
        <img class="media-object" data-src="holder.js/64x64" alt="Generic placeholder image">
      </a>
    </div>
Mark Otto's avatar
Mark Otto committed
122
123
124
125
126
    <div class="media-body">
      <h4 class="media-heading">Media heading</h4>
      <p>Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis.</p>
      <!-- Nested media object -->
      <div class="media">
Mark Otto's avatar
Mark Otto committed
127
        <a class="media-left" href="#">
Mark Otto's avatar
Mark Otto committed
128
129
130
          <img class="media-object" data-src="holder.js/64x64" alt="Generic placeholder image">
        </a>
        <div class="media-body">
Mark Otto's avatar
Mark Otto committed
131
132
          <h4 class="media-heading">Nested media heading</h4>
          Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis.
Mark Otto's avatar
Mark Otto committed
133
134
          <!-- Nested media object -->
          <div class="media">
Mark Otto's avatar
Mark Otto committed
135
136
137
138
139
            <div class="media-left">
              <a href="#">
                <img class="media-object" data-src="holder.js/64x64" alt="Generic placeholder image">
              </a>
            </div>
Mark Otto's avatar
Mark Otto committed
140
141
142
143
144
145
            <div class="media-body">
              <h4 class="media-heading">Nested media heading</h4>
              Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis.
            </div>
          </div>
        </div>
Mark Otto's avatar
Mark Otto committed
146
147
148
      </div>
      <!-- Nested media object -->
      <div class="media">
Mark Otto's avatar
Mark Otto committed
149
150
151
152
153
        <div class="media-left">
          <a href="#">
            <img class="media-object" data-src="holder.js/64x64" alt="Generic placeholder image">
          </a>
        </div>
Mark Otto's avatar
Mark Otto committed
154
        <div class="media-body">
Mark Otto's avatar
Mark Otto committed
155
          <h4 class="media-heading">Nested media heading</h4>
Mark Otto's avatar
Mark Otto committed
156
157
          Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis.
        </div>
Mark Otto's avatar
Mark Otto committed
158
159
160
      </div>
    </div>
  </li>
Mark Otto's avatar
Mark Otto committed
161
  <li class="media">
Mark Otto's avatar
Mark Otto committed
162
163
164
165
    <div class="media-body">
      <h4 class="media-heading">Media heading</h4>
      Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis.
    </div>
Mark Otto's avatar
Mark Otto committed
166
167
168
169
170
    <div class="media-right">
      <a href="#">
        <img class="media-object" data-src="holder.js/64x64" alt="Generic placeholder image">
      </a>
    </div>
Mark Otto's avatar
Mark Otto committed
171
172
  </li>
</ul>
Mark Otto's avatar
Mark Otto committed
173
{% endexample %}