国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

JS怎樣讓元素沿著拋物線軌跡運動

來源:懂視網 責編:小采 時間:2020-11-27 19:54:58
文檔

JS怎樣讓元素沿著拋物線軌跡運動

JS怎樣讓元素沿著拋物線軌跡運動:這次給大家帶來JS怎樣讓元素沿著拋物線軌跡運動,JS讓元素沿著拋物線軌跡運動的注意事項有哪些,下面就是實戰案例,一起來看一下。 js實現小球拋物軌跡運動的大致思路: 1、用setInterval()方法,進行間隔性刷新,更新小球位置,以實現動態效果2、繪制小球和
推薦度:
導讀JS怎樣讓元素沿著拋物線軌跡運動:這次給大家帶來JS怎樣讓元素沿著拋物線軌跡運動,JS讓元素沿著拋物線軌跡運動的注意事項有哪些,下面就是實戰案例,一起來看一下。 js實現小球拋物軌跡運動的大致思路: 1、用setInterval()方法,進行間隔性刷新,更新小球位置,以實現動態效果2、繪制小球和

這次給大家帶來JS怎樣讓元素沿著拋物線軌跡運動,JS讓元素沿著拋物線軌跡運動的注意事項有哪些,下面就是實戰案例,一起來看一下。

js實現小球拋物軌跡運動的大致思路:

1、用setInterval()方法,進行間隔性刷新,更新小球位置,以實現動態效果
2、繪制小球和運動區域,運動區域可通過flex布局實現垂直居中
3、用物理公式S(y)=1/2*g*t*t,S(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。計算運動軌跡時,可用變量自增計算setInterval調用次數,每次是0.1s,這樣可計算總時間。代碼如下:

<!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中的canvas繪制小球和運動區域

思路:采用canvas繪制小球,由于小球不能通過top和left移動,因此它需要每次調用都要用clearRect清空畫布,然后繪制計算后位置的小球。代碼如下:

<!DOCTYPE>
<html>
<head>
 <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
 <title></title>
 <style type="text/css">
 body {
 min-height: 100vh;
 display: flex;
 justify-content: center;
 align-items: center;
 }
 #myCanvas {
 box-shadow: -2px -2px 2px #efefef,5px 5px 5px #b9b9b9;
 }
 </style>
</head>
<body>
<canvas id="myCanvas" width="600px" height="600px"></canvas>
<script type="text/javascript">
var x=50,y=50,k=1;
var c=document.getElementById("myCanvas");
var cxt=c.getContext("2d");
cxt.fillStyle="#e0e0e0";
cxt.beginPath();
cxt.arc(x,y,30,0,Math.PI*2,true);
cxt.closePath();
cxt.fill();
t=setInterval("parabola()",100);
function parabola(){
 cxt.clearRect(0,0,600,600);//清除原始圖形
 cxt.beginPath();
 x=50+0.1*k*4*100;y=50+9.8*0.1*k*0.1*k*1/2*100;
 cxt.arc(x,y,30,0,Math.PI*2,true);
 cxt.closePath();
 cxt.fill();
 k++;
 if(x>520||y>520){
 clearInterval(t);
 }
}
</script>
</body>
</html>

兩個方式都能實現,計算的方式都是一樣的,只是方式不同。第一個是偏css,采用了border-radius和動態修改DOM,第二個采用canvas繪制圖形,繪制過程要好好研究。

相信看了本文案例你已經掌握了方法,更多精彩請關注Gxl網其它相關文章!

推薦閱讀:

移動組件庫cube-ui使用詳解

JS的class、構造函數、工廠函數使用方法

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

JS怎樣讓元素沿著拋物線軌跡運動

JS怎樣讓元素沿著拋物線軌跡運動:這次給大家帶來JS怎樣讓元素沿著拋物線軌跡運動,JS讓元素沿著拋物線軌跡運動的注意事項有哪些,下面就是實戰案例,一起來看一下。 js實現小球拋物軌跡運動的大致思路: 1、用setInterval()方法,進行間隔性刷新,更新小球位置,以實現動態效果2、繪制小球和
推薦度:
標簽: 運動 元素 js
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 欧美性俄罗斯18精品 | 国产欧美在线观看视频 | 亚欧美综合 | 在线欧美日韩精品一区二区 | 欧美日韩色片 | 无遮挡在线观看 | 欧美日韩中 | 日韩欧美高清 | 日本a级精品一区二区三区 日本不卡视频一区二区三区 | 久久www免费人成_看片美女图 | 日韩第四页 | 边做边爱边吃奶叫床的视频 | 国产精品三级一区二区 | 一级毛片视频播放 | 多人伦精品一区二区三区视频 | 日韩精品一区二区三区不卡 | 一区二区三区四区亚洲 | 亚洲一级二级 | 亚洲国产成人久久午夜 | 日本不卡一区二区三区 最新 | 国产成人精品免费视频大全可播放的 | 久久国产成人精品国产成人亚洲 | 青青青国产在线观看 | 精品1区2区3区| 五月激情综合 | 欧美日韩国产一区二区 | 精品免费在线 | 欧美日韩视频一区二区三区 | 欧美1页 | 91精品国产91久久久久久 | 一区高清 | 精品123区 | 不卡视频在线 | 欧日韩一区二区三区 | 欧美激情在线一区二区三区 | 青青国产成人久久91网站站 | 中文字幕va一区二区三区 | 欧美在线免费播放 | 精品久久久久久久中文字幕 | 欧美日韩亚洲一区二区三区 | 精品久久久久久综合日本 |