<?xml version="1.0" encoding="UTF-8"?>
<!--
     Any copyright is dedicated to the Public Domain.
     http://creativecommons.org/publicdomain/zero/1.0/
-->
<!-- Reference case for align-items / align-self behavior, using blocks in
     place of flex items and using float and width keywords to emulate the
     align-items / align-self properties. -->
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>CSS Reftest Reference</title>
    <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com"/>
    <style>
      .flexbox {
        border: 1px dashed blue;
        width: 200px;
        float: left;
        font-size: 10px;
      }

      .flex-start, .flex-end, .center, .baseline, .stretch,
      .self-start, .self-end {
        clear: both;
        margin:       1px 2px 3px 4px;
        border-width: 2px 3px 4px 5px;
        padding:      3px 4px 5px 6px;
        border-style: dotted;
      }

      div.big {
        font-size: 20px;
        width: 50px;
      }

      /* Classes for each of the various align-self values */
      .flex-start {
        background: lime;
        float: left;
      }
      .flex-end {
        background: orange;
        float: right;
      }
      <!-- We center shrinkwrapped text by putting it into an inline-block, and
           then wrapping that inline-block in a helper-div that has
           "text-align:center" set. -->
      .centerParent {
        text-align: center;
      }
      .center {
        background: lightblue;
        display: inline-block;
        text-align: left; /* Keep parent's centering from tweaking my text */
      }
      .baseline {
        background: teal;
        float: left;
      }
      .stretch {
        background: pink;
      }
      .self-start {
        background: yellow;
        float: right;
        text-align: right;
      }
      .self-end {
        background: purple;
        float: left;
        text-align: right;
      }
      .clearFloats { clear: both }
   </style>
  </head>
  <body>
    <div class="flexbox">
      <div class="flex-start">start</div>
      <div class="flex-start big">a b c d e f</div>
      <div class="flex-end">end</div>
      <div class="flex-end big">a b c d e f</div>
      <div class="clearFloats"></div>
      <div class="centerParent">
        <div class="center">center</div>
      </div>
      <div class="centerParent">
        <div class="center big">a b c d e f</div>
      </div>
    </div>
    <div class="flexbox">
      <div class="baseline">base</div>
      <div class="baseline big">abc</div>
      <div class="clearFloats"></div>
      <div class="stretch">stretch</div>
      <!-- Force a 3px + 1px = 4px margin between this and the previous div
           (to thwart the effects of margin-collapsing). This is the only
           place we need this hack, because everywhere else in this test
           we use floats or inline-blocks, whose margins don't collapse. -->
      <div class="stretch big" style="margin-top: 4px">a b c d e f</div>
    </div>
    <div class="flexbox">
      <div class="self-start">self-start</div>
      <div class="self-start big">a b c d e f</div>
      <div class="self-end">self-end</div>
      <div class="self-end big">a b c d e f</div>
    </div>
  </body>
</html>
