js之图片轮播

js之图片轮播


代码如下:


<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>图片轮播方法一title>
    <style>
          #content{
      
              
            display:flex;
            margin: auto;
            border: solid black 1px;
            width: 300px;
            height: 300px;
            position: relative;
        }
        #content img{
      
            width: 100%;
            height: 100%;
            position: absolute;

        }
        #list{
      
            position: absolute;
            /* border: black 1px solid; */
            z-index: 1000;
            bottom: 10px;
            left: 0;
            right: 0;
            margin: auto;
            width: 60px;

        }
        #list span{
      
            width: 10px;
            height: 10px;
            border-radius: 50%;
            background: #ffff;
            float: left;

        }
        .active{
      

            background: orange !important;
        }
    style>
    <script>
        window.onload=function(){
      
            babyzone.scroll(6,"img_wrap","list","banner_info");
        }
    script>
head>
<body>
    <a href="#" id="banner_info">a> 
    <div id="content" class="box">
       
        <div id="img_wrap">
            <a href="#" target="_blank"> 
                  <img src="0.jpeg" alt="第一张图片" title="第一张图片">
                a>
            <a href="#" target="_blank">  
                 <img src="it me.jpg" alt="第二张图片" title="第二张图片">
                a>
            <a href="#" target="_blank" > 
                第三张图片
            a>
            <a href="#" target="_blank">
                第四张图片
            a>
            <a href="#" target="_blank"> 
                 第五张图片a>
            <a href="#" target="_blank">
                 第六张图片a>
        div>
       
        <div id="list">
            
        div>
    div>
    <script>
        var babyzone=function(){
      
          
        //设置透明度  让所有图片的透明度为0
        function setOpacity(elem,level){
      
            if(elem.filters){
      
                elem.style.filter="alpha(opacity="+level+")";
            }
            else{
      
                elem.style.opacity=level/100;
            }

        }
        //渐入 设置当前图片的渐入效果
    function fadeIn(elem){
      
        setOpacity(elem,0);
        for(var i=0;i<20;i++){
      
          //匿名函数。自动执行
            (function(){
      
                var pos=i*5;//0  5  10  15  20  25 ...
                setTimeout(
                    function(){
      
                        setOpacity(elem,pos);//0  5  10  ...
                    },i*25
                )
            })(i);
        }
    }
//渐出 设置当前图片的渐出效果
    function fadeOut(elem){
      
        for(var i=0;i<=20;i++){
      
            (function(){
      
                var pos=100-i*5;
                setTimeout(function(){
      
                    setOpacity(elem,pos);
                },i*25)
            })(i);
        }
    }

    /*选择器的封装*/
    function id(name){
      
        return document.getElementById(name);
    }
    /*遍历函数?*/
    function each(arr,callback){
      
        if(arr.forEach){
      
            arr.forEach(callback);
    }
    else{
      
        for(var i=0;i<arr.length;i++){
      
            callback.call(this,arr[i],i,arr);
            //js自带的函数call()
        }
    }
    }

    //返回一个对象
    return{
      
        //count:图片的数量,wrapId:b包裹图片的DIV,uiId:按钮DIV,就是手动切换图片;infoId:信息栏
        scroll:function(count,wrapId,ulId,infoId){
      
                var self=this;
                var targetIdx=0;//目标图片序号
                var curIndex=0;//现在图片的序号
                var frag=document.createDocumentFragment();//创建一个虚拟的节点对象,包含所有的属性和方法     
                this.num=[];//存储各个li的应用,为下面的添加时间做准备;
                this.info=id(infoId);
                /*添加可点击下标*/
                 for(var i=0;i<count;i++){
      
                    (this.num[i]=frag.appendChild(document.createElement("span")))
                   // console.log(this.num[i]);
                    //innerHTML=i+1;
                 }

                id(ulId).appendChild(frag);
                //初始化信息;
                this.img=id(wrapId).getElementsByTagName("a");//每个图片 

                // console.log(self.img[0].children[0].title); 
                this.info.innerHTML=self.img[0].children[0].title;
                console.log(this.info.innerHTML)
                this.num[0].className="active";

                //将除了第一张外的所有图片都设置为透明
                each(this.img,function(elem,idx,arr){
      
                    if(idx!=0)  setOpacity(elem,0);
                });

                //为所有的li(也就是手动轮播添加)点击事件
                each(this.num,function(elem,idx,arr){
      
                    elem.onclick=function(){
      
                        self.fade(idx,curIndex);
                        curIndex=idx;
                        targetIdx=idx;
                    }
                });

                //自动轮播效果
                var itv=setInterval(function(){
      
                    if(targetIdx<self.num.length-1){
      
                        targetIdx++;
                    }else{
      
                        targetIdx=0;
                    }
                    self.fade(targetIdx,curIndex);
                    curIndex=targetIdx;
                },2000);
        },
   
//图片渐入渐出效果
    fade:function(idx,lastIdx){
      
        if(idx==lastIdx) return;
			var self=this;
			fadeOut(self.img[lastIdx]);
			fadeIn(self.img[idx]);
			each(self.num,function(elem,elemidx,arr){
      
				if (elemidx!=idx) {
      
					self.num[elemidx].className="";
				}else{
      
					self.num[elemidx].className="active";
					}
			});
			this.info.innerHTML=self.img[idx].children[0].title;
    }

}
        }();
        
 

    script>
body>
html>

你可能感兴趣的:(网页设计,JavaScript图片轮播,导航图片轮播,javascript,oposity,position)