php写幻灯片,原生JS写的幻灯片

学习PHP时期,为了练习Javascript而写的幻灯片函数,个人认为还算简单使用啊,兼容性也算可以

//幻灯片

//该幻灯片函数只需要html页面有一个有id的div即可,将id值和图片路径数组传入即可调用,其他参数有默认值,可按需传值

function slide(sid,imgs,width,height,btn_w,btn_h,interval,speed){

//幻灯片的属性

var sid=sid;//幻灯片容器div的id值

var imgs=imgs;//幻灯片图片的路径数组

var width=width||800;//幻灯片的宽度,默认800px

var height=height||400;//幻灯片的高度,默认400px

var btn_w=btn_w||30;//幻灯片图片的宽度,默认30px

var btn_h=btn_w||30;//幻灯片图片的高度,默认30px

var interval=interval||3;//每张图片停留的秒数,默认3秒

var speed=speed||2;//图片滑动速度的档位,默认2档,可以1档,3档

var images=[];//用来存放图片对象的数组

var imgQty=imgs.length;//图片的数量

var curImg=0;//幻灯片当前不滑动图片的数组索引

var nextImg=1;//幻灯片当前滑动的图片的数组索引

var btns=[];//用来存放幻灯片按钮对象的数组

var timer1=null;//用来储存幻灯片播放的超时调用方法

var timer2=null;//用来存储滑动动画的超时调用方法

var isDone = false; //是否滑动完成

//设置幻灯片的元素的方法

function setElements(){

//幻灯片容器

var container=document.getElementById(sid);//通过幻灯片容器id得到幻灯片的div元素对象

var btnRow=document.createElement('ul');//创建按钮容器ul

container.appendChild(btnRow);//将按钮容器ul插入幻灯片容器中

//为幻灯片容器添加事件

container.οnmοuseοver=function(){//鼠标划入停止播放

clearTimeout(timer1);

}

container.οnmοuseοut=function(){//鼠标划出3秒后继续播放

timer1=setTimeout(play,3000);

}

//图片和按钮

for(var i=0;i

//创建图片

images[i]=document.createElement('img');

//为图片添加src属性

images[i].src=imgs[i];

//将图片节点添加到容器中

container.appendChild(images[i]);

//创建按钮

btns[i]=document.createElement('li');//li标签作为图片按钮传入btns数组中

btns[i].innerHTML=i+1;//给按钮填入序号

btnRow.appendChild(btns[i]);//将按钮节点添加到按钮栏中

//为按钮添加事件

btns[i].onmouseover = switchImg;

btns[i].onclick = switchImg;

}

//为幻灯片的元素添加css属性

var head=document.getElementsByTagName('head')[0];//获取头标签

var style=document.createElement('style');//创建style标签

head.appendChild(style);//将style标签插入头标签中

//设置css字符串

var css="#slide{position:relative;width:800px;height:400px;overflow:hidden;}ul{position:absolute;right:20px;bottom:10px;z-index:9;}img{width:800px;height:400px;left:0px;top:0px;position:absolute;}li{width:30px;height:30px;margin-right:10px;float:left;background:#ccc;list-style:none;text-align:center;line-height:30px;border-radius:50%;opacity:0.8}";

//css样式兼容性设计

try{

style.appendChild(document.createTextNode(css));//非IE

}catch(e){

style.styleSheet.cssText=css;//IE

}

//第一次加载默认的图片层级和滑动图片的位置

images[0].style.zIndex=1;//播放开始让第一幅图片为不滑动图片,层级为1

images[1].style.zIndex=2;//播放开始让第二幅图片为滑动图片,层级为2

images[1].style.left=width+'px';//第二幅图的位置调整到容器的右侧准备滑动

}

//将幻灯片的元素插入页面

setElements();

//幻灯片的方法

//切换图片的方法

function switchImg(){

//触发该事件的按钮的索引

var btnIndex = this.innerHTML - 1;

//滑动完成并且触发不同的按钮的事件才会执行变换

if (isDone && btnIndex != curImg) {

clearTimeout(timer2);//停止之前的图片滑动

//将滑动图片立即转换为当前不滑动图片

images[curImg].style.left='0px';

images[curImg].style.zIndex=1;

//将滑动图片对应的按钮立即转换为浅色

btns[nextImg].style.background='#ccc';

btns[nextImg].style.color='#000';

//将滑动图片的数组索引更改为当前按钮对应的图片的数组索引

nextImg=this.innerHTML-1;

// //将要滑动的图片移动到容器右侧,层级设为最高,准备滑动

images[nextImg].style.left=width+'px';

images[nextImg].style.zIndex=2;

//立即滑动

move();

}

}

//让图片完整的滑动一次的方法

function move(){

//滑动开始

isDone = false;

//将上一张滑动图片的样式和下一张滑动图片的样式做一下改变

btns[curImg].style.background='#ccc';

btns[curImg].style.color='#000';

btns[nextImg].style.background='#333';

btns[nextImg].style.color='#fff';

if(parseInt(images[nextImg].style.left) > 0){//判断滑动图片的left是否达到0位置

images[nextImg].style.left=Math.floor((parseInt(images[nextImg].style.left)-(parseInt(images[nextImg].style.left)-0)/(30/speed)))+'px';//没到达则每次滑动剩下路程的25分之一

timer2=setTimeout(move,10);//超时调用slide,用递归加setTimeout模仿setInterval

}else{//滑动图片的left到达0位置

clearTimeout(timer2);//销毁滑动的延时调用方法

//所有图片的层级重置为0

for (var i = 0; i < imgQty; i ++) {

images[i].style.zIndex = 0;

}

curImg = nextImg;//将滑动完的图片的数组索引赋给不滑动图片的数组索引变量

nextImg == (imgQty - 1) ? nextImg = 0 : nextImg ++;//判断滑动完的图片的是否最后一张,是则赋为0,否则加1

//重新设置新一轮的不滑动图片和滑动图片图片的定位和层级属性

images[curImg].style.left='0px';

images[curImg].style.zIndex=1;

images[nextImg].style.left=width+'px';

images[nextImg].style.zIndex=2;

//滑动完成

isDone = true;

}

}

//循环播放的方法

function play(){

move();

timer1=setTimeout(play,interval*1000);//停留三秒钟

}

//立即播放

play();

}

AD:真正免费,域名+虚机+企业邮箱=0元

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值