92 lines
3.3 KiB
HTML
92 lines
3.3 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
|
|
<html lang="en">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<title>Dynamic Keyframes test</title>
|
|
<style type="text/css" media="screen">
|
|
.box {
|
|
position: absolute;
|
|
left: 0;
|
|
top: 100px;
|
|
height: 100px;
|
|
width: 100px;
|
|
background-color: blue;
|
|
-webkit-animation-duration: 1s;
|
|
-webkit-animation-timing-function: linear;
|
|
}
|
|
#box2 { top: 210px; }
|
|
#box3 { top: 320px; }
|
|
</style>
|
|
<script src="resources/animation-test-helpers.js" type="text/javascript" charset="utf-8"></script>
|
|
<script type="text/javascript" charset="utf-8">
|
|
|
|
const expectedValues = [
|
|
// [animation-name, time, element-id, property, expected-value, tolerance]
|
|
["anim1", 0.3, "box1", "left", 100, 1],
|
|
["anim1", 0.7, "box1", "left", 200, 1],
|
|
["anim2", 0.3, "box2", "left", 100, 1],
|
|
["anim2", 0.7, "box2", "left", 200, 1],
|
|
];
|
|
|
|
function addKeyframes() {
|
|
var style = document.createElement('style');
|
|
document.head.appendChild(style);
|
|
var keyframes =
|
|
"{\n" +
|
|
" from { left: 50px; }\n" +
|
|
" 20% { left: 100px; }\n" +
|
|
" 40% { left: 100px; }\n" +
|
|
" 60% { left: 200px; }\n" +
|
|
" 80% { left: 200px; }\n" +
|
|
" to { left: 300px; }\n" +
|
|
"}";
|
|
var box1Keyframes = "@-webkit-keyframes anim1 " + keyframes;
|
|
var box2Keyframes = "@-webkit-keyframes anim2 " + keyframes;
|
|
var box3Keyframes = "@-webkit-keyframes anim3 " + keyframes;
|
|
|
|
style.sheet.insertRule(box1Keyframes, 0);
|
|
var box2Index = style.sheet.insertRule(box2Keyframes, 0);
|
|
var box3Index = style.sheet.insertRule(box3Keyframes, 0);
|
|
|
|
var box1 = document.getElementById("box1");
|
|
var box2 = document.getElementById("box2");
|
|
var box3 = document.getElementById("box3");
|
|
|
|
box1.style.webkitAnimationName = 'anim1';
|
|
box2.style.webkitAnimationName = 'anim2';
|
|
box3.style.webkitAnimationName = 'anim3';
|
|
|
|
box2.addEventListener('webkitAnimationStart',
|
|
function() { style.sheet.removeRule(box2Index); }, true);
|
|
|
|
style.sheet.removeRule(box3Index);
|
|
|
|
runAnimationTest(expectedValues, () => {
|
|
setTimeout(() => {
|
|
document.getElementById("result").appendChild(document.createTextNode(`${!box3.getAnimations().length ? "PASS" : "FAIL"} - Animation is not running on box3.`));
|
|
})
|
|
});
|
|
}
|
|
|
|
window.addEventListener('DOMContentLoaded', addKeyframes, false);
|
|
|
|
</script>
|
|
</head>
|
|
<body>
|
|
This test performs an animation of the left property. It should stop for 100ms at 100px and 200px
|
|
We test for those values 50ms after it has stopped at each position. The animations for the three
|
|
boxes are inserted by JavaScript. The first box's keyframes remain in the stylesheet. The second
|
|
box's keyframes are removed after its animation starts (but it should animate). The third box's
|
|
keyframes are removed before its animation starts, and it should not animate.
|
|
<div class="box" id="box1">
|
|
</div>
|
|
<div class="box" id="box2">
|
|
</div>
|
|
<div class="box" id="box3">
|
|
</div>
|
|
<div id="result">
|
|
</div>
|
|
</body>
|
|
</html>
|