Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

<?xml version="1.0" encoding="UTF-8"?>
<!--
Any copyright is dedicated to the Public Domain.
-->
<!-- 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).
-->
<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="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>