亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

Jquery實現仿騰訊娛樂頻道焦點圖(幻燈片)特效

2019-11-20 13:00:27
字體:
來源:轉載
供稿:網友

一個仿騰訊娛樂頻道焦點圖輪播的插件

ui3g.js

復制代碼 代碼如下:

/*
頂部大圖滾動
*/
var slide = (function() {
    var quadEaseOut;
    var doc = document;
    var $ = function(s){
        return document.getElementById(s);
    }
    /**
     獲取索引值,工具類
     @param {Element} current 當前元素
     @param {Object} obj 元素集合
    **/
    var getIndex = function(current, obj) {
        for (var i=0; i<obj.length; i++) {
            if (obj[i] == current) {
                return i;
            }
        }
    };
    /**
     @param {Element} el 目標元素
    **/
    var siblings = function(el) {
        var r = [],
            n = el.parentNode.firstChild;
        for ( ; n; n = n.nextSibling ) {
            if ( n.nodeType === 1 && n !== el ) {
                r.push( n );
            }
        }
        return r;
    };
    /**
     設置 Slide 寬高
     @param {Element} el Slide 元素
     @param {Number} width Slide 寬度
     @param {Number} height Slide 高度
    **/
    var setSlideWH = function(el, width, height) {
        var styleW,
            styleH;
        if (width == '100%') {      // 自適應寬度
            styleW = '100%';
        } else {                    // 定寬
            styleW = width + 'px';
        }
        if (height == '100%') {     // 自適應高度
            styleH = '100%';
        } else {                    // 定高
            styleH = height + 'px';
        }
        el.style.width = styleW;
        el.style.height = styleH;
    };
    var readStyle = function(obj, name){
        if(obj.style[name]){
            return obj.style[name];
        }else if(obj.currentStyle){
            return obj.currentStyle[name]
        }else if(document.defaultView && document.defaultView.getComputedStyle){
            var d=document.defaultView.getComputedStyle(obj,null);
            return d.getPropertyValue(name)
        }else{
            return null
        }
    };
    var style = {
        setOpacity : function(obj,opacity){
            if(typeof(obj.style.opacity) != 'undefined'){
                obj.style.opacity = opacity;
            }else{
                obj.style.filter = 'Alpha(Opacity=' + (opacity*100) + ')';
            };
        }
    };
    /* 動畫 */
    var extend = {
        /**
         漸顯元素
         @param {Element} target 目標元素
        **/
        fadeIn : function(obj,time){
            if(readStyle(obj, 'display') == 'none'){
                obj.style.display = 'block';
            };
            style.setOpacity(obj,0);
            time = time || 200;
            var opacity = 0,step = time / 20;
            clearTimeout(obj.showT);
            obj.showT = setTimeout(function(){
                if(opacity >= 1) { style.setOpacity(obj,1); return; }
                opacity +=1/step;
                style.setOpacity(obj,opacity);
                obj.showT = setTimeout(arguments.callee,20);
            },20);
        },
        /**
         漸隱元素
         @param {Element} target 目標元素
        **/
        fadeOut : function(obj,time){
            time = time || 200;
            style.setOpacity(obj,1);
            var opacity = 1,step = time / 20;
            clearTimeout(obj.showT);
            obj.showT = setTimeout(function(){
                if(opacity <= 0){
                    obj.style.display = 'none';
                    style.setOpacity(obj,0);
                    return;
                };
                opacity -= 1/step;
                obj.showT = setTimeout(arguments.callee,20);
            },20);
        },
        /**
         動畫元素
         @param {Element} target 目標元素
         @param {String} key target樣式
         @param {Number} start key初始值
         @param {Number} end key結束值
         @param {Number} speed 速度
         @param {Function} endFn 結束時的回調
         @param {String} u 樣式單位
        **/
        actPX : function(obj,key,start,end,speed,endFn,u){
          if(typeof(u) == 'undefined'){u = 'px'};
          clearTimeout(obj['_extend_actPX' + key.replace(//-/./=/,'_') + '_timeOut']);
          if(start > end){
            speed = - Math.abs(speed);
          }else{
            speed = Math.abs(speed);
          };
          var now = start;
          var length = end - start;
          obj['_extend_actPX' + key.replace(//-/./=/,'_') + '_timeOut'] = setTimeout(function(){
            now += speed;
            var space = end - now;
            if(start < end){
              if(space < length/3){
                speed = Math.ceil(space/3);
              };
              if(space <= 0){
                obj[key] = end + u;
                if(endFn){endFn()};
                return;
              };
            }else{
              if(space > length/3){
                speed = Math.floor(space/3);
              };
              if(space >= 0){
                obj[key] = end + u;
                if(endFn){endFn()};
                return;
              };
            };
            obj[key] = now + u;
            obj['_extend_actPX' + key.replace(//-/./=/,'_') + '_timeOut'] = setTimeout(arguments.callee,20);
          },20);
        }
    }
    /**
     配置
    **/
    var config = {
        imgData: [],                    // 初使化圖片信息
        imgTargetId: '',                // 初使化 Slide 目標 ID
        imgWidth: '100%',               // 初使化圖片寬度
        imgHeight: '100%',              // 初使化圖片高度
        imgAuto: false,                 // 初使化自動播放
        imgInterval: 3000,              // 初使化間隔時間
        imgDataLen: 0,                  // 初使化圖片數量
        goSwitch: true,                 // 鼠標懸停時切換狀態
        index: 4,                       // 焦點所在索引值
        _index: 0,
        curImg: 5,
        indexShow : 5
    };
    /**
     生成并插入 Slide 結構
    **/
    var buildSlide = function() {
        // 注入 Slide 結構
        var panelHtml  = $('_slide').getElementsByTagName('ul')[0].innerHTML;
        var aLi = $('_slide').getElementsByTagName('ul')[0].getElementsByTagName('li');
        $('_slide').getElementsByTagName('ul')[0].innerHTML = panelHtml + panelHtml;
        // 設置寬高
        setSlideWH($(config.imgTargetId), config.imgWidth, config.imgHeight);
        $('_slide').getElementsByTagName('ul')[0].style.left = '-' + aLi[0].offsetWidth * 4 + 'px';
    };
    quadEaseOut = function (t, b, c, d, s) {
       return -c *(t/=d)*(t-2) + b;
    };
    var move = function(){
        //var e = this;
        clearTimeout(config.timer),
        config.t < 50 ? (boxMoveTo(Math.round(quadEaseOut(config.t += 3, config.b, config.c, 50))), config.timer=setTimeout(function(){move()}, 30)) : boxMoveTo(config.target)
    }
    var boxMoveTo = function(e){
        $('slide_list').style.left = e+"px"
    }
    //var dotNum = 0;
    var d  = false;
    var run = function(e, t){
        var slideList = $('slide_list').getElementsByTagName('li');
        dotList = $("focus_dot").getElementsByTagName('li');
            slideList[config._index].className = '';
            for(var i=0; i<config.imgData*2; i++){
                slideList[i].className = '';
                slideList[i].getElementsByTagName("p")[0].style.display = 'none';
                }
            for(var i=0; i<config.imgData; i++){
                dotList[i].className = '';
                }
        e = e < 0 ? config.imgData - 1 : e > config.imgData ? 1 : e,
        config.target = -Math.abs(slideList[0].offsetWidth)*(config.index = e),
        config.t = 0,
        config.b = t ? config.target - slideList[0].offsetWidth : config.target + slideList[0].offsetWidth,
        config.c = config.target - config.b,
        move();
        config.curImg = config.index + 1 > 6 ? 1 : (config.index + 1);
        slideList[config.curImg].className = 'cur';
        var dotN = 0;
        if(config.index >= 4){
            dotN = config.index - 4;
        }else{
            dotN = config.curImg;
        }
        dotList[dotN].className = "current";
        slideList[config.curImg].getElementsByTagName("p")[0].style.display = 'block';
        config._index = config.curImg;
    }
    /**
     自動切換
    **/
    var b = false, c = false, timerA = null;
    var autoSwitch = function() {
        var slideList = $('slide_list').getElementsByTagName('li');
        // 遍歷觸發器
        for (var i=0; i<config.imgDataLen; i++) {
            // 找到當前觸發器
            if (slideList[i].className == 'cur') {
                // 獲得當前觸發器的索引
                config.index = getIndex(slideList[i], slideList);
            }
        }
        var autoFun = function() {
            if (config.goSwitch) {
                config.index = config.index == 5 ? 0 : config.index;
                if(!b){
                    b = true;
                    config.index = 0;
                }
                if(config.index == 3 && !c){
                    clearInterval(timerA);
                    timerA = setInterval(autoFun, 10000);
                    c = true;
                }else if(c){
                    c = false;
                    clearInterval(timerA);
                    timerA = setInterval(autoFun, config.imgInterval);
                }
                //console.log(config.index);               
                run(config.index, !1);             
                config.index += 1;
            }
        };
        timerA = setInterval(autoFun, config.imgInterval);
    };
    /**
     手指事件
    **/
    var touchFun = function(evt){
        var $ = function(o){ return document.querySelector(o)}, $$ = function(o){ return document.querySelectorAll(o)}, touchInfo = {startX:0, endX:0}, slide = $('#slide'), btnL = $('#sliderL'), btnR = $('#sliderR');
        slide.addEventListener('touchstart', function(evt) {
               evt.preventDefault();      
               if(evt.changedTouches.length == 0)  return;
               touchInfo.startX = evt.changedTouches[0].pageX;
        }, false);
        slide.addEventListener('touchend', function(evt) {
               evt.preventDefault();
               if(evt.changedTouches.length == 0) return;
               touchInfo.endX = evt.changedTouches[0].pageX;
               var offset = touchInfo.endX - touchInfo.startX;
               if(offset < 0) {
                    run(++config.index, !1)
               } else if(offset > 0) {
                   run(--config.index, !0)
               }else{
                    if(evt.target.parentNode.parentNode.className == 'cur'){
                        window.open(evt.target.parentNode.getAttribute('href'), '_blank');
                    }else{
                        return;
                    }
               }
        },false);
        btnL.addEventListener('touchend', function() {run(++config.index, !1)}, false)
        btnR.addEventListener('touchend', function() {run(--config.index, !0)}, false)
    };
    return {
        init: function(obj, e) {
            // 獲取配置信息
            config.imgData = obj.data;                              // 設置圖片信息
            config.imgTargetId = obj.targetId;                      // 設置 Slide 目標 ID
            config.imgWidth = obj.width || config.imgWidth;         // 設置圖片寬度
            config.imgHeight = obj.height || config.imgHeight;      // 設置圖片高度
            config.imgAuto = obj.auto || config.imgAuto;            // 設置自動播放
            config.imgInterval = obj.interval || config.imgInterval;// 設置間隔時間
            //config.imgDataLen = config.imgData.length;                // 設置圖片數量
            // 生成 Slide 結構
            buildSlide();
            var slideList = $('slide_list').getElementsByTagName('li');
            $('slide_list').style.width = slideList[0].offsetWidth*slideList.length + 'px';
            slideList[config.curImg].className = 'cur';
            var btnL = $('sliderL'), btnR = $('sliderR'), btnClose = $('slidClosed');
            btnR.onclick = function(){ 
                clearInterval(timerA);
                config.index += 1;
                run(config.index, !1)
            }
            btnL.onclick = function(){
                clearInterval(timerA);
                config.index -= 1;
                run(config.index, !0)
            }
            $('slide').onmouseover = function(event){
                config.index = Math.ceil(Math.abs(parseInt($('_slide').getElementsByTagName('ul')[0].style.left)/slideList[0].offsetWidth));
                clearInterval(timerA);
                timerA = null;
                event.stopPropagation();
            }
            $('slide').onmouseout = function(event){
                if (config.imgAuto) {
                    autoSwitch();
                }
                config.index = config.curImg;
                event.stopPropagation();
            }
            if(/ipad;/i.test(navigator.userAgent.toLowerCase())){
                touchFun(e);
            }
            // 自動切換
            if (config.imgAuto) {
                autoSwitch();
            }
               dotList = $("focus_dot").getElementsByTagName('li');
                var n;
                for(n = 0; n < dotList.length; n++ ){
                        dotList[n].index = n;
                        dotList[n].onclick = function() {  
                            if(config.curImg == this.index || config.curImg == this.index + 5) return;
                            var n = 0;
                            n = config.curImg > 4 ? 0 : config.curImg;
                            if(this.index > n){
                                run(this.index-1, !1);
                            }else{
                                run(this.index-1, !0)
                            }
                            config.curImg = this.index;
                        }
                }
        }
    }
})();

html

復制代碼 代碼如下:

<div class="slider-container" id="slide" style="width: 100%; height: 480px;">
  <div id="_slide" class="slider-wrap">
    <ul id="slide_list">
      <li bosszone="Jdt">
        <a href="#" class="pic"> <img src="images/demo1.jpg" width="830" height="350" border="0">
        <p class="st_ty">《北愛》陳思誠激吻佟麗婭 公主抱不慎走光</p>
        </a>
        <div class="slide_Bg"></div>
      </li>
      <li bosszone="Jdt">
        <a href="#" class="pic"> <img src="images/demo2.jpg" width="830" height="350" border="0">
        <p class="st_ty">林志玲撈金魚尾紋再現 遭男子摸背熊抱尷尬擠笑</p>
        </a>
        <div class="slide_Bg"></div>
      </li>
      <li  bosszone="Jdt">
        <a href="#" class="pic"> <img src="images/demo3.jpg" width="830" height="350" border="0">
        <p class="st_ty">芙蓉姐姐大擺S型秀瘦腰長腿 調戲記者:想追求我?</p>
        </a>
        <div class="slide_Bg"></div>
      </li>
      <li  bosszone="Jdt">
        <a href="#" title="" class="pic"> <img src="images/demo4.jpg" width="830" height="350" border="0">
        <p class="st_ty">柳巖:消費我 你們在我胸前也看不出一朵花來</p>
        </a>
        <div class="slide_Bg"></div>
      </li>
      <li>
        <dl>
          <dd id="ad1"  bosszone="jdtAd1">
            <a href="#" class="pic"> <img src="images/89854294.jpg" width="363" height="350" border="0">
            <p class="st_ty">萌妹教你白全身</p>
            </a> </dd>
          <dd id="ad2"  bosszone="jdtAd2">
            <a href="#" class="pic"> <img src="images/90233983.jpg" width="156" height="350" border="0">
            <p class="st_ty">學我按3穴位變大胸</p>
            </a> </dd>
          <dd id="ad3"  bosszone="jdtAd3">
            <a href="#" class="pic"> <img src="images/89854500.jpg" width="156" height="350" border="0">
            <p class="st_ty">男人更愛“壞”女人</p>
            </a> </dd>
          <dd id="ad4"  bosszone="jdtAd4">
             <a href="#" class="pic"> <img src="images/89858252.jpg" width="156" height="350" border="0">
            <p class="st_ty">女神自曝美胸手法</p>
            </a> </dd>
        </dl>
        <div class="slide_Bg"></div>
      </li>
    </ul>
  </div>
  <a href="javascript:void(0);" class="slider-btn slider-btn-l" id="sliderL" bosszone="photoPre"></a>
  <a href="javascript:void(0);" class="slider-btn slider-btn-r" id="sliderR" bosszone="photoNext"></a>
  <ul id="focus_dot">
    <li class="current">1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
  </ul>
</div>
<script>
            var $ = function(s){
                    return document.getElementById(s);
                }
            //參數配置
            slide.init({
                //width: 100%,    // 焦點圖寬度(非必須,默認值自適應)
                height: 390,   // 焦點圖高度(非必須,默認值自適應)
                auto: true,   // 是否自動切換(非必須,默認值 false)
                interval: 5000,   // 切換間隔時間(非必須,默認值 3000,當 auto 為 true 時有效)
                targetId: 'slide',  // html 對應的焦點圖 ID(必須)
                data: $('_slide').getElementsByTagName('li').length// 焦點圖數據(必須)
            });
        </script>
<script>window.onerror=function(){return true;};</script>

以上就是給大家分享的jQuery仿騰訊娛樂頻道焦點圖特效的全部內容,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲人成网站777色婷婷| 91色视频在线导航| 亚洲女在线观看| 日韩av中文字幕在线| 日韩在线一区二区三区免费视频| 欧美性极品xxxx娇小| 国产日本欧美一区| 亚洲欧洲黄色网| 91美女福利视频高清| 亚洲一区美女视频在线观看免费| 性欧美视频videos6一9| 国产综合视频在线观看| 色噜噜狠狠色综合网图区| 免费不卡在线观看av| 91国产视频在线播放| 亚洲最大成人在线| 国产精品自拍偷拍视频| 国产精品18久久久久久麻辣| 久久精品国产欧美亚洲人人爽| 国产成人高潮免费观看精品| 亚洲福利视频专区| 欧美日韩国产色视频| 日韩av在线免费| 亚洲精品自在久久| 91久久精品国产91久久性色| 亚洲欧洲在线视频| 亚洲人成电影在线播放| 国产午夜精品美女视频明星a级| 欧美一级免费视频| 亚洲欧美色婷婷| 欧美黄色免费网站| 欧美亚洲日本黄色| 中文字幕日韩av综合精品| 欧美激情视频网| 在线观看日韩av| 午夜精品一区二区三区视频免费看| 国产日韩中文在线| 亚洲片av在线| 欧美激情第1页| 亚洲精品成人av| 日韩成人激情在线| 欧美精品在线第一页| 久久久久久尹人网香蕉| 高清视频欧美一级| 国模私拍视频一区| 国产亚洲aⅴaaaaaa毛片| 日韩av在线影院| 亚洲色图35p| 国产欧美精品xxxx另类| 日韩欧美高清视频| 欧美孕妇毛茸茸xxxx| 欧美国产日韩xxxxx| 欧美性20hd另类| 色偷偷av一区二区三区乱| 欧美精品少妇videofree| 一本色道久久88亚洲综合88| 精品偷拍各种wc美女嘘嘘| 亚洲精品欧美极品| 亚洲一区av在线播放| 欧美午夜片在线免费观看| 国产日韩欧美电影在线观看| 日韩精品在线观看一区二区| 日本欧美中文字幕| 91情侣偷在线精品国产| 成人激情电影一区二区| 日韩专区中文字幕| 日本精品视频在线播放| 亚洲影院色无极综合| 中文一区二区视频| 久久人人爽人人爽人人片av高请| 国产精品青草久久久久福利99| 日韩视频在线一区| 亚洲国产欧美一区二区三区同亚洲| 亚洲人在线视频| 中文字幕久久久| 精品免费在线视频| 成人免费直播live| 日韩av中文字幕在线免费观看| 欧美丝袜一区二区三区| 欧美插天视频在线播放| 热久久99这里有精品| 在线观看精品自拍私拍| 色偷偷偷亚洲综合网另类| 国产一区二区激情| 国产精自产拍久久久久久| 97色在线观看| 97人洗澡人人免费公开视频碰碰碰| 亚洲精品第一国产综合精品| 亚洲欧洲在线看| 在线亚洲欧美视频| 97涩涩爰在线观看亚洲| 欧美性xxxxxxxxx| 国产精品久久一区| 国产精品久久久一区| 日韩电影免费观看在线观看| 中文字幕一区日韩电影| 萌白酱国产一区二区| 国产中文字幕亚洲| 亚洲日本欧美日韩高观看| 91精品视频在线免费观看| 久久在线观看视频| 欧美日韩高清区| 亚洲视频999| 午夜精品久久久久久久男人的天堂| 日韩高清a**址| 亚洲成人网久久久| 亚洲社区在线观看| 亚洲欧美日韩中文在线制服| 国产精品久久久亚洲| 乱亲女秽乱长久久久| 日本aⅴ大伊香蕉精品视频| 国产成+人+综合+亚洲欧美丁香花| 国产精品入口日韩视频大尺度| 欧美激情网站在线观看| 亚洲欧美日韩精品久久亚洲区| 欧美日韩亚洲国产一区| 欧美精品久久一区二区| 日韩综合中文字幕| 久久影视三级福利片| 中文字幕一区日韩电影| www.久久撸.com| 18性欧美xxxⅹ性满足| 91精品国产色综合久久不卡98口| 精品视频9999| 亚洲第一天堂无码专区| 久久欧美在线电影| 国内揄拍国内精品| 国产精品亚洲自拍| 国产精品免费久久久久久| 亚洲专区国产精品| 亚洲免费成人av电影| 91久久精品国产91久久性色| 亚洲激情免费观看| 亚洲白拍色综合图区| 色综合老司机第九色激情| 中文字幕免费国产精品| 国产精品成人免费视频| 亚洲一区二区免费在线| 亚洲电影免费观看高清完整版在线| 久久免费少妇高潮久久精品99| 亚洲福利视频二区| 日本一区二区在线播放| 亚洲欧美一区二区三区在线| 亚洲一区二区在线| 欧美大肥婆大肥bbbbb| 欧美激情一区二区三级高清视频| 国产区精品在线观看| 日韩av在线最新| 国模视频一区二区三区| 久久久女女女女999久久| 亚洲高清av在线| 国产精品美乳在线观看| 日韩国产精品视频| 亚洲人线精品午夜| 国产主播精品在线| 欧美激情a在线| 中文字幕免费精品一区高清| 亚洲a∨日韩av高清在线观看| 国产mv免费观看入口亚洲| 日韩av中文字幕在线免费观看| 亚洲日韩中文字幕在线播放| 亚洲free性xxxx护士hd| 亚洲欧美日韩爽爽影院| 国产视频在线一区二区|