最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript實現(xiàn)窗口抖動效果

 更新時間:2016年10月19日 17:07:08   投稿:mrr  
抖動效果在各大網(wǎng)頁上都常遇到,這篇文章主要介紹了JavaScript實現(xiàn)窗口抖動效果的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下

原理介紹

  抖動其實是往復(fù)運動的一種特殊形式,只不過往復(fù)運動是一種無摩擦力的無限運動,且以速度為參照依據(jù);而抖動以位置作為參照依據(jù),最終停在起始點

  在網(wǎng)頁中最常見的一種抖動效果應(yīng)該是窗口抖動提示了

  抖動元素從起始點開始,先向右移動最大距離len,然后移動到對稱的左邊位置;然后再向右移動稍微小一點的距離,再移動到對稱的左邊位置;以此循環(huán),最終元素停止在起始點

代碼實現(xiàn)

  抖動在代碼實現(xiàn)上,無非就是通過定時器,每隔一段時間讓left或top值進行變化

  在運動實現(xiàn)中,有兩種距離變化的思路

思路一

div.style.left = div.offsetLeft + value;

  每次都獲取元素的當前樣式,再與變化的value值進行運算

思路二

left = div.offsetLeft;
......
div.style.left = left + value;

  在定時器開啟之前,獲取元素的初始樣式,再與變化的value值進行運算

  從抖動實現(xiàn)上來說,使用第二種方法,把距離變化完全交給value值變化來實現(xiàn)較為簡單

  所以,代碼實現(xiàn)的關(guān)鍵就是了解value是如何變化的

  假設(shè)最遠距離為目標target,同方向的距離間隔為步長step。如果用數(shù)字更直觀的表示,value的值類似于4、-4、2、-2、0。所以還需要一個變量dir來控制起始抖動方向,定時器每運動一次都要對dir進行更改

//定時器開啟前的變量聲明
dir = 1;
step = 0;
left = div.offsetLeft
//定時器里面的代碼
value = dir*(target - step);
if(step >= target){
step = target
}
div.style.left = left + value + 'px';
if(dir === -1){
step++; 
}
dir = -dir;

  將抖動效果封裝為shakeMove.js

function getCSS(obj,style){
if(window.getComputedStyle){
return getComputedStyle(obj)[style];
}
return obj.currentStyle[style];
} 
function shakeMove(json){
//聲明要進行抖動的元素
var obj = json.obj;
//聲明元素抖動的最遠距離
var target = json.target;
//默認值為20
target = Number(target) || 20;
//聲明元素的變化樣式
var attr = json.attr;
//默認為'left' 
attr = attr || 'left'; 
//聲明元素的起始抖動方向
var dir = json.dir;
//默認為'1',表示開始先向右抖動
dir = Number(dir) || '1';
//聲明元素每次抖動的變化幅度
var stepValue = json.stepValue;
stepValue = Number(stepValue) || 2;
//聲明回調(diào)函數(shù) 
var fn = json.fn;
//聲明步長step
var step = 0;
//保存樣式初始值
var attrValue = parseFloat(getCSS(obj,attr));
//聲明參照值value
var value;
//清除定時器
if(obj.timer){return;}
//開啟定時器
obj.timer = setInterval(function(){
//抖動核心代碼
value = dir*(target - step);
//當步長值大于等于最大距離值target時
if(step >= target){
step = target
}
//更新樣式值
obj.style[attr] = attrValue + value + 'px';
//當元素到達起始點時,停止定時器
if(step == target){
clearInterval(obj.timer);
obj.timer = 0;
//設(shè)置回調(diào)函數(shù)
fn && fn.call(obj); 
} 
//如果此時為反向運動,則步長值變化
if(dir === -1){
step = step + stepValue; 
}
//改變方向
dir = -dir; 
},50); 
}

實例應(yīng)用

  下面利用封裝的shakeMove來實現(xiàn)一些簡單的抖動應(yīng)用

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
.test{
height: 50px;
width: 50px;
position: absolute;
top: 50px;
} 
</style>
</head>
<body>
<div id="box">
<div class="test" style="left:10px;background:lightblue"></div>
<div class="test" style="left:70px;background:lightgreen"></div>
<div class="test" style="left:130px;background:pink"></div>
<div class="test" style="left:190px;background:lightcoral"></div>
<div class="test" style="left:250px;background:orange"></div>
</div>
<script src="http://files.cnblogs.com/files/xiaohuochai/shakeMove.js"></script>
<script>
var aDiv = box.getElementsByTagName('div');
for(var i = 0; i < aDiv.length; i++){
aDiv[i].onmouseover = function(){
shakeMove({obj:this,attr:'top'});
}
}
</script>
</body>
</html>

