오늘은 간단하게 js 모션 애니메이션을 배우고, 경험을 기록해서 모두와 공유했습니다.
제가 정리한 결과는 다음과 같습니다.
지식 1: 스피드 애니메이션.
1. 첫 번째 단계는 스피드 모션 애니메이션을 구현하고 함수를 캡슐화하는 것입니다. 사용된 지식은 setInterval(function(){
입니다.oDiv.style.left=oDiv.offsetLeft 10 "px";
},30).
여기서 offsetLeft를 사용한 이유에 대해 구체적으로 검색해 본 결과 유용한 정보는 다음과 같습니다.
a.offsetLeft와 left의 유사점은 상위 노드를 기준으로 하위 노드의 왼쪽 위치를 나타낸다는 것입니다.
b. 그러나 left는 읽고 쓸 수 있지만 offsetLeft는 읽기 전용입니다.
c.그리고 offsetLeft에는 단위가 없으며 하위 노드의 위치를 얻을 때 그 뒤에 px가 없습니다.
http://blog.163.com/hongshaoguoguo@126/blog/static/18046981201372885729561/님 덕분에 몇 가지 추가 지식을 얻었습니다.
2. 이동 노드를 중지합니다. 여기서는 if 문을 사용하여 확인합니다. offsetLeft==0,clearInterval(타이머)인 경우 여기의 타이머는 미리 초기화된 다음 이전 모션 애니메이션을 할당해야 합니다. 그것에.3. 여기에 문제가 있습니다. 동작이 끝나기 전에 다시 동작이 시작되면 동작 전체가 시작되기 전에 ClearInterval(타이머)을 사용하는 한 동작 속도가 누적됩니다. 괜찮을 거예요.
4. 이동 및 제거 효과를 설정하고, 이동에 대한 매개변수를 설정합니다. 하나는 속도이고 다른 하나는 목표 위치 iTarget의 위치로도 속도를 판단할 수 있음을 발견했습니다. 따라서 하나의 매개변수만 필요합니다.
지식 2: 투명도 변화
1. 실제로 ITarget의 값이 투명성이라는 점과 프로세스가 여전히 타이머를 지운 다음 타이머를 열어 판단하는 등의 점을 제외하면 이전과 거의 동일합니다.2. 매개변수 알파 = 투명도를 정의합니다. 타이머는 다음과 같이 작성되어야 합니다.
oDiv.style.filter='alpha(opacity:' alpha ')'; //매우 중요한 메소드이므로 이렇게 작성하고 있으니 참고해주세요
oDiv.style.opacity=alpha/100; //100으로 나누는 것을 잊지 않도록 주의하세요
지식 3: 버퍼링 동작
1. 버퍼링 모션은 거리가 멀수록 속도가 빨라지고, 거리가 가까울수록 속도가 작아지는 것을 의미합니다. 즉, 속도는 거리와 관련이 있습니다.2. 위의 설명에 따라 속도를 처음에는 0으로 재정의했지만 지금은 다음과 같습니다.
이러한 방식으로 속도가 모두 정수이고 임계값에서 모두 0임을 완전히 보장합니다.
지식 4: 다중 객체 모션
1. 먼저 모든 객체를 가져와서 배열을 만든 다음 for 루프를 사용하여 수행하고(이 방법은 얼마나 고전적인지!) for 루프에 노드 이벤트를 추가한 다음 이를 사용하여 함수, 예: startMove(this, iTarget), startMove(obj, iTarget) 함수를 정의할 때.
2. 현재 너비 offsetWidth를 가져올 때 obj 값을 사용해야 합니다.
3. 마우스가 매우 빠르게 움직이면 노드의 너비가 원래 상태로 복원되지 않습니다. 이는 타이머가 모든 사람에게 공통된 타이머이기 때문입니다. 이전 노드가 반환되기 전에 다음 노드가 타이머를 지웠습니다. 해결책은 각 노드에 인덱스를 추가하는 것입니다. 이는 위의 for 루프에 aDiv[i].timer=null;을 추가한 다음 정의된 함수에서 타이머를 obj.timer로 바꾸는 것입니다. 그러므로 공유 타이머에 어떤 일이 일어날 수 있다는 사실에 주의해야 합니다.
4. 투명도의 움직임에서는 알파가 속도를 대체하지만 타이머를 공유하지 않더라도 여러 개체의 움직임에 문제가 발생합니다. 이는 알파가 공유되어 각 개체가 서로 찢어지기 때문입니다. 해결책은 타이머와 같은 for 루프의 각 노드에 알파 할당과 같이 사용하는 것입니다.
요약: 충돌을 해결하려면 초기화하거나 개인화하세요.
지식 5. 스타일 얻기
1. 노드의 너비를 변경하는 타이머(이전용은 크게, 제거용은 작게)에서 노드에 테두리를 추가하면 입주할 때는 대상 노드보다 작아지고, 노드보다 커집니다. 이사할 때 대상 노드. 너비 패딩 스크롤 막대(스크롤 막대) 테두리에 주의하세요. 그 이유는 각 오프셋이 테두리*2를 증가시키기 때문입니다(타이머에서 값이 매번 감소함).
2. 위의 문제를 해결하는 방법은 width를 line으로 작성하고 offsetLeft 대신에parseInt(oDiv.style.width)를 사용하는 것이다. 링크 스타일:
함수 getStyle(obj,attr){
if(obj.currentStyle){
return obj.currentStyle[attr] //즉, 브라우저
}
그밖에{
return getComputerStyle(obj,false)[attr] //다른 브라우저
}
}
3. 글꼴 크기의 경우 js에서 글꼴 크기를 쓰는 방법은 한 가지뿐입니다.
지식 6: 모든 속성 값
1. 모든 오프셋 유형에는 작은 버그가 있습니다. getStyle 함수를 사용해야 합니다. 이 함수는 주로 parsInt()와 함께 사용되며 일반적으로 변수에 저장됩니다.
2. style.width 작성시 style['width']도 작성할 수 있습니다.
3. 여러 객체의 속성 값을 조정하기 위해 스타일을 매개변수로 캡슐화하여 다중 객체 속성 함수에 세 가지 속성 값(obj, attr, iTarget)이 포함되도록 할 수 있습니다.
4. 위의 모션 프레임은 투명도가 소수이기 때문에 투명도 변경에 적합하지 않습니다. 두 가지 이유 때문에 첫 번째는parseInt이고 두 번째는 attr=...px입니다. 여기서는 If 해석을 사용하여 처리할 수 있습니다. 투명도를 별도로 설정하고,parseInt를parseFloat로 바꾸고, px를 제거하세요.
5. 컴퓨터 자체에 버그가 있어서 0.07*100이 7이 아니어서 반올림된 값인 Math.round()라는 함수를 소개합니다.
지식 7: 체인 모션
1. move.js 프레임워크를 소개합니다.
2. 콜백 함수 fn()을 전달하고 if를 사용하여 fn()이 있는지 판단한 다음 fn()을 실행합니다.
지식 8: 동시 이동
1. 동시 모션을 제어하기 위해 두 개의 모션 함수를 작성하면 기능 커버리지가 발생합니다.
2. json의 지식 포인트를 사용합니다. json의 루프는 for(i in json)를 사용하며 모션 함수의 매개변수는 obj, json, fn입니다.
3. 더 이상 iTarget 값이 없으며 json[attr]로 대체됩니다.
이 글을 마치며 모두 마음에 드셨으면 좋겠습니다. 또한 JS 모션 애니메이션을 배우는 모든 분들에게 도움이 되기를 바랍니다.

