純JS實現(xiàn)可用于頁碼更換的飛頁特效示例
本文實例講述了純JS實現(xiàn)可用于頁碼更換的飛頁特效。分享給大家供大家參考,具體如下:
這個效果使用了自己封裝的一個運動函數(shù);這個效果的巧妙之處在于,在開始用數(shù)組存放了每個li的位置信息,然后在點擊按鈕(頁碼)的時候讓li的寬高位置和透明度發(fā)生運動的改變一個一個的消失,然后在消失結(jié)束之后,再一個個倒著出現(xiàn);可以和頁碼進行匹配,從而實現(xiàn)頁碼更換的效果
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>www.dbjr.com.cn JS飛入效果</title>
<link rel="stylesheet" href="stylesheets/base.css" rel="external nofollow" >
<style>
body{
background:#000;
}
.header{
width: 100%;
height: 40px;
background:#fff;
font:bold 30px/40px '微軟雅黑';
text-align:center;
}
input{
background:#fff;
margin-top:5px;
width: 50px;
height: 20px;
font:bold 12px/20px '微軟雅黑';
}
ul{
width: 360px;
height: 360px;
margin:50px auto;
}
ul li{
width: 100px;
height: 100px;
background:skyblue;
float:left;
margin:5px;
}
</style>
<script src="move.js"></script>
<script>
window.onload=function(){
var oBtn=document.getElementById('btn1');
var oUl=document.getElementsByTagName('ul')[0];
var aLi=oUl.children;
//用數(shù)組來存放沒個li的位置
var arr=[];
//存位置
for(var i=0;i<aLi.length;i++) {
arr[i] = {
left:aLi[i].offsetLeft,
top:aLi[i].offsetTop
};
}
//給目前的li定位
for(var i=0;i<arr.length;i++){
aLi[i].style.position='absolute';
aLi[i].style.left=arr[i].left+'px';
aLi[i].style.top=arr[i].top+'px';
aLi[i].style.margin=0;
}
//當點擊的時候開定時器,讓li一個一個的走
var iNow=0;
var timer=null;
var bReady=false;
oBtn.onclick=function(){
if(bReady){return;}
bReady=true;
timer=setInterval(function(){
move(aLi[iNow],{left:0,top:0,height:0,width:0,opacity:0},{'duration':200,'complete':function(){
if(iNow==arr.length-1){
clearInterval(timer);
back();
bReady=false;
}
iNow++;
}});
},220);
};
function back(){
timer=setInterval(function(){
iNow--;
move(aLi[iNow],{left:arr[iNow].left,top:arr[iNow].top,height:100,width:100,opacity:1},{'duration':200,'complete':function(){
if(iNow==0){
clearInterval(timer);
}
}});
},220);
}
};
</script>
</head>
<body>
<div class="header">飛頁效果</div>
<input type="button" value="走你" id="btn1">
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</body>
</html>
運動函數(shù)move.js:
/**
* Created by Jason on 2016/11/7.
*/
function getStyle(obj,sName){
return (obj.currentStyle || getComputedStyle(obj,false))[sName];
}
function move(obj,json,options){
var options=options || {};
var duration=options.duration || 1000;
var easing=options.easing || 'linear';
var start={};
var dis={};
for(name in json){
start[name]=parseFloat(getStyle(obj,name));
dis[name]=json[name]-start[name];
}
//start {width:50,} dis {width:150}
//console.log(start,dis);
var count=Math.floor(duration/30);
var n=0;
clearInterval(obj.timer);
obj.timer=setInterval(function(){
n++;
for(name in json){
switch (easing){
case 'linear':
var a=n/count;
var cur=start[name]+dis[name]*a;
break;
case 'ease-in':
var a=n/count;
var cur=start[name]+dis[name]*a*a*a;
break;
case 'ease-out':
var a=1-n/count;
var cur=start[name]+dis[name]*(1-a*a*a);
break;
}
if(name=='opacity'){
obj.style.opacity=cur;
}else{
obj.style[name]=cur+'px';
}
}
if(n==count){
clearInterval(obj.timer);
options.complete && options.complete();
}
},30);
}
運行效果如下:

更多關于JavaScript相關內(nèi)容感興趣的讀者可查看本站專題:《JavaScript運動效果與技巧匯總》、《JavaScript動畫特效與技巧匯總》、《JavaScript圖形繪制技巧總結(jié)》、《JavaScript切換特效與技巧總結(jié)》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》及《JavaScript數(shù)學運算用法總結(jié)》
希望本文所述對大家JavaScript程序設計有所幫助。
相關文章
javascript實現(xiàn)fetch請求返回的統(tǒng)一攔截
這篇文章主要介紹了javascript實現(xiàn)fetch請求返回的統(tǒng)一攔截,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-12-12
JavaScript利用時間分片實現(xiàn)高性能渲染數(shù)據(jù)詳解
為了豐富我們的知識體系,我們有必要了解并清楚當遇到大量數(shù)據(jù)時,如何才能在不卡主頁面的情況下渲染數(shù)據(jù),以及其中背后的原理,本文介紹了如何使用時間分片的方式來渲染大量數(shù)據(jù),感興趣的可以了解下2023-05-05
BootStrap 智能表單實戰(zhàn)系列(二)BootStrap支持的類型簡介
這篇文章主要介紹了BootStrap 智能表單實戰(zhàn)系列(二)BootStrap支持的類型簡介 的相關資料,非常不錯具有參考借鑒價值,感興趣的朋友一起學習吧2016-06-06
javascript使用正則表達式實現(xiàn)去掉空格之后的字符
這篇文章主要介紹了javascript使用正則表達式實現(xiàn)去掉空格之后的字符的方法,需要的朋友可以參考下2015-02-02
基于Bootstrap實現(xiàn)Material Design風格表單插件 附源碼下載
Jquery Material Form Plugin是一款基于Bootstrap的Material Design風格的jQuery表單插件。這篇文章主要介紹了基于Bootstrap的Material Design風格表單插件附源碼下載,感興趣的朋友參考下2016-04-04
bootstrap+jQuery實現(xiàn)的動態(tài)進度條功能示例
這篇文章主要介紹了bootstrap+jQuery實現(xiàn)的動態(tài)進度條功能,結(jié)合完整實例形式分析了bootstrap+jQuery實現(xiàn)動態(tài)進度條的具體步驟與相關操作技巧,需要的朋友可以參考下2017-05-05

