Home > Web Front-end > JS Tutorial > body text

Detailed explanation of the use of JS animation timer

php中世界最好的语言
Release: 2018-05-03 15:21:54
Original
1491 people have browsed it

This time I will bring you a detailed explanation of the use of JS animation timer. What are the precautions when using JS animation timer? The following is a practical case, let’s take a look.

Broadly speaking: All visual presentations changed through js are called animations; for example, buttons, links and other elements Interactive feedback.

In a narrow sense: the visual animation effect produced by continuously calling js functions through timers to change element attributes.

Timer

Timer is the core technology of JavaScript animation;

setTimeout(), setInterval() are well known and often used in the past;

Usually they do something auxiliary and icing on the cake;

Careful people may find a phenomenon, switching from other tabs to the page with loop animation will cause lag and rapid frame switching;

The problem lies in their internal operating mechanism;

Understand setTimeout

It is recommended to use the function form for the first parameter, the string form will be parsed twice, and eval is the same Question;

More than two parameters, there can be more, see example 1;

This points to the problem, see example 2;

The return value is an integer;

clearTimeout(timer) cancels the timer;

setInterval, clearInterval are the same as above;

Example 1:

setTimeout(function(a,b){ 
 console.log(a+b); 
},1000,1,1);
Copy after login

Example 2:

var a = 0;
function foo(){
 console.log(this.a);
};
var obj = {
 a : 2,
 foo:foo
}
setTimeout(obj.foo,100);
Copy after login

Running mechanism

Example:

setTimeout(function(){ 
 console.log(1); 
}); 
console.log(0);
Copy after login

Reason: Join the queue and block execution.

setTimeout legend:

setInterval legend:

##Existence is reasonable

Parent-child element event bubbles, the parent element needs to be executed first, see example 3;

User-defined

callback function, usually triggered before the browser's default action, see example 4;

Example 3:

<p id="myp" style="height: 100px;width: 100px;background-color: pink;"></p>
<script>
myp.onclick = function(){
 setTimeout(function(){
  alert(0);
 })
}
document.onclick = function(){
 alert(1);
}
</script>
Copy after login
Example 4:

<input type="text" id="myInput">
<script>
myInput.onkeypress = function(event) {
 setTimeout(function(){
  myInput.value = myInput.value.toUpperCase();
 });
}
</script>
Copy after login
Get to know requestAnimationFrame

The usage is similar to setTimeout, except that no time parameter is required;

The mechanism is completely different:

1, setTimeout is an asynchronous operation and is added to the task queue (event loop). When the synchronization code in the js engine thread is executed, it will be taken out from the task queue for execution;

2. raf is an interface developed specifically for animation by user agents (browsers). The user agent will update animation frames at an appropriate frequency (generally the same as the monitor refresh frequency, 1000/60ms), and will stop frame updates on hidden or inactive pages. , save CPU resources;

3, raf example

raf is simple and compatible

window.requestAnimFrame = (function(){ 
 return window.requestAnimationFrame || 
   window.webkitRequestAnimationFrame ||   
   window.mozRequestAnimationFrame || 
   function( callback ){  
    window.setTimeout(callback, 1000 / 60);
    };
  })();
Copy after login

I believe you have mastered the method after reading the case in this article , for more exciting content, please pay attention to other related articles on the php Chinese website!

Recommended reading:

Detailed explanation of Angular Component use cases

Detailed explanation of third-party UI framework and control usage steps in Angular

The above is the detailed content of Detailed explanation of the use of JS animation timer. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!