Q:

Vertically center one of many div inside a container

A section consists of a navigation group with elements floated to the sides, a center text group, and a background image.  The section height was not manually set to fit the background image. 
How do I go about vertically centering the text group?  It is div.h1-container. 
Plunkr: https://plnkr.co/edit/rSWgdfPQEbIeXbPh4wO1?p=preview

body {
  font: 15px/1.5 Arial, Helvetica, sans-serif;
  padding: 0;
  margin: 0;
  background-color: #f4f4f4;
}


/* Global */

.container {
  width: 80%;
  margin: auto;
  overflow: hidden;
}

.clear {
  clear: both;
}

ul {
  margin: 0;
  padding: 0;
}

section h2 {
  line-height: 1.0;
}

.button_1 {
  height: 34px;
  background: tomato;
  border: 0;
  padding-left: 20px;
  padding-right: 20px;
  color: #ffffff;
  width: 200px;
}

.showcase-nav a {
  color: #ffffff;
  text-decoration: none;
  text-transform: uppercase;
  font-size: 16px;
}

.showcase-nav {
  padding-top: 30px;
  margin-top: 10px;
  float: right;
}

.showcase-nav li.social i {
  padding: 0 4px;
}

.showcase-nav li {
  display: inline;
  padding: 0 20px 0 20px;
}

.showcase-branding {
  float: left;
}

.showcase-branding h1 {
  font-size: 26px;
  margin: 0;
  padding-top: 30px;
  color: #fff;
}

.showcase-branding .highlight {
  color: #e8491d;
  font-weight: bold;
}

.showcase-nav a:hover {
  color: #cccccc;
  font-weight: bold;
}

.h1-container {
  width: 70%;
  margin: auto;
}

.h1-container h1 {
  text-transform: uppercase;
  text-align: center;
  color: #fff;
}

.h1-container p {
  width: 81%;
  background: tomato;
  margin: auto;
  border-radius: 10px;
  text-align: center;
  color: #fff;
}


/* Showcase */

#showcase {
  background: url('http://i68.tinypic.com/2j5jho4.png') no-repeat;
  background-size: contain;
  width: 100%;
  display: inline-block;
  position: relative;
  margin: 0 auto;
}

#showcase:after {
  padding-top: 51.46%;
  display: block;
  content: '';
}

#showcase .container {
  position: absolute;
  top: 0;
  bottom: 0;
  right: 0;
  left: 0;
}

#showcase .h1-container h1 {
  font-size: 55px;
  margin-bottom: 10px;
}

#showcase p {
  font-size: 20px;
  padding: 5px;
}
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" />

<section id="showcase">
  <div class="container">
    <div class="showcase-branding">
      <h1>Title</h1>
    </div>
    <nav class="showcase-nav">
      <ul>
        <li class="current"><a href="about.html">About</a></li>
        <li><a href="contact.html">Contact</a></li>
        <li class="social"><a href=""><i class="fa fa-linkedin-square"></i></a><a href=""><i class="fa fa-facebook-official"></i></a><a href=""><i class="fa fa-twitter"></i></a></li>
      </ul>
    </nav>
    <div class="clear"></div>
    <div class="h1-container">
      <h1>Text on line 1<br>text on line 2</h1>
      <p>lorem ipsum lorem ipsum lorem ipsum lorem ipsum <i class="fa fa-caret-right"></i></p>
    </div>
  </div>
</section>

A:

Given the current context there are two simple ways to go about this. 
One way would be to give .h1-container display: flex, flex-direction: column, and justify-content: center. 
Here is a jsfiddle. 
However, if you were to do it this way, each element and every new element placed in .h1-container will end up being stacked vertically and centered vertically in relation to .h1-container, so it will appear as if the children elements are not centered if .h1-container is not properly centered. 
Also remember that justify-content always positions the children elements relative to the direction of the flex-box.  Therefore, if your flex-box direction is not explicitly set, and since the default is flex-direction: row, justify-content would position the children horizontally.  align-items will always be the opposite of the flex-box's direction property. 

body {
  font: 15px/1.5 Arial, Helvetica, sans-serif;
  padding: 0;
  margin: 0;
  background-color: #f4f4f4;
}


/* Global */

.container {
  width: 80%;
  margin: auto;
  overflow: hidden;
}

.clear {
  clear: both;
}

ul {
  margin: 0;
  padding: 0;
}

section h2 {
  line-height: 1.0;
}

.button_1 {
  height: 34px;
  background: tomato;
  border: 0;
  padding-left: 20px;
  padding-right: 20px;
  color: #ffffff;
  width: 200px;
}

.showcase-nav a {
  color: #ffffff;
  text-decoration: none;
  text-transform: uppercase;
  font-size: 16px;
}

.showcase-nav {
  padding-top: 30px;
  margin-top: 10px;
  float: right;
}

.showcase-nav li.social i {
  padding: 0 4px;
}

.showcase-nav li {
  display: inline;
  padding: 0 20px 0 20px;
}

.showcase-branding {
  float: left;
}

.showcase-branding h1 {
  font-size: 26px;
  margin: 0;
  padding-top: 30px;
  color: #fff;
}

.showcase-branding .highlight {
  color: #e8491d;
  font-weight: bold;
}

.showcase-nav a:hover {
  color: #cccccc;
  font-weight: bold;
}

