flexbox-paint-ordering-002.xhtml (5362B)
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!-- 3 Any copyright is dedicated to the Public Domain. 4 http://creativecommons.org/publicdomain/zero/1.0/ 5 --> 6 <!-- Testcase with flex items containing overlapping content, with 7 "order" and "z-index" set on some of them, to test how that affects 8 paint-order. --> 9 <html xmlns="http://www.w3.org/1999/xhtml"> 10 <head> 11 <title>CSS Test: Testing the paint-order of overlapping flex items with 'order' and 'z-index' set</title> 12 <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com"/> 13 <link rel="help" href="http://www.w3.org/TR/css-flexbox-1/#painting"/> 14 <link rel="match" href="flexbox-paint-ordering-002-ref.xhtml"/> 15 <style> 16 body { 17 line-height: 0; 18 } 19 20 .flexbox { 21 display: inline-flex; 22 width: 20px; 23 height: 10px; 24 border: 2px solid gray; 25 margin-bottom: 10px; 26 margin-right: 10px; 27 } 28 .a { 29 width: 10px; 30 height: 10px; 31 background: lightblue; 32 min-width: 0; 33 } 34 .b { 35 width: 10px; 36 height: 10px; 37 background: pink; 38 min-width: 0; 39 } 40 41 .aKid { 42 margin-left: 3px; 43 margin-top: 3px; 44 width: 10px; 45 height: 10px; 46 background: steelblue; 47 border: 1px solid blue; 48 } 49 .bKid { 50 margin-left: 3px; 51 margin-top: 6px; 52 width: 10px; 53 height: 10px; 54 background: violet; 55 border: 1px solid purple; 56 } 57 58 .on1 { order: -1; } 59 .o0 { order: 0; } 60 .o1 { order: 1; } 61 .o2 { order: 2; } 62 63 .zn2 { z-index: -2; } 64 .zn1 { z-index: -1; } 65 .z0 { z-index: 0; } 66 .z1 { z-index: 1; } 67 68 </style> 69 </head> 70 <body> 71 <!-- order not set: --> 72 <div class="flexbox"> 73 <div class="a"><div class="aKid"/></div> 74 <div class="b"><div class="bKid"/></div> 75 </div> 76 77 <br/> 78 79 <!-- order set, but it matches content order, so it shouldn't matter: --> 80 <div class="flexbox"> 81 <div class="a on1"><div class="aKid"/></div> 82 <div class="b"><div class="bKid"/></div> 83 </div 84 ><div class="flexbox"> 85 <div class="a o0"><div class="aKid"/></div> 86 <div class="b"><div class="bKid"/></div> 87 </div 88 ><div class="flexbox"> 89 <div class="a o0"><div class="aKid"/></div> 90 <div class="b o0"><div class="bKid"/></div> 91 </div 92 ><div class="flexbox"> 93 <div class="a o2"><div class="aKid"/></div> 94 <div class="b o2"><div class="bKid"/></div> 95 </div 96 ><div class="flexbox"> 97 <div class="a"><div class="aKid"/></div> 98 <div class="b o0"><div class="bKid"/></div> 99 </div 100 ><div class="flexbox"> 101 <div class="a"><div class="aKid"/></div> 102 <div class="b o1"><div class="bKid"/></div> 103 </div> 104 105 <br/> 106 107 <!-- order set to reverse of content-order: --> 108 <div class="flexbox"> 109 <div class="a o1"><div class="aKid"/></div> 110 <div class="b"><div class="bKid"/></div> 111 </div 112 ><div class="flexbox"> 113 <div class="a"><div class="aKid"/></div> 114 <div class="b on1"><div class="bKid"/></div> 115 </div 116 ><div class="flexbox"> 117 <div class="a o0"><div class="aKid"/></div> 118 <div class="b on1"><div class="bKid"/></div> 119 </div 120 ><div class="flexbox"> 121 <div class="a o2"><div class="aKid"/></div> 122 <div class="b o1"><div class="bKid"/></div> 123 </div> 124 125 <br/> 126 127 <!-- order set to reverse of content-order, AND with z-index set on 128 one or both items, but not such that it changes the paint order --> 129 <div class="flexbox"> 130 <div class="a o1 z0"><div class="aKid"/></div> 131 <div class="b"><div class="bKid"/></div> 132 </div 133 ><div class="flexbox"> 134 <div class="a o1 z1"><div class="aKid"/></div> 135 <div class="b"><div class="bKid"/></div> 136 </div 137 ><div class="flexbox"> 138 <div class="a o1 z0"><div class="aKid"/></div> 139 <div class="b z0"><div class="bKid"/></div> 140 </div 141 ><div class="flexbox"> 142 <div class="a o1 z1"><div class="aKid"/></div> 143 <div class="b z0"><div class="bKid"/></div> 144 </div> 145 146 <br/> 147 148 <!-- order set to reverse of content-order, AND with z-index set on 149 one or both items, in such a way that it affects paint order --> 150 <div class="flexbox"> 151 <!-- 'a' is behind the container's border --> 152 <div class="a o1 zn1"><div class="aKid"/></div> 153 <div class="b"><div class="bKid"/></div> 154 </div 155 ><div class="flexbox"> 156 <!-- 'a' and 'b' are both behind the container's border --> 157 <div class="a o1 zn1"><div class="aKid"/></div> 158 <div class="b zn1"><div class="bKid"/></div> 159 </div 160 ><div class="flexbox"> 161 <!-- 'a' and 'b' are both behind the container's border, 162 and 'a' is behind 'b' despite coming after it in the 'order' 163 ordering--> 164 <div class="a o1 zn2"><div class="aKid"/></div> 165 <div class="b zn1"><div class="bKid"/></div> 166 </div 167 ><div class="flexbox"> 168 <!-- 'a' and 'b' are both in front of the container's border, 169 and 'a' is behind 'b' despite coming after it in the 'order' 170 ordering--> 171 <div class="a o1 z0"><div class="aKid"/></div> 172 <div class="b z1"><div class="bKid"/></div> 173 </div> 174 175 </body> 176 </html>