<!DOCTYPE html>
<html class="reftest-wait">
  <meta charset="utf-8">
  <title>CSS Multi-column Layout Test: Append a block containing a spanner kid. The spanner kid should correctly span across all columns</title>
  <link rel="author" title="Ting-Yu Lin" href="tlin@mozilla.com">
  <link rel="author" title="Mozilla" href="http://www.mozilla.org/">
  <link rel="help" href="https://drafts.csswg.org/css-multicol-1/#column-span">
  <link rel="match" href="multicol-span-all-dynamic-add-012-ref.html">
  <meta name="assert" content="This test checks that an appended block containing 'column-span' element should be rendered correctly.">

  <script>
  function runTest() {
    document.body.offsetHeight;

    // Create a subtree like the following, and append it to block1.
    // <div>
    //   <h3>spanner</h3>
    //   block2
    // </div>
    var spanner = document.createElement("h3");
    var spannerText = document.createTextNode("spanner");
    spanner.appendChild(spannerText);

    var block2 = document.createElement("div");
    var block2Text = document.createTextNode("block2");
    block2.appendChild(spanner);
    block2.appendChild(block2Text)

    var block1 = document.getElementById("block1");
    block1.appendChild(block2);

    document.documentElement.removeAttribute("class");
  }
  </script>

  <style>
  #column {
    column-count: 3;
    column-rule: 6px solid;
    width: 400px;
    outline: 1px solid black;
  }
  h3 {
    column-span: all;
    outline: 1px solid blue;
  }
  </style>

  <body onload="runTest();">
    <article id="column">
      <div id="block1">block1</div>
    </article>
  </body>
</html>
