| <!DOCTYPE html> |
| <script src="../../resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| <style> |
| body { |
| font-size: 10px; |
| } |
| #container { |
| offset-position: 30% 40%; |
| } |
| #child1 { |
| offset-position: inherit; |
| } |
| #child3 { |
| offset-position: left 10% top; /* invalid */ |
| } |
| #child4 { |
| offset-position: bottom 10% right 20%; |
| } |
| </style> |
| <div id="container"> |
| <div id="child1"></div> |
| <div id="child2"></div> |
| <div id="child3"></div> |
| <div id="child4"></div> |
| </div> |
| <script> |
| "use strict"; |
| |
| test(function() { |
| var element = document.createElement('div'); |
| document.body.appendChild(element); |
| assert_equals(getComputedStyle(element, null).offsetPosition, 'auto'); |
| }, 'offset-position default is auto'); |
| |
| test(function() { |
| assert_equals(getComputedStyle(container, null).offsetPosition, '30% 40%'); |
| }, 'offset-position can be two percentages'); |
| |
| test(function() { |
| assert_equals(getComputedStyle(child1, null).offsetPosition, '30% 40%'); |
| }, 'offset-position can explicitly inherited'); |
| |
| test(function() { |
| assert_equals(getComputedStyle(child2, null).offsetPosition, 'auto'); |
| }, 'offset-position is not inherited by default'); |
| |
| test(function() { |
| assert_equals(getComputedStyle(child3, null).offsetPosition, 'auto'); |
| }, 'offset-position may not use three values'); |
| |
| test(function() { |
| assert_equals(getComputedStyle(child4, null).offsetPosition, '80% 90%'); |
| }, 'offset-position may use four values'); |
| |
| function computed(specified) { |
| var element = document.createElement('div'); |
| element.style['offset-position'] = specified; |
| document.body.appendChild(element); |
| return getComputedStyle(element, null).offsetPosition; |
| } |
| |
| test(function() { |
| assert_equals(computed('auto'), 'auto'); |
| }, 'offset-position can be auto'); |
| |
| test(function() { |
| assert_equals(computed('10px 20px'), '10px 20px'); |
| }, 'offset-position can be two lengths'); |
| |
| test(function() { |
| assert_equals(computed('30px top'), '30px 0%'); |
| }, 'offset-position can be a length and a keyword'); |
| |
| test(function() { |
| assert_equals(computed('left 40px'), '0% 40px'); |
| }, 'offset-position can be a keyword and a length'); |
| |
| test(function() { |
| assert_equals(computed('top'), '50% 0%'); |
| }, 'offset-position can be supplied with a single keyword'); |
| |
| test(function() { |
| assert_equals(computed('center'), '50% 50%'); |
| }, 'offset-position can be supplied with center'); |
| |
| test(function() { |
| assert_equals(computed('5em 6em'), '50px 60px'); |
| }, 'offset-position can be supplied with em'); |
| </script> |