分页特效

page.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>js分页</title>
<style type="text/css">
body{
text-align: center;
margin: 0;
}
a{
text-decoration: none;
display: inline-block;
height: 20px;
font: 14px/20px arial;
margin-right: 5px;
padding: 2px 5px;
background-color: #ECF5FD;
color: #666666;
border: 1px solid #B8D2ED;
border-radius: 2px;
}
a:hover{
background-color: #369BDC;
color: #fff;
}
a.active{
background-color: #FFF9F2;
color: #FE7C00;
border-color: #FE7C00;
}
.clearfix{
zoom: 1;
}
.clearfix::after{
content: "";
display: block;
clear: both;
}
#div1{
position: absolute;
bottom: 20%;
width: 100%;
text-align: center;
}
#ul1{
margin: 5% auto;
width: 760px;
}
#ul1 li{
list-style: none;
width: 180px;
height: 170px;
margin: 0 10px 10px 0;
float: left;
background-color: #CEE9F8;
}
#ul1 li img{
width: 180px;
height: 110px;
}
#ul1 li p{
margin: 0;
padding: 0;
height: 24px;
line-height: 24px;
font-size: 14px;
}
</style>
<script type="text/javascript" src="move.js"></script>
<script type="text/javascript">
window.οnlοad=function(){
var json = {
title : [
'日本11岁小学生女团走红 走成熟性感风遭吐槽',
'美国小伙喝酒喝断片 稀里糊涂设计出一架飞机',
'真实版贪吃蛇!日本一只蛇把自己尾巴当食物吃掉',
'滑板高手高速路上炫技 风驰电掣与汽车擦身而过',
'别痴心妄想了 香港女子流行晒太阳减肥',
'保安摔倒滚360度继续追持刀贼监控录像全记录',
'女子被雷击中胸口 文胸钢圈救了她一命',
'男子酒后机场闹事 错过航班还被拘',
'保安被拖行百米“奔驰哥”见义勇为救人',
'4名法官办公楼内被捅伤犯罪嫌疑人已被控制',
'印小天迎娶圈外娇妻 赵宝刚主婚众星到场祝福',
'天龙八部重聚!林志颖刘涛刘亦菲摆招合影',
'陈建州谈妻子范玮琪被炮轰 网络世界就是这样',
'苍老师晒照庆祝教师节 侧卧大床妩媚出镜',
'范冰冰带李晨回青岛见家长 看大别墅疑婚期将至',
'胡军对嘴亲吻14岁女儿引争议',
'天然居硅藻泥',
'盘点那些闪耀荧幕的星女郎',
'军训学妹遭暴晒!吐槽要抗日',
'针对女性的犯罪',
'夜醉囧-女星醉酒后',
'爽翻!下辈子一定要做大象',
'调皮王妃-元气女神经碾压皇宫',
'校花的贴身高手-少年调戏校花',
'巨乳萝莉永井里菜性感写真',
'郭美美出庭受审揭秘背后真相',
'《碟中谍系列》尖叫中帅一脸!碟中谍系列来袭',
'苹果秋季新品发布会 揭秘苹果新品',
'抗战胜利日阅兵 直击大阅兵现场',
'抗战胜利70周年阅兵直击阅兵活动盛况',
'开学季 爆笑青春大盘点爆笑青春大盘点',
'古装热门侠客侠女古装造型大盘点',
'教师节电影特刊老师“拯救你”',
'进击的女二号秒杀女主 爆红逆袭',
'三城记 制作特辑成龙父母的爱情故事',
'终结者5 制作特辑施瓦辛格卷土重来',
'七夕情人节成名电影大盘点',
'宝宝学习剧场好动画助宝宝成长',
'抗战胜利70周年经典大剧佳作展播',
'万万没想到 赵丽颖身价翻百倍向赵薇看齐',
'《情敌蜜月》片花:张雨绮霍建华惊曝“另一面”',
'蒋欣花痴宁泽涛 晒PS合照',
'我不是霍建华请叫我白子画!',
'伪装者-胡歌暧昧过夜',
'女神跟我走-林永健喜当爹',
'调皮王妃-晴柔犯花痴',
'熊二,这是什么鬼',
'机器侠-吴京耍大刀',
'天亮·分手-美女玩转富二代',
'女生日记-宅男共学霸一色',
' 惹毛媳妇的下场! '
]
};
var iNow=7;
var arr=[];
var onOff=true;
page({
id : "div1",
nowNum : 1,
allNum : Math.ceil(json.title.length/8),
callBack : function(now,all){
var num = now*8 < json.title.length ? 8 : json.title.length%8;
var oUl = document.getElementById("ul1");
var aLi = oUl.getElementsByTagName("li");
var aImg = oUl.getElementsByTagName("img");
var aP = oUl.getElementsByTagName("p");
if(oUl.innerHTML==""){
for (var i = 0; i < num; i++) {
var oLi = document.createElement("li");
var oP = document.createElement("p");
oP.innerHTML = json.title[(now-1)*8+i];
var oImg = document.createElement("img");
oImg.src = "img/"+((now-1)*8+i+1)+".jpg";
oLi.appendChild(oImg);
oLi.appendChild(oP);
oUl.appendChild(oLi);
};
for (var i = 0; i < num; i++) {
arr.push( [aLi[i].offsetLeft,aLi[i].offsetTop] );
};
for (var i = 0; i < num; i++) {
aLi[i].style.position="absolute";
aLi[i].style.left = arr[i][0]+"px";
aLi[i].style.top = arr[i][1]+"px";
}
}
else{
if (!onOff) {return};
onOff=false;
var timer = setInterval(function(){
startMove(aLi[iNow],{left:500,top:500,opacity:0});
if (iNow==0) {
clearInterval(timer);
iNow = num-1;
for (var i = 0; i < num; i++) {
aP[i].innerHTML = json.title[(now-1)*8+i];
aImg[i].src = "img/"+((now-1)*8+i+1)+".jpg";
};
var timer2 = setInterval(function(){
startMove(aLi[iNow],{left:arr[iNow][0],top:arr[iNow][1],opacity:100},function(){
onOff=true;
});
if ( iNow==0 ) {
clearInterval(timer2);
iNow = num-1;
}
else{
iNow--;
}

},100);
}
else{
iNow--;
}

},100);
}
}
})
}
function page(opt){
if ( !opt.id || opt.nowNum>opt.allNum || opt.nowNum<=0 || opt.allNum<=0 ) { return; }
var obj = document.getElementById(opt.id);
var nowNum = opt.nowNum || 1;
var allNum = opt.allNum || 5;
var callBack = opt.callBack || function(){};
if (nowNum>=2) {
var oA = document.createElement("a");
oA.href="#"+1;
oA.innerHTML="首页";
obj.appendChild(oA);
}
if ( nowNum>=4 && allNum>=6 ) {
var oA = document.createElement("a");
oA.href="#"+(nowNum-1);
oA.innerHTML="上一页"
obj.appendChild(oA);
}
if ( allNum<=5 ) {
for (var i = 1; i <= allNum; i++) {
var oA = document.createElement("a");
oA.href="#"+i;
if (i==nowNum) {
oA.innerHTML = i;
oA.className="active";
}
else{
oA.innerHTML = "["+i+"]";
}
obj.appendChild(oA);
};
}
else{
for (var i = 1; i <= 5; i++) {
var oA = document.createElement("a");
if ( nowNum==1 || nowNum==2) {
oA.href="#"+i;
if (nowNum==i) {
oA.innerHTML = i;
oA.className="active";
}
else{
oA.innerHTML = "["+i+"]";
};
}
else if ( (allNum-nowNum)==1 || (allNum-nowNum)==0 ) {
oA.href="#"+(allNum-5+i);
if ( (allNum-nowNum)==1 && i==4 ) {
oA.innerHTML = allNum-5+i;
oA.className="active";
}
else if ( (allNum-nowNum)==0 && i==5 ) {
oA.innerHTML = allNum-5+i;
oA.className="active";
}
else{
oA.innerHTML = "["+(allNum-5+i)+"]";
}
}
else{
oA.href="#"+(nowNum-3+i);
if (i==3) {
oA.innerHTML = nowNum-3+i;
oA.className="active";
}
else{
oA.innerHTML = "["+(nowNum-3+i)+"]";
}
}
obj.appendChild(oA);
};
}
if ( (allNum-nowNum)>=1 ) {
var oA = document.createElement("a");
oA.href="#"+(nowNum+1);
oA.innerHTML="下一页"
obj.appendChild(oA);
}
if ( (allNum-nowNum)>=3 && allNum>=6 ) {
var oA = document.createElement("a");
oA.href="#"+allNum;
oA.innerHTML="尾页"
obj.appendChild(oA);
}

callBack(nowNum,allNum);

var aA = obj.getElementsByTagName('a');
for (var i = 0; i < aA.length; i++) {
aA[i].οnclick=function(){
var nowNum = parseInt(this.getAttribute("href").substring(1));
obj.innerHTML='';
page({
id : "div1",
nowNum : nowNum,
allNum : allNum,
callBack : callBack
})
return false;
}
};
}
</script>
</head>
<body>
<ul id="ul1" class="clearfix"></ul>
<div id="div1" class="clearfix"></div>
</body>
</html>

 

