当前位置:网站首页>JS slow motion animation principle teaching (super detail)
JS slow motion animation principle teaching (super detail)
2022-07-07 13:21:00 【Zhou million】
1、 Write first html and css style ,
<style>
* {
margin: 0;
padding: 0;
}
.box {
position: absolute;
width: 100px;
height: 100px;
background-color: pink;
}
.ha {
position: absolute;
top: 300px;
left: 400px;
width: 200px;
height: 200px;
background-color: purple;
color: aliceblue;
}
body {
height: 1000px;
font-size: 20px;
}
</style>
</head>
<body>
<div class="box">gump Move the box to 100</div>
<div class="gump">gump Move the box to 500</div>
The effect is shown in the figure : The important thing is to learn js technology , It doesn't matter whether the style is good-looking or not ~
2、 Next write js, I wrote it directly below , So it's no use load
3、 Encapsulate an animation function , Add click event , Call animation function in event , Click two boxes to realize gradient animation
4、 The explanation is super detailed , There are comments that need to be discussed ~
<script>
var box = document.querySelector('.box');
var gump = document.querySelector('.gump');
// Function encapsulates a gradient animation
function animate(obj, target) {
// Let there always be only one timer in the function
clearInterval(obj.timer);
obj.timer = window.setInterval(function() {
// If you reach the target position, stop ( Clear timer )
if (obj.offsetLeft == target) {
clearInterval(obj.timer)
}
// The timer is recalculated every time it is called step The length of , The target length remains unchanged , The current position is getting closer and closer to the target
// The absolute value of the difference between them is getting smaller and smaller , Reduce the length of each step in the interval , Realize the slowing effect
// First step :(500-100)/10 = 40 The second step :(500-140)/10 = 36 ......
var step = (target - obj.offsetLeft) / 10;
// If the step size is positive , Take a larger integer ; If the step size is negative , Take the smaller integer . The purpose is to take the larger absolute value
step > 0 ? step = Math.ceil((step)) : step = Math.floor(step);
// obj.style.left read-write , But you can only get the style in the line , So it's used to ” Write ” Excellent data
// obj.offsetLeft Only read , But he can read in-line patterns , embedded style , Outer chain style ,” read ” Excellent data
obj.style.left = obj.offsetLeft + step + 'px';
}, 20);
}var box1 = box.addEventListener('click', function() {
animate(gump, 100);})
var box2 = gump.addEventListener('click', function() {
animate(gump, 500);})
</script>
边栏推荐
- API query interface for free mobile phone number ownership
- ESP32系列专栏
- 简单好用的代码规范
- Why can basic data types call methods in JS
- COSCon'22 社区召集令来啦!Open the World,邀请所有社区一起拥抱开源,打开新世界~
- 共创软硬件协同生态:Graphcore IPU与百度飞桨的“联合提交”亮相MLPerf
- RecyclerView的数据刷新
- MongoDB内部的存储原理
- Shortcut key of Bash
- Practical example of propeller easydl: automatic scratch recognition of industrial parts
猜你喜欢
随机推荐
Practical case: using MYCAT to realize read-write separation of MySQL
Vscade editor esp32 header file wavy line does not jump completely solved
【学习笔记】AGC010
工具箱之 IKVM.NET 项目新进展
About how appium closes apps (resolved)
Why can basic data types call methods in JS
[untitled]
Initialization script
ESP32系列专栏
Smart cloud health listed: with a market value of HK $15billion, SIG Jingwei and Jingxin fund are shareholders
Star Enterprise Purdue technology layoffs: Tencent Sequoia was a shareholder who raised more than 1billion
存储过程的介绍与基本使用
User management summary of mongodb
Cinnamon Applet 入门
JNA学习笔记一:概念
Scrapy教程经典实战【新概念英语】
Mongodb command summary
Go language learning notes - structure
Sample chapter of "uncover the secrets of asp.net core 6 framework" [200 pages /5 chapters]
【学习笔记】线段树选做