js笔记:点击轮换
html部分:
- <body>
- <div id="wrapper">
- <div id="left" class="c"><div></div></div>
- <div id="center" class="c"></div>
- <div id="right" class="c"></div>
- <div id="dd" class="c"><div><div style="width:100%;height:400px;background:#fff;"></div></div></div>
- </div>
- </body>
css部分:
- *{padding:0;margin:0;}
- body{width:1003px;overflow-x:hidden;background:#fff;margin:0 auto;}
- #wrapper{width:1003px;overflow:hidden;height:800px;position:relative;}
- #left{background:#ccc;}
- #center{background:#f60;}
- #right{background:#333;}
- #dd{background:#000;left:0;}
- .c{position:absolute;width:1003px;left:-1003px;top:0;height:600px;cursor:pointer;}
jsvascript部分:
- <script type="text/javascript">
- function move(){
- var divTag = document.getElementById("wrapper").getElementsByTagName("div");//取得需要轮播的DIV
- var divWidth = 1003;//定义轮播宽度
- //遍历需要轮播的DIV
- for(var i = 0;i < divTag.length;i++){
- //只有class=c的DIV开始轮播
- if(divTag[i].className == "c"){
- var bb;
- var cc;
- //点击开始
- divTag[i].onclick = function(event){
- if(!event){
- event = window.event;
- }
- var el = event.target || event.srcElement;
- //如果当前点击的元素不是需要轮播的DIV,则寻找它的父节点,直到找到需要轮播的元素
- while(el.className != "c"){
- el = el.parentNode;
- }
- var firstDiv = el.parentNode.firstChild;
- //查找轮播元素的父级节点的第一个子节点
- if(firstDiv.nodeType == 3){
- firstDiv = firstDiv.nextSibling;
- }
- //如果当前点击的不是第一个子节点,开始轮播
- if(firstDiv != el){
- //查找当前节点的上一个相邻节点
- var preTag = el.previousSibling;
- if(preTag.nodeType == 3){
- preTag = preTag.previousSibling;
- }
- var n = el.offsetLeft;//取得左边距的值
- var k = preTag.offsetLeft;//取得相邻节点的左边距的值
- //当前元素和相邻元素的left值每20毫秒减小100像素
- var bb = setInterval(
- function(){
- if(n < divWidth){
- el.style.left = n + "px";
- preTag.style.left = k + "px";
- n = n + 100;
- k = k + 100;
- el.setAttribute("class","c");
- preTag.setAttribute("class","c");
- }else{
- el.style.left = divWidth + "px";
- preTag.style.left = 0 + "px";
- window.clearInterval(bb);
- }
- },20
- );
- }
- //如果当前点击元素是第一个子节点,则复原成初始状态
- else{
- var child = document.getElementById("wrapper").childNodes;
- var last = document.getElementById("wrapper").lastChild;
- if(last.nodeType == 3){
- last = last.previousSibling;
- }
- var t = last.offsetLeft;
- var y = el.offsetLeft;
- for(var m = 0;m < child.length;m++){
- if(child[m].nodeType != 3 && child[m] != last && child[m] != el){
- child[m].style.left = -divWidth + "px";
- }
- }
- cc = setInterval(
- function(){
- if(t > 0){
- last.style.left = t + "px";
- el.style.left = y + "px";
- t = t - 100;
- y = y - 100;
- }
- else{
- last.style.left = 0 + "px";
- el.style.left = -divWidth + "px";
- window.clearInterval(cc);
- }
- },20
- )
- }
- }
- }
- }
- }
- window.onload = move;
- </script>