1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta charset="UTF-8">
5 <title></title>
6 </head>
7
8 <script type="text/javascript">
9 function getStyle(obj,name)
10 {
11 if(window.getComputedStyle)
12 return getComputedStyle(obj,null)[name];
13 else
14 return obj.currrntStyle[name];
15 }
16
17 function move(obj,attr,target,speed,callback)
18 {
19 clearInterval(obj.timer);
20 var current = parseInt(getStyle(obj,attr));
21 if(current>target)
22 speed=-speed;
23 obj.timer=setInterval(function(){
24 var oldValue=parseInt(getStyle(obj,attr));
25 var newValue=oldValue+speed;
26 if(speed<0&&newValue<target || speed>0&&newValue>target)
27 newValue=target;
28 obj.style[attr]=newValue+"px";
29 if(newValue==target){
30 clearInterval(obj.timer);
31 callback && callback();
32 }
33 },10);
34 }
35
36 window.onload=function(){
37 var imgList=document.getElementById("imgList");
38 var imgArr=document.getElementsByTagName("img");
39 //设置imgList的宽度
40 imgList.style.width=520*imgArr.length+"px";
41 //设置导航按钮居中
42 var navDiv=document.getElementById("navDiv");
43 //获取outer
44 var outer=document.getElementById("outer");
45
46 var allA=document.getElementsByTagName("a");
47 //设置navDiv的left值
48 navDiv.style.paddingLeft=(outer.offsetWidth-allA.length*25+10)/2+"px";
49 //默认显示图片索引
50 var index=0;
51 allA[index].style.backgroundColor="yellow";
52
53
54 //点击超链接切换到指定的图片
55 for(var i=0;i<allA.length;i++){
56 //添加num属性
57 allA[i].num=i;
58 allA[i].onclick=function(){
59 //关闭自动切换的定时器
60 clearInterval(timer);
61 //获取点击超链接的索引
62 index=this.num;
63 //切换图片
64 //imgList.style.left=-index*520+"px";
65 //修改选中的a
66 setA();
67 move(imgList,"left",-520*index,10,function(){});
68 //动画执行完毕,开启自动切换
69 autoChange();
70 };
71 }
72 //自动切换图片
73 autoChange();
74
75 //创建一个方法用来设置选中的a
76 function setA(){
77 //判断当前索引是否是最后一张图片
78 if(index>=imgArr.length-1){
79 index=0;
80 //此时显示的最后一张图片,和第一张图片是一样的,通过CSS将最后一张切换成第一张
81 imgList.style.left=0+"px";
82 }
83 //遍历所有的a,并将它们的背景颜色设置为红色
84 for(var i=0;i<allA.length;i++){
85 /*
86 allA[i].style.backgroundColor="red";设置内联样式,因为优先级比hover高
87 所以会覆盖hover。当设置为""时,样式表#navDiv里的background-color:red;默认效果生效,
88 这样就不会覆盖了。
89 */
90 allA[i].style.backgroundColor="";
91 //将选中的a设置为黄色
92 allA[index].style.backgroundColor="yellow";
93 }
94 };
95 //定义一个自动切换的定时器的标识
96 var timer;
97 //创建一个函数,用来开启自动切换图片
98 function autoChange(){
99 //开启一个定时器,用来定时去切换图片
100 timer=setInterval(function(){
101 //使索引自增
102 index++;
103 //判断index的值
104 index%=imgArr.length;
105 move(imgList,"left",-520*index,20,function(){
106 //修改导航按钮
107 setA();
108 });
109 },2000);
110 };
111 };
112 </script>
113 <style type="text/css">
114 *{
115 padding:0px;
116 margin:0px auto;
117 }
118 #outer{
119 width:520px;
120 height:330px;
121 padding:10px 0px;
122 background-color:purple;
123 position:relative;
124 overflow:hidden;
125 }
126 #imgList{
127 list-style:none;
128 /* 给子元素开启绝对定位,父元素开启相对定位
129 绝对定位的元素的位置相对于最近的已定位祖先元素,
130 如果元素没有已定位的祖先元素,那么它的位置相对于最初的包含块。
131 */
132 position:absolute;
133 left:-520px;
134 }
135 li{
136 margin:0px 10px;
137 float:left;
138 }
139 /* 设置导航按钮 */
140 #navDiv{
141 //开启绝对定位
142 position:absolute;
143 }
144 #navDiv a{
145 /* 内联元素设置宽高无用 */
146 float:left;
147 width:15px;
148 height:15px;
149 background-color:red;
150 margin:310px 5px;
151
152 /* 设置透明 */
153 opacity:0.5;
154 /* 兼容IE8透明 */
155 filter:alpha(opacity=50);
156 }
157 /* 设置鼠标移入的样式 */
158 #navDiv a:hover{
159 background-color:skyblue;
160 bottom:10px;
161 }
162
163 </style>
164 <body>
165 <!--
166 创建一个外部的div,来作为大的容器
167 -->
168 <div id="outer" class="clearfix">
169 <!--
170 创建一个ul,用于放置图片
171 -->
172 <ul id="imgList">
173 <li><img src="1.jpg"width="500px"height="330px"/></li>
174 <li><img src="2.png"width="500px"height="330px"/></li>
175 <li><img src="3.jpg"width="500px"height="330px"/></li>
176 <li><img src="4.png"width="500px"height="330px"/></li>
177 <li><img src="5.png"width="500px"height="330px"/></li>
178 <li><img src="1.jpg"width="500px"height="330px"/></li>
179 </ul>
180 <!-- 创建导航按钮 -->
181 <div id="navDiv">
182 <a href="javascript:;"></a>
183 <a href="javascript:;"></a>
184 <a href="javascript:;"></a>
185 <a href="javascript:;"></a>
186 <a href="javascript:;"></a>
187 </div>
188 </div>
189 </body>
190 </html>
![]()