웹 전단 - js 오리지널 애니메이션
下面的代码是修改一个盒子的 left
相当于修改这个盒子的位置, 所以盒子需要进行绝对定位
var btn = document.getElementById('btn');
var box = document.getElementById('box');
//
var begin = 0;
//
var end = 600;
//
var speed = 5;
//
var timer = null;
btn.onclick = function() {
clearInterval(timer);
timer = setInterval(function(){
begin += speed;
obj.style.left = begin + 'px';
if(begin >= target) {
box.style.left = target + 'px';
clearInterval(timer);
}
}, 50)
}
개선된 코드는 주로 시작 위치
offsetLeft
를 사용하여 개선했다var btn = document.getElementById('btn');
var box = document.getElementById('box');
var timer = null;
var target = 600;
var speed = 5;
btn.onclick = function(){
clearInterval(timer);
timer = setInterval(function(){
begin = box.offsetLeft;
begin += speed ;
box.style.left = begin + 'px'
if(begin >= target) {
box.style.left = target+'px';
clearInterval(timer);
}
},50)
}
봉인 등속 애니메이션 함수
//
// obj: dom
// target :
// speed :
function constant(obj,target,speed) {
clearInterval(obj.timer);
var myspeed = target > obj.offsetLeft ? speed : -speed;
obj.timer = setInterval(function(){
obj.style.left = obj.offsetLeft + myspeed + 'px';
if (Math.abs(obj.offsetLeft - target) < speed) {
obj.style.left = target + 'px';
clearInterval(obj.timer);
}
},20)
}
( - ) / =
에서 이 속도는 매번 줄어든다.간단한 부드러운 애니메이션 함수 라이브러리 봉인
* {
margin: 0;
padding: 0;
}
.box {
position: absolute;
width: 100px;
height: 100px;
background-color: #0094ff;
}
window.onload = function() {
var btn = document.getElementById('btn');
var back = document.getElementById('goback');
var box = document.getElementById('box');
btn.onclick = function() {
move(box, 400);
}
back.onclick = function() {
move(box, 0)
}
function move(obj, target) {
clearInterval(obj.timer);
obj.timer = setInterval(function() {
var begin = obj.offsetLeft;
var speed = (target - begin) * 0.2;
speed = target > begin ? Math.ceil(speed) : Math.floor(speed);
obj.style.left = begin + speed + 'px';
if (target == begin) {
clearInterval(obj.timer);
}
}, 50)
}
}
여기서 이 두 가지 간단한 애니메이션의 실현을 말하자면 사실 다수치 애니메이션(즉, 여러 개의 속성을 동시에 바꾸는 것이다. 예를 들어 위치와 넓이를 바꾸는 것이다)이 있다. 여기서 소개하지 않고 다음 편을 기대하자.
질문 있음@me
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.