Edit in JSFiddle

<h1>The Media Object</h1>

<div class="box o-media">
    <div class="o-media__left"><div class="pic"></div></div>
    <div class="o-media__body"><p>Body copy</p></div>
</div>

<div class="box o-media">
    <div class="o-media__left"><div class="pic"></div></div>
    <div class="o-media__body">
        <p>Body copy</p>
        <p>Body copy</p>
        <p>Body copy</p>
    </div>
</div>

<div class="box o-media">
    <div class="o-media__body"><p>Body copy</p></div>
    <div class="o-media__right"><div class="pic"></div></div>
</div>

<div class="box o-media">
    <div class="o-media__left"><div class="pic"></div></div>
    <div class="o-media__body"><p>Body copy</p></div>
    <div class="o-media__right"><div class="pic"></div></div>
</div>
/* ==========================================================================
   #MEDIA OBJECT
   ========================================================================== */


/**
 * The media object places an image beside text. The text is designed to expand
 * to the remainder of the parent's width.
 */

.o-media {

    --o-media-side-alignment: flex-start;
    --o-media-body-alignment: center;
    --o-media-spacing: 0.5em;

    display: flex;
    flex-direction: row;
    width: 100%;

}


.o-media__left {
    align-self: var(--o-media-side-alignment);
    margin-right: var(--o-media-spacing);
}

.o-media__right {
    align-self: var(--o-media-side-alignment);
    margin-left: var(--o-media-spacing);
}

.o-media__body {
    align-self: var(--o-media-body-alignment);
    flex-grow: 1;
}


/* ==========================================================================
   #PAGE STYLES
   ========================================================================== */
p {
    background-color: pink;
    margin: 0;
}

.box {
    border: 1px solid #000;
    margin-bottom: 1em;
    width: 10em;
}

.pic {
    background-color: blue;
    height: 2em;
    width: 2em;
}