<?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 flex items containing overlapping content. This reference uses inline-block in place of inline-flex, with floated children in place of flex items, and with hardcoded DOM-reordering in place of "order" reordering. --> <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> body { line-height: 0; } .flexbox { display: inline-block; width: 20px; height: 10px; border: 2px solid gray; margin-bottom: 10px; margin-right: 10px; } .a { width: 10px; height: 10px; background: lightblue; float: left; /* to stack horizontally, like a flex item */ } .b { width: 10px; height: 10px; background: pink; float: left; /* to stack horizontally, like a flex item */ } .aKid { margin-left: 3px; margin-top: 3px; width: 10px; height: 10px; background: steelblue; border: 1px solid blue; } .bKid { margin-left: 3px; margin-top: 6px; width: 10px; height: 10px; background: violet; border: 1px solid purple; } /* Need to set 'position' for z-index to take effect. */ .zn2 { z-index: -2; position: relative; } .zn1 { z-index: -1; position: relative; } .z0 { z-index: 0; position: relative; } .z1 { z-index: 1; position: relative; } </style> </head> <body> <!-- order not set: --> <div class="flexbox"> <div class="a"><div class="aKid"/></div> <div class="b"><div class="bKid"/></div> </div> <br/> <!-- order set, but it matches content order, so it shouldn't matter: --> <div class="flexbox"> <div class="a"><div class="aKid"/></div> <div class="b"><div class="bKid"/></div> </div ><div class="flexbox"> <div class="a"><div class="aKid"/></div> <div class="b"><div class="bKid"/></div> </div ><div class="flexbox"> <div class="a"><div class="aKid"/></div> <div class="b"><div class="bKid"/></div> </div ><div class="flexbox"> <div class="a"><div class="aKid"/></div> <div class="b"><div class="bKid"/></div> </div ><div class="flexbox"> <div class="a"><div class="aKid"/></div> <div class="b"><div class="bKid"/></div> </div ><div class="flexbox"> <div class="a"><div class="aKid"/></div> <div class="b"><div class="bKid"/></div> </div> <br/> <!-- order set to reverse of content-order: --> <div class="flexbox"> <div class="b"><div class="bKid"/></div> <div class="a"><div class="aKid"/></div> </div ><div class="flexbox"> <div class="b"><div class="bKid"/></div> <div class="a"><div class="aKid"/></div> </div ><div class="flexbox"> <div class="b"><div class="bKid"/></div> <div class="a"><div class="aKid"/></div> </div ><div class="flexbox"> <div class="b"><div class="bKid"/></div> <div class="a"><div class="aKid"/></div> </div> <br/> <!-- order set to reverse of content-order, AND with z-index set on one or both items, but not such that it changes the paint order --> <div class="flexbox"> <div class="b"><div class="bKid"/></div> <div class="a"><div class="aKid"/></div> </div ><div class="flexbox"> <div class="b"><div class="bKid"/></div> <div class="a"><div class="aKid"/></div> </div ><div class="flexbox"> <div class="b"><div class="bKid"/></div> <div class="a"><div class="aKid"/></div> </div ><div class="flexbox"> <div class="b"><div class="bKid"/></div> <div class="a"><div class="aKid"/></div> </div> <br/> <!-- order set to reverse of content-order, AND with z-index set on one or both items, in such a way that it affects paint order --> <div class="flexbox"> <!-- 'a' is behind the container's border --> <div class="b"><div class="bKid"/></div> <div class="a zn1"><div class="aKid"/></div> </div ><div class="flexbox"> <!-- 'a' and 'b' are both behind the container's border --> <div class="b zn1"><div class="bKid"/></div> <div class="a zn1"><div class="aKid"/></div> </div ><div class="flexbox"> <!-- 'a' and 'b' are both behind the container's border, and 'a' is behind 'b' despite coming after it in the 'order' ordering--> <div class="b zn1"><div class="bKid"/></div> <div class="a zn2"><div class="aKid"/></div> </div ><div class="flexbox"> <!-- 'a' and 'b' are both in front of the container's border, and 'a' is behind 'b' despite coming after it in the 'order' ordering--> <div class="b z1"><div class="bKid"/></div> <div class="a z0"><div class="aKid"/></div> </div> </body> </html>