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元
總結
以上是生活随笔為你收集整理的php写幻灯片,原生JS写的幻灯片的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: asus官方android升级包,华硕A
- 下一篇: Linux查看内置命令和非内置命令帮助的