Source code
Revision control
Copy as Markdown
Other Tools
<!DOCTYPE html>
<html>
<!-- Submitted from TestTWF Paris -->
<head>
<style type="text/css">
* {
margin: 0;
padding: 0;
}
p {
clear: both;
margin: 10px 0;
}
/* The first test box has its vertical dimension is set to
some `vh` units. */
#testBoxWithVhOnly {
background: #F00;
width: 60px; height: 20vh;
float: left;
}
/* The second test box, with fixed height. */
#testBoxNotGrownHorizontallyByJS {
background: #F0F;
width: 20vh;
height: 60px;
float: left;
}
/* The third box, changed by using CSS transition. */
#testBoxWithTransition {
background: #FF0;
width: 20vh;
height: 40px;
float: left;
transition-property: width, height;
transition-duration: 0.3s;
transition-delay: 0;
}
/* The reference box, growing in both directions (height
by script, width by `vh` units. */
#referenceBoxGrownHorizontallyByJS {
background: #0F0;
width: 20vh;
height: 40px;
float: left;
}
</style>
</head>
<body>
<p>
All boxes should end up the same size. The green box is the reference one.
</p>
<div id="testBoxWithVhOnly"></div>
<div id="testBoxNotGrownHorizontallyByJS"></div>
<div id="testBoxWithTransition"></div>
<div id="referenceBoxGrownHorizontallyByJS"></div>
<script type="text/javascript">
'use strict';
function animate() {
var viewportHeight = document.documentElement.clientHeight;
var referenceDimension = Math.round(20 * viewportHeight / 100);
document.getElementById('referenceBoxGrownHorizontallyByJS')
.style['height'] = referenceDimension + "px";
if (referenceDimension < 60) {
setTimeout(animate, 20);
}
}
addEventListener('transitionend', event => {
if (event.propertyName == 'width') {
// Stop any further transitions.
testBoxWithTransition.style.transitionProperty = 'none';
parent.postMessage('transitionInIFrameEnded', '*');
}
}, false);
document.getElementById('testBoxWithTransition').style.height = "60px";
setTimeout(animate, 20);
parent.postMessage('frameLoaded', '*');
</script>
</body>
</html>