.h1-container {
  width: 70%;
  margin: auto;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.h1-container h1 {
  text-transform: uppercase;
  text-align: center;
  color: #fff;
}

.h1-container p {
  width: 81%;
  background: tomato;
  margin: auto;
  border-radius: 10px;
  text-align: center;
  color: #fff;
}


/* Showcase */

#showcase {
  background: url('http://i68.tinypic.com/2j5jho4.png') no-repeat;
  background-size: contain;
  width: 100%;
  display: inline-block;
  position: relative;
  margin: 0 auto;
}

#showcase:after {
  padding-top: 51.46%;
  display: block;
  content: '';
}

#showcase .container {
  position: absolute;
  top: 0;
  bottom: 0;
  right: 0;
  left: 0;
}

#showcase .h1-container h1 {
  font-size: 55px;
  margin-bottom: 10px;
}

#showcase p {
  font-size: 20px;
  padding: 5px;
}
  <body>
    <section id="showcase">
   <div class="container">
        <div class="showcase-branding">
          <h1>Title</h1>
        </div>
        <nav class="showcase-nav">
          <ul>
            <li class="current"><a href="about.html">About</a></li>
            <li><a href="contact.html">Contact</a></li>
            <li class="social"><a href=""><i class="fa fa-linkedin-square"></i></a><a href=""><i class="fa fa-facebook-official"></i></a><a href=""><i class="fa fa-twitter"></i></a></li>
          </ul>
        </nav>
        <div class="clear"></div>
        <div class="h1-container">
          <h1>Text on line 1<br>text on line 2</h1>
          <p>lorem ipsum lorem ipsum lorem ipsum lorem ipsum <i class="fa fa-caret-right"></i></p>
        </div>
      </div>
    </section>
  </body>

The other way would be to give .container position: relative, and then give .h1-container position: absolute, top: 50%, and transform: translateY(-50%). 
Positioning .container as relative allows you to absolutely position .h1-container in relation to .container as opposed to the entire document. 
.container {
  position: relative;
}

.h1-container {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
}

Here is a jsfiddle. 
The following is an inline version which won't display properly due to the dimensions of everything, but it has at least centered the .h1-container. 

body {
  font: 15px/1.5 Arial, Helvetica, sans-serif;
  padding: 0;
  margin: 0;
  background-color: #f4f4f4;
}


/* Global */

.container {
  width: 80%;
  margin: auto;
  overflow: hidden;
  position: relative;
}

.clear {
  clear: both;
}

ul {
  margin: 0;
  padding: 0;
}

section h2 {
  line-height: 1.0;
}

.button_1 {
  height: 34px;
  background: tomato;
  border: 0;
  padding-left: 20px;
  padding-right: 20px;
  color: #ffffff;
  width: 200px;
}

.showcase-nav a {
  color: #ffffff;
  text-decoration: none;
  text-transform: uppercase;
  font-size: 16px;
}

.showcase-nav {
  padding-top: 30px;
  margin-top: 10px;
  float: right;
}

.showcase-nav li.social i {
  padding: 0 4px;
}

.showcase-nav li {
  display: inline;
  padding: 0 20px 0 20px;
}

.showcase-branding {
  float: left;
}

.showcase-branding h1 {
  font-size: 26px;
  margin: 0;
  padding-top: 30px;
  color: #fff;
}

.showcase-branding .highlight {
  color: #e8491d;
  font-weight: bold;
}

.showcase-nav a:hover {
  color: #cccccc;
  font-weight: bold;
}

.h1-container {
  width: 70%;
  margin: auto;
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
}

.h1-container h1 {
  text-transform: uppercase;
  text-align: center;
  color: #fff;
}

.h1-container p {
  width: 81%;
  background: tomato;
  margin: auto;
  border-radius: 10px;
  text-align: center;
  color: #fff;
}


/* Showcase */

#showcase {
  background: url('http://i68.tinypic.com/2j5jho4.png') no-repeat;
  background-size: contain;
  width: 100%;
  display: inline-block;
  position: relative;
  margin: 0 auto;
}

#showcase:after {
  padding-top: 51.46%;
  display: block;
  content: '';
}

#showcase .container {
  position: absolute;
  top: 0;
  bottom: 0;
  right: 0;
  left: 0;
}

#showcase .h1-container h1 {
  font-size: 55px;
  margin-bottom: 10px;
}

#showcase p {
  font-size: 20px;
  padding: 5px;
}
<body>
    <section id="showcase">
   <div class="container">
        <div class="showcase-branding">
          <h1>Title</h1>
        </div>
        <nav class="showcase-nav">
          <ul>
            <li class="current"><a href="about.html">About</a></li>
            <li><a href="contact.html">Contact</a></li>
            <li class="social"><a href=""><i class="fa fa-linkedin-square"></i></a><a href=""><i class="fa fa-facebook-official"></i></a><a href=""><i class="fa fa-twitter"></i></a></li>
          </ul>
        </nav>
        <div class="clear"></div>
        <div class="h1-container">
          <h1>Text on line 1<br>text on line 2</h1>
          <p>lorem ipsum lorem ipsum lorem ipsum lorem ipsum <i class="fa fa-caret-right"></i></p>
        </div>
      </div>
    </section>
  </body>

