>  기사  >  웹 프론트엔드  >  JQuery 페이지 이미지 전환 및 뉴스 목록 스크롤 효과의 특정 구현_jquery

JQuery 페이지 이미지 전환 및 뉴스 목록 스크롤 효과의 특정 구현_jquery

WBOY
WBOY원래의
2016-05-16 17:21:181170검색

최근 페이지에서 좌우 사진 전환과 뉴스 목록 스크롤 효과를 사용해보았는데, 정리하면 다음과 같습니다.

이전 코드:

코드 복사 코드는 다음과 같습니다.















   
   

        新闻中心
       

         
       

   






css文件夹包含一个样式表css.css:

复主代码 代码如下:

/* Reset.css */
body{ 배경:#fff;색상:#444;높이:100%;줄 높이:1.4;}
html{높이:100%;overflow-y:scroll;-webkit-text-size-adjust:none;}
body,input,button,textarea,select,h1,h2,h3,h4,h5,h6{font:12px/1.5 Arial,Tahoma,Helvetica,"5b8b4f53",sans-serif;}
body, ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,blockquote,th,td{margin:0;padding:0;}
img{vertical-align:bottom;}
/* base.css */
a:link,a:visited,a:hover,a:active{cursor:pointer;text-decoration:none; }
a:active,a:focus {-moz-outline:none;outline:none;ie-dummy:expression(this.hideFocus=true);}
a:hover {text-장식:underline; }
li {list-style:none;}
ol li {display:inline;}
/*common.css*/
.outer{position:relative; 오버플로:숨김; 배경:url(../images/line.gif) 반복-x 하단; 테두리 하단:단색 1px #fff; 여백:0 자동;}
.banner{위치:절대; 왼쪽:50%; 상단:0; 여백 왼쪽:-990px; 높이:400px; width:1980px;overflow:hidden;}
    .flash_img {
        오버플로: 숨김;
        너비: 1980px;
        높이: 400px;
        위치: 상대
    }
    . 배너{높이:400px;}

    .flash_img .img-box {
        위치: 절대;
    }
    .flash_img .img-box li{float:left;}

    .flash_img img {
        디스플레이: 차단;
    }

    .flash_item {
        위치: 절대;
        오른쪽: 510px;
        하단: 10px;
        높이: 12px;
    }

    .flash_item li {
        background:url(../images/flash_item.png) no-repeat right;
        color: #D94B01;
        커서: 포인터;
        float: 왼쪽;
        글꼴 크기: 12px;
        높이: 12px;
        줄 높이: 12px;
        여백 왼쪽: 15px;
        text-align: center;
        너비: 1 2px;
    }

    .flash_item li.on
    {
        배경 위치:왼쪽;
        색상: #FFFFFF;
        글꼴 두께: 굵게;
        높이: 12px;
        line- 높이: 12px;
        너비: 12px;
    }

    .flash_item li img {
        디스플레이: 차단
    }   
/*default.css*/
.indexNews{width:700px; 높이:29px; 하단:0; 왼쪽:50%; 위치:절대; 여백-왼쪽:-480px; z-index:999;}
.indexNews Strong{color:#409dd9;float: left;}
.indexNews Strong a{color:#409dd9;text-꾸밈:none;}
.indexNews . 코어{높이:18px; 줄 높이:18px; 오버플로:숨김;}
.indexNews .core 스팬{color:#409dd9; margin-right:20px;}
.indexNews .core a{margin-left:10px;color:#666;}
.outer{height:440px;}


js 폴더에는 jquery-1.7.2.min.js, indexPic.js, kxbdSuperMarquee.js라는 세 가지 파일이 포함되어 있습니다. 첫 번째는 인터넷에서 직접 다운로드할 수 있고, 두 번째는 사진을 전환하는 것이고, 세 번째는 뉴스 목록을 스크롤하는 것입니다.

indexPic.js:

코드 복사 코드는 다음과 같습니다.

document.writeln("");
document.writeln("");
(function($) {
    $.fn.slideImg = function(settings) {
        settings = jQuery.extend({
            speed: "normal",
            timer: 1000
        }, settings);
        return this.each(function() {
            $.fn.slideImg.scllor($(this), settings);
        });
    };

    $.fn.slideImg.scllor = function($this, settings) {
        var index = 0;
        var scllorer = $(".img-box li", $this);
var size = scllorer.size();
        var SlideW = scllorer.outerWidth();
        var $selItem = $("

    ", {
                "클래스": "flash_item",
                html: function() {
                    var $selItemHTML = "";
                   if (size == 1) {
                       return;
                    } else if (크기 > 1 ) {
                      for (var i = 0; i < size; i ) {
                       i == 0 ? li class="">';
                       }
                     $selItemHTML;
                 }
               }
            }).appendTo($this);
            var li = $(".flash_item li", $this);
            var showBox = $(".img-box", $this);
            var IntervalTime = null;
            li.hover(function() {
                var that = this;
                if (intervalTime) {
                  clearInterval(intervalTime);
               }
                IntervalTime = setTimeout(function( ) {
                    index = li.index(that );
                    ShowAD(index);
                }, 200);
            }, function() {
              clearInterval(intervalTime);
                간격();
            });
    >     clearInterval(intervalTime);
                간격 ();
            });
            함수 간격() {
                IntervalTime = setInterval(function() {
                   ShowAD(index);
                    index ;
                    if (색인 == 크기 ) {
                       색인 = 0;
                    }
                }, settings.timer);
            }
    간격();
    var ShowAD = function(i) {
    showBox.animate({ "left": -i * SlideW }, settings.speed);
    li.eq(i) .addClass("on").siblings().removeClass("on");
            };
         };


    코드 복사

    코드는 다음과 같습니다.

    /**
     * @classDescription 超级Marquee,可做图片导航,图片轮换
     * @author Aken Li(www.kxbd.com)
     * @date 2009-07-27
     * @dependence jQuery 1.3.2
     * @DOM
     *     

     *         

       *              

    •  *              

    •  *         

     *     

     * @CSS
     *      #marquee {width:200px;height:50px;overflow:hidden;}
     * @Usage
     *      $('#marquee').kxbdSuperMarquee(options);
     * @options
     *        distance:200,//一次滚动的距离
     *        duration:20,//缓动效果,单次移动时间,越小速度越快,为0时无缓动效果
     *        time:5,//停顿时间,单位为秒
     *        direction: 'left',//滚动方向,'left','right','up','down'
     *        scrollAmount:1,//步长
     *        scrollDelay:20//时长,单位为毫秒
     *        isEqual:true,//所有滚动的元素长宽是否相等,true,false
     *        loop: 0,//循环滚动次数,0时无限
     *        btnGo:{left:'#goL',right:'#goR'},//控制方向的按钮ID,有四个属性left,right,up,down分别对应四个方向
     *        eventGo:'click',//鼠标事件
     *        controlBtn:{left:'#goL',right:'#goR'},//控制加速滚动的按钮ID,有四个属性left,right,up,down分别对应四个方向
     *        newAmount:4,//加速滚动的步长
     *        eventA:'mouseenter',//鼠标事件,加速
     *        eventB:'mouseleave',//鼠标事件,原速
     *        navId:'#marqueeNav', //导航容器ID,导航DOM:
    • 1
    • 2
      • ,导航CSS:.navOn
         *        eventNav:'click' //导航事件
         */
        (function($){

            $.fn.kxbdSuperMarquee = function(options){
                var opts = $.extend({},$.fn.kxbdSuperMarquee.defaults, options);

                return this.each(function(){
                    var $marquee = $(this);//滚动元素容器
                    var _scrollObj = $marquee.get(0);//滚动元素容器DOM
                    var scrollW = $marquee.width();//滚动元素容器的宽度
                    var scrollH = $marquee.height();//滚动元素容器的高度
                    var $element = $marquee.children(); //滚动元素
                    var $kids = $element.children();//滚动子元素
                    var scrollSize=0;//滚动元素尺寸
                    var _type = (opts.direction == 'left' || opts.direction == 'right') ? 1:0;//滚动类型,1左右,0上下
                    var scrollId, rollId, isMove, marqueeId;
                    var t,b,c,d,e; //滚动动画的参数,t:当前时间,b:开始的位置,c:改变的位置,d:持续的时间,e:结束的位置
                    var _size, _len; //子元素的尺寸与个数
                    var $nav,$navBtns;
                    var arrPos = [];
                    var numView = 0; //当前所看子元素
                    var numRoll=0; //轮换的次数
                    var numMoved = 0;//已经移动的距离

                                                                                                                                                                               요소의 크기
        var navHtml = '

          ';
          if (opts.isEqual) {
          _size = $k ids[_type?'outerWidth':'outerHeight']( );
          _len = $kids.length;
          scrollSize = _size * _len;
          for(var i=0;i<_len;i ){
          arrPos.push(i*_size);
          navHtml = '
        • ' (i 1) '
        • ';
          }
          }else{
          $kids.each(function(i){
          arrPos .push(scrollSize) ;
                            scrollSize = $(this)[_type?'outerWidth':'outerHeight']() });
          }
          navHtml = '
        ';

        //스크롤 요소의 전체 크기가 컨테이너 크기보다 작습니다. 스크롤이 없습니다
        RollW: scrollH)) return
                                // 스크롤 하위 요소를 복제하고 스크롤 요소 뒤에 삽입합니다. , 스크롤 요소의 너비를 설정합니다
                                                          ':'height',scrollSize*2);

        //회전 탐색
        if (opts.navId)
        $nav = $ (opts.navId).append(navHtml).hover (중지, 시작);
        $ navbtns = $ ('li', $ nav)
        $ navbtns.each (function (i) {
        $ (this) .Bind (optionnav,functions(){
        if(isMove) return;
        if(numView==i) return;
        rollFunc(arrPos[i]);
                                            $navBtns .eq(numView).removeClass('navOn ');
        numView = i;
        $(this).addClass('navOn');
        });
                  }; | opts.direction == '아래') {
                                                                   ~                          ; ':'scrollTop'] = 0;
        }

        if(opts.isMarquee){
        //스크롤 시작
        //marqueeId = setInterval(scrollFunc, opts.scrollDelay);
        marqueeId = setTimeout(scrollFunc, opts.scrollDelay);
                                                        > ( MarqueeId = setTimeout(scrollFunc, opts.scrollDelay);
        🎜>
                                                                           ~ ~ ~ >                                                else{
                                                                                                                            십자를 쳐서 회전을 중지합니다.
        $marquee.hover(stop, start );
        }

        //앞뒤로 걷기 제어
        if(opts.btnGo){
        $.each(opts.b tnGo, function(i,val){
                                                                         val).bind(opts.eventGo,function(){
                                                                                                         rollFunc();
        {
        그만( );
        시작();
        }
                                                    Func(){
        var _dir = (opts.direction == '왼쪽' || opts.direction == '오른쪽') ? '왼쪽으로 스크롤' :'scrollTop';

        if(opts.isMarquee){
                                                                ( marqueeId)를 통해 s.direction == 'up'?1:-1)*opts.scrollAmount ;
                                     else{
                           if(opts.duration){
                            if(t                         isMove = true;
                                   var newPos = Math.ceil(easeOutQuad(t,b,c,d) );
                                   if(t==d){
                                  newPos = e;
                                 }
                              }else{
                                newPos = e;
                                                        isMove = false;
                                  return;
                            }
                        }else{
                               var newPos = e;
                             clearInterval(scrollId);
                         }
                       }

                       if(선택 .direction == '왼쪽' || opts.direction == '위'){
                           if(newPos>=scrollSize){
                             newPos-=scrollSize;
                           }
                        }else{
        > 🎜>               _scrollObj[_dir] = newPos;

                        if(opts.isMarquee){
        marqueeId = setTimeout(scrollFunc, opts.scrollDelay);
                        }else if(t if(scrollId) clearTimeout(scrollId);
        scrollId = setTimeout(scrollFunc, opts.scrollDelay);
        }else{
        isMove = false;
        }

        };

        function rollFunc(pPos){
        isMove = true;
        var _dir = (opts.direction == 'left' || opts.direction == 'right') ? 'scrollLeft':'scrollTop';
        var _neg = opts.direction == 'left' || opts.direction == 'up'?1:-1;

        numRoll = numRoll +_neg;
        //得到当前所看元素序号并改变导航CSS
        if(pPos == undefined&&opts.navId){
        $navBtns.eq(numView).removeClass('navOn');
        numView +=_neg;
        if(numView>=_len){
                                numView = 0;
                            }else if(numView<0){
        numView = _len-1;
        }
        $navBtns.eq(numView).addClass('navOn');
        numRoll = numView;
        }

        var _temp = numRoll<0?scrollSize:0;
        t=0;
        b=_scrollObj[_dir];
        //c=(pPos != undefined)?pPos:_neg*opts.distance;
        e=(pPos != undefined)?pPos:_temp+(opts.distance*numRoll)%scrollSize;
        if(_neg==1){
        if(e>b){
                                c = e-b;
                            }else{
                                c = e+scrollSize -b;
                            }
                        }else{
                            if(e>b){
                                c =e-scrollSize-b;
                            }else{
                                c = e-b;
                            }
                        }
                        d=opts.duration;

                        //scrollId = setInterval(scrollFunc, opts.scrollDelay);
                        if(scrollId) clearTimeout(scrollId);
                        scrollId = setTimeout(scrollFunc, opts.scrollDelay);
                    }

                    function start(){
                        rollId = setInterval(function(){
                            rollFunc();
                        }, opts.time*1000);
                    }
                    function stop(){
                        clearInterval(rollId);
                    }

                    function easeOutQuad(t,b,c,d){
                        return -c *(t/=d)*(t-2) + b;
                    }

                    function easeOutQuint(t,b,c,d){
                        return c*((t=t/d-1)*t*t*t*t + 1) + b;
                    }

        });
        };
        $.fn.kxbdSuperMarquee.defaults = {
        isMarquee:false,//Marquee인지 여부
        isEqual:true,//길이와 너비 모든 스크롤 요소가 같음, true, false
        loop: 0, //루프 스크롤 수, 0에서 무한대
        newAmount: 3, //가속 스크롤 단계 크기
        eventA:' mousedown', //마우스 이벤트, 가속
        eventB:'mouseup', //마우스 이벤트, 원래 속도
        isAuto:true,//자동 회전 여부
        time:5,//일시 중지 시간 초
        지속 시간:50 , //이징 효과, 단일 이동 시간, 속도가 작을수록 빠릅니다. 0이면 이징 효과가 없습니다.
        eventGo:'click', //마우스 이벤트, 이동 앞으로 및 뒤로
        방향: ' 왼쪽',//스크롤 방향, '왼쪽','오른쪽','위','아래'
        scrollAmount:1,//단계 크기
        scrollDelay:10, //기간
        eventNav:' 클릭'//탐색 이벤트
        };

        $.fn.kxbdSuperMarquee.setDefaults = function(settings) {
        $.extend( $.fn. kxbdSuperMarquee.defaults, settings);
        };

        })(jQuery);


    이미지 폴더 아이콘:
    JQuery 페이지 이미지 전환 및 뉴스 목록 스크롤 효과의 특정 구현_jquery
    성명:
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.