wpt / css / CSS2 / visuren / position-absolute-percentage-inherit-001.xht

Status: FAIL | Duration: 12ms | Subtests: 0/1 | Open test on wpt.live | Open ref on wpt.live | wpt.fyi

/css/CSS2/visuren/position-absolute-percentage-inherit-001.xht

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

 <head>

  <title>CSS Test: position absolute - dimensions and position given by offset percentages and inherit</title>

  <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
  <link rel="help" title="9.3.2 Box offsets: 'top', 'right', 'bottom', 'left'" href="http://www.w3.org/TR/CSS21/visuren.html#position-props" />
  <link rel="help" title="6.2.1 The 'inherit' value" href="http://www.w3.org/TR/CSS21/cascade.html#value-def-inherit" />
  <link rel="help" href="http://www.w3.org/TR/css-cascade-3/#inherit" />
  <link rel="help" href="http://www.w3.org/TR/css-cascade-4/#inherit" />
  <link rel="help" title="4.3.2 Length" href="http://www.w3.org/TR/CSS21/syndata.html#length-units" />
  <link rel="match" href="position-absolute-percentage-inherit-001-ref.xht" />

  <meta content="Absolutely positioned boxes can be dimensioned and positioned solely by setting offset 'top', 'right', 'bottom' and 'left' property values with percentage unit and then with inherit keyword. 'inherit' on a offset property makes such offset property take the same computed value as the offset property of the nearest positioned ancestor; in the case of a percentage value - like in this testcase - , the computed value is the specified percentage value of such nearest positioned ancestor." name="assert" />

  <style type="text/css"><![CDATA[
  body {margin: 8px;}

  p
  {
  font: 1em/1.25 serif;
  margin: 1em 0em;
  }

  div#rel-pos-grand-parent
  {
  background-color: green;
  height: 300px;
  position: relative;
  width: 400px;
  }

  div#abs-pos-parent
  {
  background-color: green;
  bottom: 10%; /* 10% of 300px == 30px */
  left: 15%; /* 15% of 400px == 60px */
  position: absolute;
  right: 20%; /* 20% of 400px == 80px */
  top: 30%; /* 30% of 300px == 90px */
  /*
  height will be 300px minus 90px minus 30px == 180px
  width will be 400px minus 60px minus 80px == 260px
  */
  }

  div#abs-pos-child-red
  {
  background-color: red;
  bottom: inherit; /* 10% of div#abs-pos-parent's height == 18px */
  left: inherit; /* 15% of div#abs-pos-parent's width == 39px */
  position: inherit;
  right: inherit; /* 20% of div#abs-pos-parent's width == 52px */
  top: inherit; /* 30% of div#abs-pos-parent's height == 54px */
  /*
  height will be 180px minus 54px minus 18px == 108px
  width will be 260px minus 39px minus 52px == 169px
  */
  }

  div#abs-pos-overlapping-green
  {
  background-color: green;
  height: 108px;
  left: 107px;
  /*
       8px (body's margin-left)
    +
      60px  (div#abs-pos-parent's left offset)
    +
      39px (div#abs-pos-child-red's left offset)
  ==================
     107px
  */
  position: absolute;
  width: 169px;
  top: 216px;
  }

  /*
     max(8px, 16px) (margin collapsing between body's margin-top and p's margin-top)
  +
     20px (first line)
  +
     20px (second line)
  +
     16px (p's margin-bottom)
  +
     90px (div#abs-pos-parent's top offset)
  +
     54px (div#abs-pos-child-red's top offset)
  ==================
    216px
  */
  ]]></style>

  </head>

  <body>

  <p>Test passes if there is a filled <br />
  green rectangle and no red.</p>

  <div id="rel-pos-grand-parent">
    <div id="abs-pos-parent">
      <div id="abs-pos-child-red"></div>
    </div>
  </div>

  <div id="abs-pos-overlapping-green"></div>

 </body>
</html>

/css/CSS2/visuren/position-absolute-percentage-inherit-001-ref.xht

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

 <head>

  <title>CSS Reftest Reference</title>

  <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />

  <style type="text/css"><![CDATA[
  body {margin: 8px;}

  p
  {
  font: 1em/1.25 serif;
  margin: 1em 0em;
  }

  div
  {
  background-color: green;
  height: 300px;
  width: 400px;
  }
  ]]></style>

 </head>

 <body>

  <p>Test passes if there is a filled<br />
  green rectangle and no red.</p>

  <div></div>

 </body>
</html>