ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScriptバッファモーション実装方法(2例)_JavaScriptスキル

JavaScriptバッファモーション実装方法(2例)_JavaScriptスキル

WBOY
WBOYオリジナル
2016-05-16 15:21:071186ブラウズ

この記事の例では、JavaScript のバッファーモーションの実装方法を説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

実装原理: (目標距離 - 現在の距離) / 基本 = 速度 (距離が長いほど速度は小さくなり、距離と速度は反比例します)

コードをコピー コードは次のとおりです:
(500 - oDiv.offsetLeft) / 7 = iSpeed;

注: : 計算された速度に小数が含まれる場合、四捨五入する必要があります。

コードをコピーします コードは次のとおりです。
(500 - oDiv.offsetLeft) / 7 = iSpeed; = iSpeed>0? Math.ceil(iSpeed):Math.floor(iSpeed);

例 1: スライダー バッファーの移動

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>缓冲运动</title>
<style>
#div1{ width:100px; height:100px; background:red; position:absolute; top:50px; left:0;}
span{ width:1px; height:300px; background:black; position:absolute; left:300px; top:0; display:block;}
</style>
<script>
window.onload = function()
{
 var oBtn = document.getElementById('btn1');
 var oDiv = document.getElementById('div1');
 oBtn.onclick = function()
 {
  startMove(oDiv, 300);
 };
};
var timer = null;
function startMove(obj, iTarget)
{
 clearInterval(timer);
 timer = setInterval(function(){
  var iSpeed = (iTarget - obj.offsetLeft)/8;
  iSpeed = iSpeed>0&#63;Math.ceil(iSpeed):Math.floor(iSpeed);
  if(iTarget==obj.offsetLeft){
   clearInterval(timer);
  }else{
   obj.style.left = obj.offsetLeft + iSpeed + 'px';
  }
 }, 30);
}
</script>
</head>
<body>
<input id="btn1" type="button" value="移动" />
<div id="div1"></div>
<span></span>
</body>
</html>

例 2: サイドバーのスライド

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>侧边栏滑动</title>
<style>
#div1{ width:100px; height:100px; background:red; position:absolute; right:0; top:0;}
</style>
<script>
window.onload = window.onscroll = function()
{
 var oDiv = document.getElementById('div1');
 var iScrollTop = document.documentElement.scrollTop || document.body.scrollTop;
 var clientHeight = document.documentElement.clientHeight;
 var iH = (clientHeight - oDiv.offsetHeight)/2 + iScrollTop;
 //oDiv.style.top = iH + 'px';
 startMove(oDiv, parseInt(iH));
};
var timer = null;
function startMove(obj, iTarget)
{
 clearInterval(timer);
 timer = setInterval(function(){
  var iSpeed = (iTarget - obj.offsetTop) / 8;
  iSpeed = iSpeed>0&#63;Math.ceil(iSpeed):Math.floor(iSpeed);
  if(obj.offsetTop == iTarget){
   clearInterval(timer);
  }else{
   obj.style.top = obj.offsetTop + iSpeed + 'px';
  }
 }, 30);
}
</script>
</head>
<body style="height:2000px;">
<div id="div1"></div>
</body>
</html>

JavaScript モーション エフェクトに関連するその他のコンテンツについては、このサイトの特別トピック「 JavaScript モーション エフェクトとテクニックの概要

を参照してください。

この記事が JavaScript プログラミングのすべての人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。