move.js

function startMove(obj,json,times,fx,fn){

var iCur = {};
var startTime = nowTime();

if( typeof times == 'undefined' ){
times = 400;
fx = 'linear';
}

if( typeof times == 'string' ){
if(typeof fx == 'function'){
fn = fx;
}
fx = times;
times = 400;
}
else if(typeof times == 'function'){
fn = times;
times = 400;
fx = 'linear';
}
else if(typeof times == 'number'){
if(typeof fx == 'function'){
fn = fx;
fx = 'linear';
}
else if(typeof fx == 'undefined'){
fx = 'linear';
}
}

for(var attr in json){
iCur[attr] = 0;
if( attr == 'opacity' ){
iCur[attr] = Math.round(getStyle(obj,attr)*100);
}
else{
iCur[attr] = parseInt(getStyle(obj,attr));
}
}

clearInterval(obj.timer);
obj.timer = setInterval(function(){

var changeTime = nowTime();

//startTime changeTime

var scale = 1-Math.max(0,startTime + times - changeTime)/times; //2000 - 0 -> 1-0 -> 0-1

for(var attr in json){

var value = Tween[fx](scale*times,iCur[attr],json[attr] - iCur[attr],times);

if(attr == 'opacity'){
obj.style.filter = 'alpha(opacity='+ value +')';
obj.style.opacity = value/100;
}
else{
obj.style[attr] = value + 'px';
}

}

if(scale == 1){
clearInterval(obj.timer);
if(fn){
fn.call(obj);
}
}


},30);

function nowTime(){
return (new Date()).getTime();
}

}

