<?xml version="1.0" encoding="UTF-8"?> <!-- Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ --> <!-- Testcase with percent-valued padding and/or margin on flex items. The spec allows these to be resolved against the flex container's inline size (regardless of which axis the percent padding/margin is in). --> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>CSS Test: Testing percent-valued padding and margin on flex items</title> <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com"/> <link rel="help" href="https://www.w3.org/TR/css-flexbox-1/#item-margins"/> <link rel="match" href="flexbox-mbp-horiz-004-ref.xhtml"/> <style> div.flexbox { width: 200px; display: flex; margin-bottom: 2px; border: 1px dotted black; } div.height50 { height: 50px; } .marginA { margin: 10% 8% 6% 4%; } .marginB { margin: 8% 10% 12% 14%; } .paddingA { padding: 8% 6% 4% 2%; } .paddingB { padding: 6% 8% 10% 12%; } div.child1 { flex: none; width: 10px; height: 10px; background: lightgreen; } div.child2 { flex: none; width: 10px; height: 10px; background: purple; } div.filler { /* Filler-div to fill up content-box and make padding easier to see. */ height: 10px; width: 100%; background: lightgrey; } </style> </head> <body> <!-- Flex container is auto-height - this shouldn't impact percent margin/padding resolution, since they resolve against container's inline-size, i.e. its width in this case. --> <div class="flexbox" ><div class="child1 paddingA"><div class="filler"/></div ><div class="child2 paddingB"><div class="filler"/></div ><div class="child1 marginA"></div ><div class="child2 marginB"></div ></div> <!-- Flex container has height: 50px - again, this shouldn't impact percent margin/padding resolution, since they resolve against container's inline-size, i.e. its width in this case. --> <div class="flexbox height50" ><div class="child1 paddingA"><div class="filler"/></div ><div class="child2 paddingB"><div class="filler"/></div ><div class="child1 marginA"></div ><div class="child2 marginB"></div ></div> <!-- ...and now with align-items: flex-end, so we can see the margin-bottom in action --> <div class="flexbox height50" style="align-items: flex-end" ><div class="child1 paddingA"><div class="filler"/></div ><div class="child2 paddingB"><div class="filler"/></div ><div class="child1 marginA"></div ><div class="child2 marginB"></div ></div> <!-- ...and finally, with margin and padding applied to the same items --> <div class="flexbox height50" ><div class="child1 paddingA marginA"><div class="filler"/></div ><div class="child2 paddingB marginB"><div class="filler"/></div ></div> </body> </html>