以上所述是小編給大家介紹的JavaScript實現(xiàn)窗口抖動效果,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 微信公眾號平臺接口開發(fā) 獲取access_token過程解析

    微信公眾號平臺接口開發(fā) 獲取access_token過程解析

    這篇文章主要介紹了微信公眾號平臺接口開發(fā) 獲取access_token過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • 詳解JVM系列之內(nèi)存模型

    詳解JVM系列之內(nèi)存模型

    JVM是一種用于計算設(shè)備的規(guī)范,它是一個虛構(gòu)出來的機器,是通過在實際的計算機上仿真模擬各種功能實現(xiàn)的。JVM的內(nèi)存區(qū)域可以被分為:線程、棧、堆、靜態(tài)方法區(qū)。本文將介紹JVM的內(nèi)存模型,感興趣的小伙伴,可以參考下
    2021-06-06
  • 理解JavaScript中的對象 推薦

    理解JavaScript中的對象 推薦

    JavaScript有一種object數(shù)據(jù)類型,但是這種對象不同于c#或vb中的對象,在c#中,我們通過類創(chuàng)建一個對象,一個類相當于創(chuàng)建對象的模板,定義了對象的屬性和方法,這些對象和方法將永遠固定,我們不能在運行時不能增加對象的屬性和方法。
    2011-01-01
  • JavaScript獲取瀏覽器信息的方法

    JavaScript獲取瀏覽器信息的方法

    這篇文章主要介紹了JavaScript獲取瀏覽器信息及獲取瀏覽器地址和參數(shù)的方法的相關(guān)資料,需要的朋友可以參考下
    2015-11-11
  • javascript中關(guān)于break,continue的特殊用法與介紹

    javascript中關(guān)于break,continue的特殊用法與介紹

    javascript大家所熟知中的for是一個循環(huán)體,循環(huán)體其中的break和continue也是大家都比較熟悉的功能,相信大家對它們的用法不會陌生,本文不是介紹其功能,本文假設(shè)你已經(jīng)熟悉break和continue的語意和用法
    2012-05-05
  • JavaScript檢測字符串中是否含有html標簽實現(xiàn)方法

    JavaScript檢測字符串中是否含有html標簽實現(xiàn)方法

    這篇文章主要介紹了JavaScript檢測字符串中是否含有html標簽實現(xiàn)方法,本文直接給出實現(xiàn)代碼,需要的朋友可以參考下
    2015-07-07
  • zTree插件之單選下拉菜單實例代碼

    zTree插件之單選下拉菜單實例代碼

    zTree插件之單選下拉菜單實例代碼。需要的朋友可以過來參考下,希望對大家有所幫助
    2013-11-11
  • 移動端js圖片查看器

    移動端js圖片查看器

    這篇文章主要為大家詳細介紹了js圖片查看器的制作方法,可以實現(xiàn)圖片的滑動等效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • javascript 客戶端驗證上傳圖片的大?。嫒軮E和火狐)

    javascript 客戶端驗證上傳圖片的大?。嫒軮E和火狐)

    做web開發(fā)的哥們都會遇到批量上傳圖片的需求,相信大家都會遇到這樣的問題,當選擇好要上傳的圖片,提交服務(wù)器后,發(fā)現(xiàn)有圖片的大小超過了系統(tǒng)允許的范圍。
    2009-08-08
  • javascript自定義的addClass()方法

    javascript自定義的addClass()方法

    這篇文章主要介紹了javascript自定義的addClass()方法,通過傳參就可以實現(xiàn)樣式的添加
    2014-05-05

最新評論

海宁市| 澳门| 慈利县| 台中县| 宁城县| 鄂伦春自治旗| 安康市| 莎车县| 鄂州市| 张家港市| 巨野县| 永福县| 丽江市| 孟州市| 三亚市| 高陵县| 高淳县| 新昌县| 上思县| 彭州市| 叙永县| 吉隆县| 奈曼旗| 错那县| 宜阳县| 瑞昌市| 北川| 南召县| 兰考县| 庆安县| 通州区| 阿克陶县| 八宿县| 克什克腾旗| 福清市| 天津市| 沂水县| 信宜市| 梅州市| 淳化县| 犍为县|