root: bounds: [0, 0, 1024, 10000] scroll-offset: [0, 100] items: - type: stacking-context bounds: [0, 0, 50, 50] items: # This item should not scroll out of view because it is fixed position. - type: rect bounds: [0, 0, 50, 50] color: green spatial-id: root-reference-frame - type: stacking-context bounds: [0, 0, 50, 50] transform: translate(60, 100) id: 100 items: - type: stacking-context bounds: [0, 0, 50, 50] items: # Even though there is a custom clip-scroll ID, it should scroll, # because it is fixed relative to its reference frame. The reference frame # of this stacking context is the stacking context parent because it has # a transformation. - type: rect bounds: [0, 0, 50, 50] color: green - type: stacking-context bounds: [120, 0, 50, 200] transform: translate(0, 0) id: 101 items: # This is similar to the previous case, but ensures that this still works # even with an identity transform. - type: stacking-context bounds: [0, 0, 50, 200] items: - type: rect bounds: [0, 100, 50, 50] color: green - type: stacking-context bounds: [180, 0, 50, 200] perspective: 1 id: 102 items: # This is similar to the previous case, but for perspective. - type: stacking-context bounds: [0, 0, 50, 200] items: - type: rect bounds: [0, 100, 50, 50] color: green