title: Flexbox align-items: baseline works, but align-self: baseline doesn't. Why?
body: <p>I seem to be observing some confusing behavior with flexbox, specifically when attempting to use <code>align-self: baseline</code>. The basic issue is that it simply doesn’t work; the following snippet demonstrates the problem:</p>
  
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-css lang-css prettyprint-override"><code>.flex-form {
    display: flex;
  }
  
  .flex-form label {
    align-self: baseline;
  }
  
  input[type=text] {
    border: 1px solid black;
    font-size: 16px;
    margin: 0 10px;
    padding: 5px;
  }
  
  button {
    background-color: white;
    border: 1px solid black;
    margin: 0;
  }</code></pre>
  <pre class="snippet-code-html lang-html prettyprint-override"><code>&lt;form class="flex-form"&gt;
    &lt;label&gt;Label: &lt;/label&gt;
    &lt;input type="text" placeholder=" " /&gt;
    &lt;button type="submit"&gt;Submit&lt;/button&gt;
  &lt;/form&gt;</code></pre>
  </div>
  </div>
  </p>
  
  <p>Here’s a screenshot of what the output looks like:</p>
  
  <blockquote>
    <p><a href="https://i.stack.imgur.com/Sc5ws.png" rel="noreferrer"><img src="https://i.stack.imgur.com/Sc5ws.png" alt=""></a></p>
  </blockquote>
  
  <p>As you can see, the label’s baseline is <em>not</em> aligned with the other form elements, despite having <code>align-self: baseline</code> set. If I use <code>align-items: baseline</code> on the parent container, however, I get a different result:</p>
  
  <p><div class="snippet" data-lang="js" data-hide="true" data-console="true" data-babel="false">
  <div class="snippet-code snippet-currently-hidden">
  <pre class="snippet-code-css lang-css prettyprint-override"><code>.flex-form {
    display: flex;
    align-items: baseline;
  }
  
  input[type=text] {
    border: 1px solid black;
    font-size: 16px;
    margin: 0 10px;
    padding: 5px;
  }
  
  button {
    align-self: stretch;
    background-color: white;
    border: 1px solid black;
    margin: 0;
  }</code></pre>
  <pre class="snippet-code-html lang-html prettyprint-override"><code>&lt;form class="flex-form"&gt;
    &lt;label&gt;Label: &lt;/label&gt;
    &lt;input type="text" placeholder=" " /&gt;
    &lt;button type="submit"&gt;Submit&lt;/button&gt;
  &lt;/form&gt;</code></pre>
  </div>
  </div>
  </p>
  
  <blockquote>
    <p><a href="https://i.stack.imgur.com/vwugE.png" rel="noreferrer"><img src="https://i.stack.imgur.com/vwugE.png" alt=""></a></p>
  </blockquote>
  
  <p>Is this correct behavior according to the spec, or is it a bug? If so, why? Is there a workaround? For reference, I’ve tested on Chrome 54, Safari 9.1.2, and Firefox 50 on macOS 10.11.6, and they all seem to exhibit the same results.</p>