]> git.ipfire.org Git - ipfire.org.git/blob - src/scss/bootstrap-4.0.0-alpha.6/docs/layout/media-object.md
Introduce autotools
[ipfire.org.git] / src / scss / bootstrap-4.0.0-alpha.6 / docs / layout / media-object.md
1 ---
2 layout: docs
3 title: Media object
4 description: Documentation and examples for Bootstrap's media object to construct highly repetitive components like blog comments, tweets, and the like.
5 group: layout
6 ---
7
8 The [media object](http://www.stubbornella.org/content/2010/06/25/the-media-object-saves-hundreds-of-lines-of-code/) helps build complex and repetitive components where some media is positioned alongside content that doesn't wrap around said media. Plus, it does this with only two required classes thanks to flexbox.
9
10 ## Contents
11
12 * Will be replaced with the ToC, excluding the "Contents" header
13 {:toc}
14
15 ## Example
16
17 Below is an example of a single media object. Only two classes are required—the wrapping `.media` and the `.media-body` around your content. Optional padding and margin can be controlled through [spacing utilities]({{ site.baseurl }}/utilities/spacing/).
18
19 {% example html %}
20 <div class="media">
21 <img class="d-flex mr-3" data-src="holder.js/64x64" alt="Generic placeholder image">
22 <div class="media-body">
23 <h5 class="mt-0">Media heading</h5>
24 Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
25 </div>
26 </div>
27 {% endexample %}
28
29 {% callout warning %}
30 ##### Flexbug #12: Inline elements aren't treated as flex items
31
32 Internet Explorer 10-11 do not render inline elements like links or images (or `::before` and `::after` pseudo-elements) as flex items. The only workaround is to set a non-inline `display` value (e.g., `block`, `inline-block`, or `flex`). We suggest using `.d-flex`, one of our [display utilities]({{ site.baseurl }}/utilities/display-property/), as an easy fix.
33
34 **Source:** [Flexbugs on GitHub](https://github.com/philipwalton/flexbugs#12-inline-elements-are-not-treated-as-flex-items)
35 {% endcallout %}
36
37 ## Nesting
38
39 Media objects can be infinitely nested, though we suggest you stop at some point. Place nested `.media` within the `.media-body` of a parent media object.
40
41 {% example html %}
42 <div class="media">
43 <img class="d-flex mr-3" data-src="holder.js/64x64" alt="Generic placeholder image">
44 <div class="media-body">
45 <h5 class="mt-0">Media heading</h5>
46 Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
47
48 <div class="media mt-3">
49 <a class="d-flex pr-3" href="#">
50 <img data-src="holder.js/64x64" alt="Generic placeholder image">
51 </a>
52 <div class="media-body">
53 <h5 class="mt-0">Media heading</h5>
54 Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
55 </div>
56 </div>
57 </div>
58 </div>
59 {% endexample %}
60
61 ## Alignment
62
63 Media in a media object can be aligned with flexbox utilities to the top (default), middle, or end of your `.media-body` content.
64
65 {% example html %}
66 <div class="media">
67 <img class="d-flex align-self-start mr-3" data-src="holder.js/64x64" alt="Generic placeholder image">
68 <div class="media-body">
69 <h5 class="mt-0">Top-aligned media</h5>
70 <p>Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.</p>
71 <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>
72 </div>
73 </div>
74 {% endexample %}
75
76 {% example html %}
77 <div class="media">
78 <img class="d-flex align-self-center mr-3" data-src="holder.js/64x64" alt="Generic placeholder image">
79 <div class="media-body">
80 <h5 class="mt-0">Center-aligned media</h5>
81 <p>Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.</p>
82 <p class="mb-0">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>
83 </div>
84 </div>
85 {% endexample %}
86
87 {% example html %}
88 <div class="media">
89 <img class="d-flex align-self-end mr-3" data-src="holder.js/64x64" alt="Generic placeholder image">
90 <div class="media-body">
91 <h5 class="mt-0">Bottom-aligned media</h5>
92 <p>Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.</p>
93 <p class="mb-0">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>
94 </div>
95 </div>
96 {% endexample %}
97
98 ## Order
99
100 Change the order of content in media objects by modifying the HTML itself, or by adding some custom flexbox CSS to set the `order` property (to an integer of your choosing).
101
102 {% example html %}
103 <div class="media">
104 <div class="media-body">
105 <h5 class="mt-0 mb-1">Media object</h5>
106 Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
107 </div>
108 <img class="d-flex ml-3" data-src="holder.js/64x64" alt="Generic placeholder image">
109 </div>
110 {% endexample %}
111
112 ## Media list
113
114 Because the media object has so few structural requirements, you can also use these classes on list HTML elements. On your `<ul>` or `<ol>`, add the `.list-unstyled` to remove any browser default list styles, and then apply `.media` to your `<li>`s. As always, use spacing utilities wherever needed to fine tune.
115
116 {% example html %}
117 <ul class="list-unstyled">
118 <li class="media">
119 <img class="d-flex mr-3" data-src="holder.js/64x64" alt="Generic placeholder image">
120 <div class="media-body">
121 <h5 class="mt-0 mb-1">List-based media object</h5>
122 Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
123 </div>
124 </li>
125 <li class="media my-4">
126 <img class="d-flex mr-3" data-src="holder.js/64x64" alt="Generic placeholder image">
127 <div class="media-body">
128 <h5 class="mt-0 mb-1">List-based media object</h5>
129 Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
130 </div>
131 </li>
132 <li class="media">
133 <img class="d-flex mr-3" data-src="holder.js/64x64" alt="Generic placeholder image">
134 <div class="media-body">
135 <h5 class="mt-0 mb-1">List-based media object</h5>
136 Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
137 </div>
138 </li>
139 </ul>
140 {% endexample %}