var box = document.getElementById('box'); //拿到最大的盒子 var screenBox = box.children[0]; // 拿到大盒子下面的子盒子 也就是显示图片的那个盒子 var ul = screenBox.children[0]; // 拿到 ul 列表. var lisUl = ul.children; // 拿到 ul 标签内的所有存放图片的 li var ol = screenBox.children[1]; // 拿到 ol 存放 小方块的 盒子 var lisOl = ol.children; var arrBox = box.children[1]; // 拿到左右箭头的盒子 var arrBox_left = arrBox.children[0]; // 拿到 左箭头 var arrBox_right = arrBox.children[1]; // 拿到右箭头 var imgWidth = screenBox.offsetWidth; var count = 0; // 这里定义一个变量 来记录图片的移出张数 这里我将所有一系列需要的全部进行获取
上面的样式已近操作完成 接下来分析步骤
首先根据图片的个数创建出动态的ol li标签 这样在修改的时候回更为方便
接下来 给 ol 下的第一个li 添加颜色
第三步 给下面的数字设置点击事件
第四步 设置大盒子的鼠标移入 移除事件 此处涉及到冒泡 下面会提及冒泡原由
第五步 克隆第一张 追加到最后一张的后面 也就是所谓的无缝连接
第六步 设置右按钮的点击事件
第七步 设置左按钮的点击事件
第八步 设置定时器 及相关一些列操作
好 ,来操作第一步,动态创建 ol 下的 li标签
1 2 3 4 5
for(var i = 0 ; i < lisUl.length ;i++ ) { var li = document.createElement('li'); li.innerHTML = i +1; // 往创建好的li标签内添加数字,当然这一步也可以省略 也可以没有数字 ol.appendChild(li); // 将创建好的li标签放入ol列表中 } // 这里需要结合css样式来看
操作第二部
1
lisOl[0].classname = 'current'; //去看css样式
第三部操作
1 2 3 4 5 6 7 8 9 10 11 12
for(var i = 0 ; i < lisOl.length;i++ ){ // 将获取到的ol下的li标签进行循环添加点击事件 lisOl[i].index = i; // 记录每一个 i 的索引 当然你也可以打印出来 console.log(); lisOl[i].onclick = function () { for(var i = 0 ; i < lisOl.length ;i++) { // 由于作用域不一样 这里仍然可以使用 i lisOl[i].className = ''; } this.className = 'current'; // 接下来这一步的依据是很重要的 调用一个 运动函数 move(ul,-this.index * imgWidth); count = this.index; console.log(count); // 当你点击小方块的时候会将小方块的索引打印出来 } }