幻灯片的切换是网站常用功能,这个案例包括了顺序切换和循环切换两种效果。
1、循环切换就是点击下一张,到了最后一张,偷偷摸摸切换到第一张。点击上一张,到了第一张,再偷偷摸摸切换到最后一张, 让你觉得好像幻灯片永远看不完一样。
2、顺序切换就是点击到了第一张或者最后一张,直接粗暴的告诉用户,到头了。
具体页面效果可以点击查看
一、html代码
<div id="wrap"> <div id="btn-wrap"> <input type="button" id="btn1" value="循环切换" class="active"> <input type="button" id="btn2" value="顺序切换"> </div> <div id="banner"> <img id="pic" src="images/loading.gif"> <h2 id="title">图片标题</h2> <p id="counts">正在计算中...</p> <a href="#" id="prev"><i class="iconfont icon-left"></i></a> <a href="#" id="next"><i class="iconfont icon-right"></i></a> </div> </div>
二、css代码
body,input,h2,p{ margin:0; padding:0;} body{ font:1em "microsoft Yahei"; color:#333;} img{ vertical-align:middle; border:none;} a{ text-decoration:none;} #wrap{ width:975px; margin:20px auto 0;} #btn-wrap{ width:300px; margin:0 auto 30px; } input[type=button]{ width:140px; height:35px; background:#e1e1e1; border:none; color:#333; cursor:pointer; outline:none;} input[type=button]:hover{ background:#ddd;} input[type=button].active { background:rgba(227,194,38,1); color:#fff;} #banner{ height:350px; text-align:center; background:#FFF1CE; position:relative;} #title{ height:30px; line-height:30px; font-size:1.25rem; font-weight:normal; position:absolute; left:20px; bottom:20px; color:#fff; text-align:left; } #counts{ position:absolute; right:10px; top:10px; text-align:right; color:#fff; } #prev,#next{ display:none; position:absolute; color:#fff; width:40px; height:70px; line-height:70px; background:rgba(0,0,0,.2); top:50%; margin-top:-35px; } #banner:hover a{ display:block;} #prev{ left:0; border-radius:0 5px 5px 0;} #next{ right:0; border-radius:5px 0 0 5px;} #prev:hover,#next:hover{ background:rgba(0,0,0,.3);} #prev i,#next i{ font-size:2rem;}
三、js代码
window.onload=function(){ //找元素 var oBtn1=document.getElementById("btn1"); var oBtn2=document.getElementById("btn2"); var oBanner=document.getElementById("banner"); var oImg=document.getElementById("pic"); var oTitle=document.getElementById("title"); var oCounts=document.getElementById("counts"); var oPrev=document.getElementById("prev"); var oNext=document.getElementById("next"); var aUrl=["images/1.jpg","images/2.jpg","images/3.jpg","images/4.jpg","images/5.jpg"]; var aTitle=["学会改作品集之后,我收到的offer多了一倍","超全面的变体美术字设计手册","推荐大家学习的通感设计方法","没灵感,就上优优灵感频道","2018年设计圈超实用干货大全"]; var num=0; /*初始化下标*/ var btnTab=true;//创造一个开关,默认值是循环播放。 oBtn1.onclick=function(){ btnTab=true; this.className="active"; oBtn2.className=""; } oBtn2.onclick=function(){ btnTab=false; this.className="active"; oBtn1.className=""; } //公共代码提取成函数,能反复利用 function fnTab(){ oImg.src=aUrl[num]; oTitle.innerHTML=aTitle[num]; oCounts.innerHTML=num+1+"/"+aUrl.length; } fnTab();/*先调用一次函数,初始化第一张图。*/ //这里不能使用for循环,不然一下子就循环完所有图片,得到图片长度值,反而显示不了图片。应该是点击一次,下标值加一个1. oNext.onclick=function(){ num++; if(num==aUrl.length){ //判断num的值,当等于数组长度的时候,再判断是循环还是顺序播放,从而设置num的值。 如果要循环,当num=数组长度的时候,回复到0. if(btnTab){ num=0; }else{ alert('已经是最后一张了'); num=aUrl.length-1; } } fnTab(); } oPrev.onclick=function(){ num--; if(num==-1){ if(btnTab){ num=aUrl.length-1; }else{ alert('已经是第一张了'); num=0; } } fnTab(); } }
案例下载地址:
链接: https://pan.baidu.com/s/1T5cSFAEC0aREvNzKONtGyA 提取码: cu5n
发表评论:
◎请发表你卖萌撒娇或一针见血的评论,严禁小广告。