JS에서 포물선 궤적을 따라 요소를 이동시키는 방법

php中世界最好的语言
풀어 주다: 2018-04-14 11:19:32
원래의
2765명이 탐색했습니다.

이번에는 JS를 사용하여 요소를 포물선 궤적을 따라 이동하는 방법을 보여 드리겠습니다. JS에서 요소를 포물선 궤적을 따라 이동시키는 데 사용할 주의 사항은 무엇입니까? .

JS에서 작은 공의 포물선 궤적을 구현하는 일반적인 아이디어:

1. setInterval() 메소드를 사용하여 간격 새로고침을 수행하고 공 위치를 업데이트하여 동적 효과를 얻습니다setInterval()方法,进行间隔性刷新,更新小球位置,以实现动态效果
2、绘制小球和运动区域,运动区域可通过flex布局实现垂直居中
3、用物理公式S(y)=1/2*g*t*tS(x)=V(x)t来计算路径
现确定V(x)=4m/s,刷新的时间间隔设置为0.1s。原本px和米之间的转换,不同尺寸转换不同,本例采用17寸显示器,大约1px=0.4mm。但浏览器太小,因此只能模拟抛物线轨迹,本例将px和米之间缩成100倍。

第一种:通过border-radius绘制小球

思路:用border-radius: 50%绘制小球,给小球设置relative,每次计算小球当前位置,赋给top和left。计算运动轨迹时,可用变量自增计算setInterval2. 플렉스 레이아웃을 통해 공과 스포츠 영역을 수직으로 중앙에 배치할 수 있습니다. 3, 물리적 공식

S(y)=1/2*g*t*t

, S(x)=V(x)t를 사용하여 경로를 계산합니다이제 V(x)가 결정됩니다. =4m/s

, 새로 고침 간격은 0.1초로 설정됩니다. 원래 px와 미터 간의 변환은 크기에 따라 다릅니다. 이 예에서는 1px=0.4mm 정도인 17인치 모니터를 사용했습니다. 그러나 브라우저가 너무 작기 때문에 포물선 궤적만 시뮬레이션할 수 있습니다. 이 예에서는 px와 미터 사이의 거리가 100배로 줄어듭니다.

첫 번째 유형: 테두리 반경을 통해 공을 그립니다

아이디어: border-radius: 50%를 사용하여 공을 그리고 공을 기준으로 설정하고 매번 공의 현재 위치를 계산하여 상단과 왼쪽에 할당합니다. 모션 궤적을 계산할 때 변수를 증가시켜 setInterval 호출 횟수를 계산할 수 있으며, 각 시간은 0.1초이므로 총 시간을 계산할 수 있습니다. 코드는 다음과 같습니다:

<!DOCTYPE>
<html>
<head>
  <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
  <title></title>
  <style type="text/css">
  /*给body进行flex布局,实现垂直居中*/
  body {
  min-height: 100vh;/*高度适应浏览器高度*/
  display: flex;
  justify-content: center;/*水平居中*/
  align-items: center;/*垂直居中*/
    font-size: 20px;
    font-weight: bold;
  }
  /*设置运动区域*/
  #bg {
    width: 600px;
    height: 600px;
    border: 2px solid #e0e0e0;
    border-radius: 4px;/*给p设置圆角*/
    padding: 20px;
  }
  /*生成小球,并定义初始位置*/
  #ball {
    border-radius: 50%;/*可把正方形变成圆形,50%即可*/
    background: #e0e0e0;
    width: 60px;
    height: 60px;
    position: relative;
    top: 30px;
    left: 30px;
  }
  button {
    width: 80px;
    height: 30px;
    border-radius: 4px;
    color: #fff;
    background: #AA7ECC;
    font-size: 20px;
    font-weight: bold;
    margin-left: 20px;
  }
  </style>
</head>
<body>
<p id="bg">
  此时水平速度为:4<button onclick="start()">演示</button>
  <p id="ball"></p>
</p>
<script type="text/javascript">
function start(){
  var x,y,k=1,t;
  //x是水平方向移动路径;y是垂直方向的;k记录次数,可与0.1相乘得时间;t记录setInterval的返回id,用于clearInterval
  t = setInterval(function(){
  x = 30+0.1*k*4*100;
    //S(x)=S(0)+t*V(x),100是自定义的米到px转换数
    y = 30+1/2*9.8*0.1*k*0.1*k*100;//S(y)=S(0)+1/2*g*t*t
  var j = document.getElementById("ball");
    //通过修改小球的top和left,修改小球的位置
    j.style.top = y;
    j.style.left = x;
  k++;//每次调用,k自增,简化计算
  if(x>480||y>480){
  clearInterval(t);//小球达到边界时,清除setInterval
  }
  },100);//每0.1s调用一次setInterval的function
}
</script>
</body>
</html>
로그인 후 복사

두 번째 유형: 공과 스포츠 영역을 그리는 h5의 캔버스

아이디어: 공을 그리려면 캔버스를 사용하세요. 공은 위쪽과 왼쪽으로 이동할 수 없으므로 호출될 때마다 cleanRect를 사용하여 캔버스를 지운 다음 계산된 위치로 공을 그려야 합니다. 코드는 다음과 같습니다:

두 가지 방법 모두 구현할 수 있습니다. 계산 방법은 동일하지만 방법이 다릅니다. 첫 번째는
border-radius

를 사용하고 DOM을 동적으로 수정하는 CSS의 일부입니다. 두 번째는 캔버스를 사용하여 그래픽을 그리는 과정을 주의 깊게 연구해야 합니다. 🎜이 기사의 사례를 읽은 후 방법을 마스터했다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요! 🎜🎜추천 도서: 🎜🎜🎜모바일 컴포넌트 라이브러리 Cube-ui 사용에 대한 자세한 설명🎜🎜🎜🎜🎜JS 클래스, 생성자, 팩토리 함수 사용 방법🎜🎜🎜🎜

위 내용은 JS에서 포물선 궤적을 따라 요소를 이동시키는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!