The only way to do this with flexbox is to set the boxes to justify-content: space-between;
. Then give the text at the top a left margin of 10px:
#container {
border: 1px solid gray;
}
#container span{
margin-left:10px;
}
.outerBlock {
border: 1px solid red;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
.block {
width: 150px;
height: 150px;
background-color: #cccccc;
margin: 10px;
}
<div id="container">
<span>Aligned left to first block</span>
<div class="outerBlock">
<div class="block">1</div>
<div class="block">2</div>
<div class="block">3</div>
<div class="block">4</div>
<div class="block">5</div>
</div>
</div>
UPDATE: Positioned with jQuery
var el = $('.outerBlock > .block');
var os = el.offset();
$('.blockText').css("margin-left",os.left - parseInt(el.css('margin-left')));
*{
box-sizing:border-box;
}
#container {
border: 1px solid gray;
}
.outerText {
border: 1px solid red;
}
.outerBlock {
border: 1px solid red;
display: flex;
flex-wrap: wrap;
justify-content: center;
}
.block {
width: 150px;
height: 150px;
background-color: #cccccc;
margin: 10px;
}
.blockText {
width: 150px;
max-height: 20px;
margin: 0 10px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="container">
<div class="outerText">
<div class="blockText">News</div>
</div>
<div class="outerBlock">
<div class="block">1</div>
<div class="block">2</div>
<div class="block">3</div>
<div class="block">4</div>
<div class="block">5</div>
</div>
</div>