幻灯片切换的案例中,如果不存在缩略图或者导航的小点点,一般只需要下标值的改变即可。
如果存在两组数据,而且数据之间必须有一一对应的关系时,就要依赖自定义属性的方法来传递各自的下标值了。
这个案例有两个版本。
第一个版本没有封装成函数,缩略图的active高亮效果的改变,是用点击下一个,去掉上一个有active的方式精准实现的。
第二个版本把图片的切换封装成了函数,缩略图的active高亮效果,用的是先把所有li的active效果去掉,再为当前被点击的li添加active完成。
该案例的核心依然是数组和自定义属性的应用。
功能有:
1、点击缩略图或者鼠标经过缩略图,缩略图有active高亮状态,同时切换对应的大图。
2、随着图片的变化,图片的统计数字和标题发生对应的变化。
效果如下:
第一个版本:
页面效果点击查看
一、html代码
<div id="banner"> <span>图片数量</span> <h3>图片标题</h3> <img src="images/loading.gif"/> <ul id="nav"> </ul> </div>
二、css代码
body,ul,h3{
margin:0;
padding:0;
}
body{
font:1em "microsoft Yahei";
color:#333;
background:#eee;}
li{
list-style:none;}
h3{
font-weight:normal;
}
#banner{
position:relative;
width:600px;
height:375px;
margin:30px auto;
text-align:center;
background-color:#FFF1CE;}
#banner span,#banner h3,#nav{
position:absolute;
color:#fff;}
#banner span{
right:20px;
top:10px;}
#banner h3{
bottom:20px;
left:20px;}
#nav{
right:-114px;
top:0;
}
#nav li{
width:104px;
height:65px;
margin-bottom:10px;
background-color:#ddd;
opacity:.6;
}
#nav li.active{
opacity:1;}三、js代码
window.onload=function(){
var oBanner=document.getElementById("banner");
var oSpan=oBanner.getElementsByTagName("span")[0];
var oTitle=oBanner.getElementsByTagName("h3")[0];
var oImg=oBanner.getElementsByTagName("img")[0];
var oUl=document.getElementById("nav");
var oLi=oUl.getElementsByTagName("li");
var oldLi=null; //设置一个变量存放上一个li对象。
var arrUrl=["images/org/1.jpg","images/org/2.jpg","images/org/3.jpg","images/org/4.jpg","images/org/5.jpg"];
var arrTitle=["美味蛋糕","萌宠狗狗","落日海面","雨中蜻蜓","娘娘"];
var arrLi=["images/slt/1.jpg","images/slt/2.jpg","images/slt/3.jpg","images/slt/4.jpg","images/slt/5.jpg"];
for(var i=0;i<arrLi.length;i++){
oUl.innerHTML+="<li><img src='"+arrLi[i]+"'></li>";
}
//初始化
var num=0;
oSpan.innerHTML=(num+1)+"/"+arrUrl.length;
oTitle.innerHTML=arrTitle[num];
oImg.src=arrUrl[num];
oLi[num].className="active";
oldLi=oLi[num]; //初始化的这个li就有active高亮状态的li。
//点击事件
for(var i=0;i<oLi.length;i++){
oLi[i].index=i; //保存索引值
oLi[i].onclick=function(){
oSpan.innerHTML=this.index+1+"/"+arrUrl.length;
oTitle.innerHTML=arrTitle[this.index];
oImg.src=arrUrl[this.index];
//li的active的添加有两个思路,一种全部清空,再添加
/*for(var i=0;i<oLi.length;i++){
oLi[i].className="";
}
this.className="active";*/
//清空上一个,再当前添加
oldLi.className="";
oldLi=this;//把当前的li更新进oldLi,确保下一次单击的时候能把上一次的li的active高亮去掉。
this.className="active";
}
}
}第二个函数版本:
具体效果点击查看。
html和css和前面案例一样。
一、js代码
window.onload=function(){
var oBanner=document.getElementById("banner");
var oSpan=oBanner.getElementsByTagName("span")[0];
var oTitle=oBanner.getElementsByTagName("h3")[0];
var oImg=oBanner.getElementsByTagName("img")[0];
var oUl=document.getElementById("nav");
var oLi=oUl.getElementsByTagName("li");
//数组数据
var arrUrl=["images/org/1.jpg","images/org/2.jpg","images/org/3.jpg","images/org/4.jpg","images/org/5.jpg"];
var arrTitle=["美味蛋糕","萌宠狗狗","落日海面","雨中蜻蜓","娘娘"];
var arrLi=["images/slt/1.jpg","images/slt/2.jpg","images/slt/3.jpg","images/slt/4.jpg","images/slt/5.jpg"];
//生成li
for(var i=0;i<arrLi.length;i++){
oUl.innerHTML+="<li><img src='"+arrLi[i]+"'></li>";
}
//初始化
var num=0;
fnTab();
//点击事件
for(var i=0;i<oLi.length;i++){
oLi[i].index=i; //保存索引值
oLi[i].onmouseover=function(){ //鼠标经过
num=this.index;
fnTab();
}
}
//切换函数
function fnTab(){
oSpan.innerHTML=(num+1)+"/"+arrUrl.length;
oTitle.innerHTML=arrTitle[num];
oImg.src=arrUrl[num];
//把所有缩略图的active高亮去掉
for(var i=0;i<oLi.length;i++){
oLi[i].className="";
}
//再为当前被点击的li添加active高亮状态
oLi[num].className="active";
}
}案例下载地址:
链接: https://pan.baidu.com/s/1eYw5Jd9Pq0Ix52xmZDQ7xw 提取码: mvxv

发表评论:
◎请发表你卖萌撒娇或一针见血的评论,严禁小广告。