| <!DOCTYPE html> |
| <style> |
| .outerBlock { |
| border: 1px solid black; |
| transition: all 1s linear; |
| -moz-transition: all 1s linear; |
| } |
| |
| .innerBlock { |
| background-color: green; |
| height: 100px; |
| transition: all 1s linear; |
| -moz-transition: all 1s linear; |
| } |
| |
| #outer { |
| width: 100px; |
| } |
| |
| #outer.go { |
| width: 500px; |
| } |
| |
| #inner { |
| width: calc(50% + 10px); |
| } |
| |
| #innerTransition { |
| width: calc(10% + 10px); |
| } |
| |
| #innerTransition.go { |
| width: calc(100% - 10px); |
| } |
| |
| </style> |
| |
| This tests that calc() expressions depending on transitioning elements behave correctly. |
| <div class="outerBlock" id="outer"> |
| <div class="innerBlock" id="inner"></div> |
| <div class="innerBlock" id="innerTransition"></div> |
| </div> |
| <div id="result"></div> |
| |
| <script src="../../animations/resources/animation-test-helpers.js"></script> |
| <script> |
| |
| if (window.testRunner) |
| testRunner.dumpAsText(); |
| |
| const transitioningElements = ["outer", "innerTransition"]; |
| |
| expectedValues = [ |
| // time, element, property, expected-value, tolerance |
| [0.00, "inner", 'width', 60, 10], |
| [0.25, "inner", 'width', 110, 10], |
| [0.50, "inner", 'width', 160, 10], |
| [0.75, "inner", 'width', 210, 10], |
| [1.00, "inner", 'width', 260, 10], |
| |
| [0.00, "innerTransition", 'width', 20, 10], |
| [0.25, "innerTransition", 'width', 70, 10], |
| [0.50, "innerTransition", 'width', 165, 10], |
| [0.75, "innerTransition", 'width', 305, 10], |
| [1.00, "innerTransition", 'width', 490, 10], |
| ]; |
| |
| runTransitionTest(expectedValues, setupTest); |
| |
| |
| function setupTest() { |
| for (var i = 0; i < transitioningElements.length; i++) { |
| var element = document.getElementById(transitioningElements[i]); |
| element.className += " go"; |
| } |
| } |
| |
| |
| </script> |