基於JQ帶文字特效的輪播圖

基於JQ帶文字特效的輪播圖

css代碼:

*{margin:0;padding: 0;list-style:none;text-decoration:none;}
/*============
輪播圖淡入淡出,配文字效果樣式
 ============*/
.slider{position:relative;overflow:hidden;}
.slider ul li img{width:800px;height: 300px}
#slider_a{overflow:hidden;height:300px;}

.slider-arrows{position:absolute;top:50%;margin-top:-44px;width:100%}
.slider-arrows span{display:none;background-color:rgba(105,105,105,0.3);cursor:pointer;}
.slider-arrows span:hover{background-color:rgba(244,244,244,0.5);}
.slider-arrows span:nth-child(1){float:left;margin-left:1%}
.slider-arrows span:nth-child(2){float: right;margin-right:1%}

.slider-msg{position:absolute;top:50%;left:25%;margin-top:-42px;width:400px;}
.slider-msg i{font-style:normal;margin:5px;font-size:20px;opacity:0.8;color:#ffffff;font-weight:600;vertical-align:text-bottom;}
.slider-msg i:nth-child(1){font-size: 26px}
.slider-msg i:nth-child(2){font-size: 26px}
.slider-pagination{position:absolute;bottom:10px;width:100%;text-align: center;}
.slider-pagination span{display:inline-block;width:50px;height:8px;margin-right:5px;cursor:pointer;opacity:0.7;}

.i-position{display:inline-block;transform:translateY(300px);}
.i-animal{transform: translateY(0);transition:transform 1s;transition-delay: }

html代碼:

<body>
    <div style="width:800px;height:300px;background-color:#FFF0F5;margin: 0 auto;">
        <h4 style="text-align: center;">淡入淡出,配文字特效</h4>
        <!-- 輪播圖容器盒子 -->
        <div class="slider">
            <ul id="slider_a">
                <li><img src="../img/1.jpg" alt="vue.js橫行霸道"></li>
                <li><img src="../img/2.jpg" alt="原生JS,在冷風中瑟瑟發抖"></li>
                <li><img src="../img/3.jpg" alt="PHP大戰一切後端語言"></li>
            </ul>
            <div class="slider-arrows">
                <span><svg width="40" height="40" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 512"><path d="M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z"/></svg></span>
                <span><svg width="40" height="40" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 512"><path d="M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z"/></svg></span>
            </div>
            <div class="slider-msg">
                <div data-img="咖啡機客戶安徽分開始對啦"></div>
                <div data-img="搭建框架安防科技的驕傲看風景啊啊罰款是"></div>
                <div data-img="發酵奧斯卡法教綠山咖啡家我垃圾費了水電費了"></div>
            </div>
        </div>
    </div>

<script type="text/javascript" src="../jquery.min.js"></script>

js代碼

    /*---------------
     輪播圖類
     參數Obj是一個對象,對象要如下定義
     {
        "vessel":"dom1"//輪播圖容器
        "elemt":"dom2",// 獲取元素的輪播塊li
        "fontelemt":"dom3",//獲取元素的字體特效的包含元素
        "arrow":"dome3",//輪播圖的2側按鈕
        "time":"1000",//定時時間,默認5s(單位毫秒)
     }
     ---------------*/
    function createSliser(obj){
        var sliderObj = new Object();
        var vessel = $(obj.vessel);
        var slider_a = $(obj.elemt);
        var sliderdesc = $(obj.fontelemt);
        var arrow = $(obj.arrow);
        var settime = obj.time||5000;
        var arr = "cese";
        var nowpic = 1;
        var time;
        sliderObj.init = function(){
            spanBtn();
            nextPic();
            this.autoPlay();
            eventbind();
        }
        /*下一張*/
        function nextPic(){
            for(var i = 0;i<slider_a.length;i++){
                $(slider_a[i]).hide();
                $(sliderdesc[i]).hide();
            }
            if(nowpic>slider_a.length){
                nowpic = 1;
            }
            $(slider_a[nowpic-1]).fadeIn(2000)
            $(sliderdesc[nowpic-1]).fadeIn()
            wrapDesc();
            spanColor();
            nowpic++
        }
        /*前一張*/
        function proPic(){
            console.log(nowpic);
            for(var i = 0;i<slider_a.length;i++){
                $(slider_a[i]).hide();
                $(sliderdesc[i]).hide();
            }
            if(nowpic===0){
                nowpic = slider_a.length;
            }
            $(slider_a[nowpic-1]).fadeIn(2000);
            $(sliderdesc[nowpic-1]).fadeIn();
            wrapDesc();
            nowpic--;
        }
        /*事件綁定*/
        function eventbind(){
            var slider_pagination =$(".slider-pagination span");
            slider_pagination.on("click",function(e){
                var e =e.target||event.target;
                for(var i = 0;i<slider_a.length;i++){
                    $(slider_a[i]).hide()
                    $(sliderdesc[i]).hide()
                }
                nowpic = Number(e.dataset.id)+1;
                console.log(nowpic)
                $(slider_a[nowpic-1]).fadeIn(2000)
                $(sliderdesc[nowpic-1]).fadeIn()
                wrapDesc();
                spanColor();
            })
            vessel.on("mouseover",function(){
                clearInterval(time)
                arrow[0].style.display="block";
                arrow[1].style.display="block";
            })
            vessel.mouseout(function(){
                sliderObj.autoPlay();
                arrow[0].style.display="none";
                arrow[1].style.display="none";
            })
            arrow[0].onclick=function(){
                proPic();
            }
            arrow[1].onclick=function(){
                nextPic();
            }
        }
        /*文字渲染*/
        function wrapDesc (){
            var arr = [];
            //console.log(nowpic)
            var sliderdes =$(sliderdesc[nowpic-1])
            var desc = sliderdes.data('img');
            sliderdesc.html("");
            //console.log(desc);
            for(var i = 0;i<desc.length;i++){
                arr[i] = $("<i class='i-position'>"+desc[i]+"</i>");
                arr[i].css({"transition-delay":i*0.2+"s"})
                sliderdes.append(arr[i]);
            }
            setTimeout(function(){
                for(var i = 0;i<desc.length;i++){
                    arr[i].addClass('i-animal');
                }
            },100)
        }
        /*下方按鈕*/
        function spanBtn(){
            var btn = $("<div class='slider-pagination'></div>")
            for(var i=0;i<slider_a.length;i++){
                var tmp = $('<span data-id='+i+'></span>');
                btn.append(tmp);
            }
            vessel.append(btn);
        }
        function spanColor(){
            var slider_pagination =$(".slider-pagination span");
            for(var i = 0; i<slider_pagination.length;i++){
                slider_pagination[i].style.backgroundColor="#1E90FF";
            }
            slider_pagination[nowpic-1].style.backgroundColor="#BFEFFF";
        }
        /*自動播放*/
        sliderObj.autoPlay=function(){
            time=setInterval(nextPic,settime);
        }
        return sliderObj;
    }
    /*創建一個輪播圖對象*/
    var slidera = createSliser({
        "elemt":"#slider_a li",
        "fontelemt":".slider-msg div",
        "vessel":".slider",
        "arrow":".slider-arrows span",
        "time":"6000"
    });
    slidera.init();
</script>

具體效果可以訪問tangjietech.top首頁

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章