summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/css/css-flexbox/flexbox-items-as-stacking-contexts-003.html
blob: 5f0fd8ba35ee8214ac61edec55577b28b0e1c3f4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<!DOCTYPE html>
<!--
     Any copyright is dedicated to the Public Domain.
     http://creativecommons.org/publicdomain/zero/1.0/
-->
<!-- This testcase checks that flex items are painted as pseudo-stacking
     contexts, instead of full stacking contexts. In other words, content
     inside of one flex item should be able to iterleave between pieces of
     content in another flex item, if we set appropriately interleaving
     "z-index" values. -->
<!-- This was resolved by the CSSWG in April 2013:
     http://krijnhoetmer.nl/irc-logs/css/20130403#l-455 -->
<html>
<head>
  <title>CSS Test: Testing that flex items paint as pseudo-stacking contexts (like inline-blocks), instead of full stacking contexts: 'z-index' should let descendants interleave</title>
  <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
  <link rel="help" href="http://www.w3.org/TR/css-flexbox-1/#painting">
  <link rel="match" href="flexbox-items-as-stacking-contexts-003-ref.html">
  <style>
    .flexContainer {
      background: orange;
      display: flex;
      justify-content: space-between;
      width: 70px;
      height: 20px;
      padding: 2px;
      margin-bottom: 2px;
    }
    .item1 {
      background: lightblue;
      width: 30px;
      min-width: 0; /* disable default min-width:auto behavior */
      padding: 2px;
    }
    .item2 {
      background: yellow;
      width: 30px;
      padding: 2px;
    }
    .grandchildA {
      background: purple;
      width: 80px;
      height: 6px;
      position: relative;
      z-index: 10;
    }
    .grandchildB {
      background: teal;
      width: 80px;
      height: 6px;
      position: relative;
      z-index: 20;
    }
    .grandchildC {
      background: lime;
      width: 20px;
      height: 16px;
      position: relative;
      /* This z-index should interleave this content
         between grandchildA and grandchildB: */
      z-index: 15;
    }
  </style>
</head>
<body>
  <!-- This flex container's first flex item has content that overflows
       and overlap the second flex item.  The z-index values are set such
       that this content should interleave; grandchildC should
       paint on top of grandchildA, but underneath grandchildB. -->
  <div class="flexContainer"
    ><div class="item1"
      ><div class="grandchildA"></div
      ><div class="grandchildB"></div
    ></div
    ><div class="item2"
      ><div class="grandchildC"></div
    ></div
  ></div>
</body>
</html>