<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Grid Layout Test: alignment for replaced element</title>
<link rel="author" title="Rossana Monteriso" href="mailto:rmonteriso@igalia.com">
<link rel="help" href="https://drafts.csswg.org/css-align-3/#propdef-align-self">
<link rel="help" href="https://drafts.csswg.org/css-align-3/#propdef-justify-self">
<link rel="help" href="https://developer.mozilla.org/en-US/docs/Web/CSS/Replaced_element">
<link rel="help" href="https://drafts.csswg.org/css-align/#align-grid">
<link rel="help" href="https://www.w3.org/TR/css-grid-1/#grid-item-sizing">
<meta name="assert" content="This test checks that the alignment properties apply the 'stretch' value correctly on replaced elements, such as images.">
<meta name="flags" content="ahem">
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<link rel="stylesheet" href="/css/support/grid.css">
<link rel="stylesheet" href="/css/support/alignment.css">

<style>
.grid {
  grid-template-columns: 500px;
  grid-template-rows: 500px;
}
.fixedSizes {
   width: 150px;
   height: 150px;
}
.autoMargins {
   margin: auto;
}
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/check-layout-th.js"></script>
<script type="text/javascript">
  setup({ explicit_done: true });
</script>

<body onload="document.fonts.ready.then(() => { checkLayout('.grid'); })">

    <p>This test checks that the alignment properties align-self and justify-self apply the 'stretch' value correctly on replaced elements.</p>

    <div style="position: relative">
        <p>The blue image's original size is 100px x 100px, default alignment is resolved as 'start' for replaced elements so it prevents stretching to be applied.</p>
        <div class="grid">
            <img src="/css/support/blue-100.png" data-expected-width="100" data-expected-height="100"/>
        </div>
    </div>

    <div style="position: relative">
        <p>The blue image's original size is 100px x 100px, 'normal' is resolved as 'start' for replaced elements so it prevents stretching to be applied.</p>
        <div class="grid itemsNormal">
            <img src="/css/support/blue-100.png" data-expected-width="100" data-expected-height="100"/>
        </div>
    </div>

    <div style="position: relative">
        <p>The blue image's original size is 100px x 100px, but it should be stretched to fill the 500px x 500px grid area it's placed into.</p>
        <div class="grid alignItemsStretch justifyItemsStretch">
            <img src="/css/support/blue-100.png" data-expected-width="500" data-expected-height="500"/>
        </div>
    </div>

    <div style="position: relative">
        <p>The blue image's original size is 100px x 100px, non-stretch values prevent stretching to be applied.</p>
        <div class="grid itemsCenter">
            <img src="/css/support/blue-100.png" data-expected-width="100" data-expected-height="100"/>
        </div>
    </div>

    <div style="position: relative">
        <p>The blue image's original size is 100px x 100px, non-auto sizes prevent stretching to be applied.</p>
        <div class="grid">
            <img class="fixedSizes" src="/css/support/blue-100.png" data-expected-width="150" data-expected-height="150"/>
        </div>
    </div>

    <div style="position: relative">
        <p>The blue image's original size is 100px x 100px, auto-margins prevent stretching to be applied.</p>
        <div class="grid">
            <img class="autoMargins" src="/css/support/blue-100.png" data-expected-width="100" data-expected-height="100"/>
        </div>
    </div>
</body>
