图片轮播

核心代码:

点击看效果demo

if (i === 0) {

                //闭包返回的运动控制器,返回各个图片的序号
                var step = function(){
                    oClick[flag].className = "";
                    flag = flag >= oClick.length - 1 ? 0 : flag + 1;
                    oClick[flag].className = "on";
                    funMove(-390 * flag);
                    timeout = setTimeout(step, 4000);
                };
                setTimeout(step, 4000); //4s自动切换一次
            }

  在循环中,返回闭包,记住图片序号值。

让运动函数负责图片序号值的图片展示。

demo源码:

  

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>JavaScript实现图片切换显示幻灯片动画效果</title>
<style type="text/css">
.img-list{
    width: 179px;
    float: left;
    margin: 0 0 30px 0;
    /* padding: 10px 0; */
    text-align: center;
    border: 1px solid #34538b;
    list-style-type: none;
    padding: 10px 5px;
    margin-top: 8px;
}
.img-list li{
    padding-top:14px; 
    padding-bottom:5px;
}
.img-list li a img{
    padding:1px; 
    border:2px solid white;
}
.img-list li a.on img{
    border-color:#0CF;
}
.img_right{
    width:522px; 
    margin-left:10px;
    margin-bottom:30px; 
    float:left; 
    border:1px solid #34538b; 
    height:392px; 
    position:relative; 
    overflow:hidden;
}
.img_move{
    width:522px; 
    padding:0; 
    margin:0; 
    position:absolute; 
    /* left:5px;  */
    top:0px; 
    list-style:none; 
    font-size:0;
}
.img_move li{
    height:390px; 
    text-align:center;
}
.img_move li img{
    vertical-align:middle;
}
.img_move li span{
    display:inline-block; 
    width:1px; 
    height:100%; 
    vertical-align:middle;
}
a{color:#34538b; text-decoration:underline;}
a:hover{color:#f30;}
</style>
<script type="text/javascript">
    window.onload = function(){
        var oMove = document.getElementById("imageMove");
        
        //运动函数
        var funMove = function(pos){
            var move = function(){
                var curPos = parseInt(oMove.style.top, 10); //获取滚动图容器位置
                var speed = 60; //滚动距离间隔
                
                if(Math.abs(curPos - pos) > speed){

                    //判断移动方向
                    curPos -= ((curPos - pos) / Math.abs(curPos - pos)) * speed;  
                    oMove.style.top = curPos + "px";
                    setTimeout(move, 30);
                }else{
                    oMove.style.top = pos + "px";
                }
            };
            setTimeout(move, 10);
        };
        var oClick = document.getElementById("imageLeft").getElementsByTagName("a");
        for(var i = 0; i < oClick.length; i += 1){
            var flag = 0; //目标标志,默认是第一个a元素
            var timeout;
            
            //鼠标经过播放动画
            oClick[i].onmouseover = function(i){
                return function(e){
                    clearTimeout(timeout);
                    oClick[flag].className = "";
                    this.className = "on";
                    funMove(-390 * i);
                    flag = i;
                }
            }(i);
            oClick[i].onmouseout = function(i){
                return function(e){
                    timeout = setTimeout(step, 4000);
                }
            }(i);
            
            //定时器播放动画
            if (i === 0) {

                //闭包返回的运动控制器,返回各个图片的序号
                var step = function(){
                    oClick[flag].className = "";
                    flag = flag >= oClick.length - 1 ? 0 : flag + 1;
                    oClick[flag].className = "on";
                    funMove(-390 * flag);
                    timeout = setTimeout(step, 4000);
                };
                setTimeout(step, 4000); //4s自动切换一次
            }
        }
    };
</script>
</head>

<body>
<ul id="imageLeft" class="img-list">
	<li>
    	<a href="#" class="on"><img src="../images/imgcommon4.jpg" /></a>
    </li>
    <li>
    	<a href="#"><img src="../images/imgcommon3.jpg" /></a>
    </li>
    <li>
    	<a href="#"><img src="../images/imgcommon4.jpg" /></a>
    </li>
</ul>
<div class="img_right">
	<ul id="imageMove" class="img_move" style="top:0px;">
    	<li>
        	<img src=".././images/imgbig4.jpg" />
            <span></span>
        </li>
    	<li>
        	<img src=".././images/imgbig3.jpg" />
            <span></span>
        </li>
        <li>
        	<img src=".././images/imgbig4.jpg" />
            <span></span>
        </li>
    </ul>
</div>
</body>
</html>  

效果图:

技术参考:http://www.zhangxinxu.com

posted @ 2017-12-07 15:56  柠檬张先生  阅读(219)  评论(0编辑  收藏  举报