function getStyle(obj,attr){
if(obj.currentStyle){
return obj.currentStyle[attr];
}
else{
return getComputedStyle(obj,false)[attr];
}
}


var Tween = {
linear: function (t, b, c, d){ //匀速
return c*t/d + b;
},
easeIn: function(t, b, c, d){ //加速曲线
return c*(t/=d)*t + b;
},
easeOut: function(t, b, c, d){ //减速曲线
return -c *(t/=d)*(t-2) + b;
},
easeBoth: function(t, b, c, d){ //加速减速曲线
if ((t/=d/2) < 1) {
return c/2*t*t + b;
}
return -c/2 * ((--t)*(t-2) - 1) + b;
},
easeInStrong: function(t, b, c, d){ //加加速曲线
return c*(t/=d)*t*t*t + b;
},
easeOutStrong: function(t, b, c, d){ //减减速曲线
return -c * ((t=t/d-1)*t*t*t - 1) + b;
},
easeBothStrong: function(t, b, c, d){ //加加速减减速曲线
if ((t/=d/2) < 1) {
return c/2*t*t*t*t + b;
}
return -c/2 * ((t-=2)*t*t*t - 2) + b;
},
elasticIn: function(t, b, c, d, a, p){ //正弦衰减曲线(弹动渐入)
if (t === 0) {
return b;
}
if ( (t /= d) == 1 ) {
return b+c;
}
if (!p) {
p=d*0.3;
}
if (!a || a < Math.abs(c)) {
a = c;
var s = p/4;
} else {
var s = p/(2*Math.PI) * Math.asin (c/a);
}
return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
},
elasticOut: function(t, b, c, d, a, p){ //正弦增强曲线(弹动渐出)
if (t === 0) {
return b;
}
if ( (t /= d) == 1 ) {
return b+c;
}
if (!p) {
p=d*0.3;
}
if (!a || a < Math.abs(c)) {
a = c;
var s = p / 4;
} else {
var s = p/(2*Math.PI) * Math.asin (c/a);
}
return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
},
elasticBoth: function(t, b, c, d, a, p){
if (t === 0) {
return b;
}
if ( (t /= d/2) == 2 ) {
return b+c;
}
if (!p) {
p = d*(0.3*1.5);
}
if ( !a || a < Math.abs(c) ) {
a = c;
var s = p/4;
}
else {
var s = p/(2*Math.PI) * Math.asin (c/a);
}
if (t < 1) {
return - 0.5*(a*Math.pow(2,10*(t-=1)) *
Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
}
return a*Math.pow(2,-10*(t-=1)) *
Math.sin( (t*d-s)*(2*Math.PI)/p )*0.5 + c + b;
},
backIn: function(t, b, c, d, s){ //回退加速(回退渐入)
if (typeof s == 'undefined') {
s = 1.70158;
}
return c*(t/=d)*t*((s+1)*t - s) + b;
},
backOut: function(t, b, c, d, s){
if (typeof s == 'undefined') {
s = 3.70158; //回缩的距离
}
return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
},
backBoth: function(t, b, c, d, s){
if (typeof s == 'undefined') {
s = 1.70158;
}
if ((t /= d/2 ) < 1) {
return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
}
return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
},
bounceIn: function(t, b, c, d){ //弹球减振(弹球渐出)
return c - Tween['bounceOut'](d-t, 0, c, d) + b;
},
bounceOut: function(t, b, c, d){
if ((t/=d) < (1/2.75)) {
return c*(7.5625*t*t) + b;
} else if (t < (2/2.75)) {
return c*(7.5625*(t-=(1.5/2.75))*t + 0.75) + b;
} else if (t < (2.5/2.75)) {
return c*(7.5625*(t-=(2.25/2.75))*t + 0.9375) + b;
}
return c*(7.5625*(t-=(2.625/2.75))*t + 0.984375) + b;
},
bounceBoth: function(t, b, c, d){
if (t < d/2) {
return Tween['bounceIn'](t*2, 0, c, d) * 0.5 + b;
}
return Tween['bounceOut'](t*2-d, 0, c, d) * 0.5 + c*0.5 + b;
}
}

效果

 

 

转载于:https://www.cnblogs.com/jiechen/p/5365766.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值