Node.js는 크림 덕분에 효율적인 I/O에서 탁월합니다. 스트림은 메모리 오버로드를 피하고 큰 파일, 네트워크 작업 및 실시간 애플리케이션을위한 메모리 과부하를 피하기 위해 데이터를 점차적으로 처리합니다. 스트림을 TypeScript의 유형 안전과 결합하면 Powe가 생성됩니다

파이썬과 자바 스크립트 간의 성능과 효율성의 차이는 주로 다음과 같이 반영됩니다. 1) 해석 된 언어로서, 파이썬은 느리게 실행되지만 개발 효율이 높고 빠른 프로토 타입 개발에 적합합니다. 2) JavaScript는 브라우저의 단일 스레드로 제한되지만 멀티 스레딩 및 비동기 I/O는 Node.js의 성능을 향상시키는 데 사용될 수 있으며 실제 프로젝트에서는 이점이 있습니다.

JavaScript는 1995 년에 시작하여 Brandon Ike에 의해 만들어졌으며 언어를 C로 실현했습니다. 1.C Language는 JavaScript의 고성능 및 시스템 수준 프로그래밍 기능을 제공합니다. 2. JavaScript의 메모리 관리 및 성능 최적화는 C 언어에 의존합니다. 3. C 언어의 크로스 플랫폼 기능은 자바 스크립트가 다른 운영 체제에서 효율적으로 실행하는 데 도움이됩니다.

JavaScript는 브라우저 및 Node.js 환경에서 실행되며 JavaScript 엔진을 사용하여 코드를 구문 분석하고 실행합니다. 1) 구문 분석 단계에서 초록 구문 트리 (AST)를 생성합니다. 2) 컴파일 단계에서 AST를 바이트 코드 또는 기계 코드로 변환합니다. 3) 실행 단계에서 컴파일 된 코드를 실행하십시오.

Python 및 JavaScript의 미래 추세에는 다음이 포함됩니다. 1. Python은 과학 컴퓨팅 분야에서의 위치를 통합하고 AI, 2. JavaScript는 웹 기술의 개발을 촉진하고, 3. 교차 플랫폼 개발이 핫한 주제가되고 4. 성능 최적화가 중점을 둘 것입니다. 둘 다 해당 분야에서 응용 프로그램 시나리오를 계속 확장하고 성능이 더 많은 혁신을 일으킬 것입니다.

개발 환경에서 Python과 JavaScript의 선택이 모두 중요합니다. 1) Python의 개발 환경에는 Pycharm, Jupyternotebook 및 Anaconda가 포함되어 있으며 데이터 과학 및 빠른 프로토 타이핑에 적합합니다. 2) JavaScript의 개발 환경에는 Node.js, VScode 및 Webpack이 포함되어 있으며 프론트 엔드 및 백엔드 개발에 적합합니다. 프로젝트 요구에 따라 올바른 도구를 선택하면 개발 효율성과 프로젝트 성공률이 향상 될 수 있습니다.

예, JavaScript의 엔진 코어는 C로 작성되었습니다. 1) C 언어는 효율적인 성능과 기본 제어를 제공하며, 이는 JavaScript 엔진 개발에 적합합니다. 2) V8 엔진을 예를 들어, 핵심은 C로 작성되며 C의 효율성 및 객체 지향적 특성을 결합하여 C로 작성됩니다.

JavaScript는 웹 페이지의 상호 작용과 역학을 향상시키기 때문에 현대 웹 사이트의 핵심입니다. 1) 페이지를 새로 고치지 않고 콘텐츠를 변경할 수 있습니다. 2) Domapi를 통해 웹 페이지 조작, 3) 애니메이션 및 드래그 앤 드롭과 같은 복잡한 대화식 효과를 지원합니다. 4) 성능 및 모범 사례를 최적화하여 사용자 경험을 향상시킵니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는
