JS实习生

导航

JS制作图片切换

<!DOCTYPE html>
<html>
<head>
    <title>纯JS制作简单的图片切换</title>
    <meta charset="utf-8">
    <!-- <link rel="stylesheet" href="css/reset.css"> -->
    <style>
        *{
            margin:0;
            padding:0;
            list-style:none;
        }
        #row{
            position:relative;
            width:500px;
            height:350px;
            /*background-color:pink;*/
            margin:50px auto;
        }
        #row #btn{
            display:flex;
            width:100%;
            height:50px;
            /*background-color:#484a19;*/
        }
        #row #btn span{
            width:80px;
            height:50px;
            margin-right:5px;
            background-color:#010000;
            line-height:50px;
            text-align:center;
            color:#fff;
            cursor:pointer;
        }
        #row #btn span.active{
            background-color:#f60;
        }
        #nav{
            position:relative;
            width:500px;
            height:300px;
            /*background-color:#fab000;*/
        }
        #nav .pic{
            position:relative;
            width:100%;
            height:100%;
        }
        #nav .pic img{
            position:absolute;
            display:none;
            top:0;
            left:0;
            width:100%;
            height:100%;
        }
        #nav .pic img.out{
            display:block;
        }
        #row #nav p{
            position:absolute;
            height:25px;
            background-color:rgba(0,0,0,.5);
            line-height:25px;
            text-align:center;
            color:#fff;
            font-size:12px;
        }
        #row #nav p.top{
            top:0;
            width:100%;
        }
        #row #nav p.bottom{
            bottom:0;
            width:100%;
        }
        #row #nav p.left{
            top:50%;
            left:0;
            cursor:pointer;
        }
        #row #nav p.right{
            top:50%;
            right:0;
            cursor:pointer;
        }
    </style>
</head>
<body>
    <div id='row'>
        <div id='btn'>
            <span class='active'>循环切换</span>
            <span>单边切换</span>
        </div>
        <div id='nav'>
            <div class='pic'>
                <img src="images/k1.jpg" class='out'>
                <img src="images/k2.jpg">
                <img src="images/k3.jpg">
                <img src="images/k4.jpg">
                <img src="images/k5.jpg">
                <img src="images/k6.jpg">
            </div>
            <p class='top'><span>1</span>/6</p>
            <p class='bottom'><span></span>张图片</p>
            <p class='left click'>上一张</p>
            <p class='right click'>下一张</p>
        </div>
    </div>
</body>
<script>
    var tab = document.querySelectorAll("#row #btn span"),
        imgs = document.querySelectorAll("#row #nav .pic img"),
        right = document.querySelector("#row #nav p.right"),
        left = document.querySelector("#row #nav p.left"),
        oTop = document.querySelector("#row #nav .top span"),
        oBottom = document.querySelector("#row #nav .bottom span"),
        arr = ["","","","","",""],//底部文字数组
        flag = true;//标记,当前处于哪个模式(循环/单边)
        index = 0;//下标

        
    tab[0].onclick = function(){
        this.className = 'active';
        tab[1].className = '';
        flag = true;
    }    
    tab[1].onclick = function(){
        this.className = 'active';
        tab[0].className = '';
        flag = false;
    }
    right.tabs = true;//自定义属性
    right.onclick = tabImg;

    left.tabs = false;//自定义属性
    left.onclick = tabImg;
    /*function(){
        imgs[index].className = '';//清空原来的class
        index--;
        if(index < 0){
            index = 5;
        }
        imgs[index].className = 'out';//给下一个img元素赋class值
        oTop.innerHTML = index + 1;//顶部数字变化
        oBottom.innerHTML = arr[index];//底部文字变化
    }*/

    function tabImg(){
        imgs[index].className = '';
        if(this.tabs){//当点击上一张或者下一张时,判断boolean是否为真,如果是假执行else语句
            index++;
            if(index > 5){
                if(flag){//如果是真,index值为0
                    index = 0;
                }else{
                    index--;//阻止index++
                    alert("已经是最后一张图片!");
                }
            }
        }else{
            index--;
            if(index < 0){
                if(flag){
                    index = 5;
                }else{
                    index++;//阻止index--
                    alert("已经是第一张图片不能在切换了!")
                }
            }
        }
        imgs[index].className = 'out';//给下一个img元素赋class值
        oTop.innerHTML = index + 1;//顶部数字变化
        oBottom.innerHTML = arr[index];//底部文字变化
    }
</script>
</html>

 

posted on 2018-04-18 21:54  多特  阅读(405)  评论(0编辑  收藏  举报