js實(shí)現(xiàn)圖片滑動(dòng)顯示效果-創(chuàng)新互聯(lián)

               js實(shí)現(xiàn)圖片滑動(dòng)顯示效果

成都創(chuàng)新互聯(lián)從2013年成立,先為承德縣等服務(wù)建站,承德縣等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為承德縣企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。

今天用戶提出一個(gè)需求,要實(shí)現(xiàn)一個(gè)滑動(dòng)顯示新聞列表的效果,具體就是圖片新聞自動(dòng)滑動(dòng)顯示,鼠標(biāo)移上去就停止滑動(dòng),移開(kāi)就繼續(xù)滑動(dòng);效果如下:

第一:先用HTML和CSS實(shí)現(xiàn)顯示,主要HTML代碼如下:

         

                  <div id="demo"> <div id="indemo"> <div id="demo1"> <asp:Repeater ID="rptImgList" runat="server"> <ItemTemplate> <div class="container"> <div class="img"> <a href='../news/news.aspx?newsId=<%#Eval("RecordId")%>' target="_blank" title='<%#Eval("NewTitle") %>'> <%#GetContentsImg(Eval("Content")) %> </a> </div> <div class="title"> <a href='../news/news.aspx?newsId=<%#Eval("RecordId")%>' target="_blank" title='<%#Eval("NewTitle") %>'> <%#Eval("NewTitle") %></a> </div> </div> </ItemTemplate> </asp:Repeater> </div> <div id="demo2"></div> </div> </div>

 第二:前臺(tái)主要用到的css代碼如下:

.zfNews{ width:99.8%; height:334px; border:1px solid #ccc;}

#demo{overflow: hidden; width:100%; height:135px; margin-top:5px;margin-left:10px;}
#indemo{float: left;width: 800%;}
#demo1{float: left;}
#demo2{float: left;}

#demo .container{ height:100%; width:150px; float:left; margin-left:13px;}
#demo .container .img{ width:100%; height:100px; float:left; border:1px solid #ccc;padding:3px;}
#demo .container .img img{ width:146px; height:96px; margin:2px;}
#demo .container .title{ width:100%; height:35px; line-height:35px; float:left;text-align:center;}

第三,前臺(tái)頁(yè)面構(gòu)造好了,獲取數(shù)據(jù)的方法就不寫(xiě)了,大同小異,現(xiàn)在就是用js實(shí)現(xiàn)圖片新聞滑動(dòng)效果了

1、用傳統(tǒng)的js來(lái)實(shí)現(xiàn)代碼如下,很簡(jiǎn)單:

     <script type="text/javascript">
 var speed = 10;
var tab = document.getElementById("demo");
var tab1 = document.getElementById("demo1");
var tab2 = document.getElementById("demo2");
                                    tab2.innerHTML= tab1.innerHTML;
function Marquee() {
if (tab2.offsetWidth - tab.scrollLeft <= 0)
                                            tab.scrollLeft-= tab1.offsetWidth
else {
                                            tab.scrollLeft++;
                                        }
                                    }
//設(shè)置定時(shí)執(zhí)行 var myTime = setInterval(Marquee, speed);
                                    tab.onmouseover= function () { clearInterval(myTime); }
                                    tab.onmouseout= function () { myTime = setInterval(Marquee, speed); };
</script>

2.在網(wǎng)上看到一個(gè)用jquery實(shí)現(xiàn)的,就順便借鑒了以下,Marquee.js代碼如下:

(function($){
    $.fn.Marquee= function(options){
var opts = $.extend({},$.fn.Marquee.defaults, options);
        
return this.each(function(){
var $marquee = $(this);//滾動(dòng)元素容器 var _scrollObj = $marquee.get(0);//滾動(dòng)元素容器DOM var scrollW = $marquee.width();//滾動(dòng)元素容器的寬度 var scrollH = $marquee.height();//滾動(dòng)元素容器的高度 var $element = $marquee.children(); //滾動(dòng)元素 var $kids = $element.children();//滾動(dòng)子元素 var scrollSize=0;//滾動(dòng)元素尺寸 var _type = (opts.direction == 'left' || opts.direction == 'right') ? 1:0;//滾動(dòng)類型,1左右,0上下 //防止?jié)L動(dòng)子元素比滾動(dòng)元素寬而取不到實(shí)際滾動(dòng)子元素寬度            $element.css(_type?'width':'height',10000);
//獲取滾動(dòng)元素的尺寸 if (opts.isEqual) {
                scrollSize= $kids[_type?'outerWidth':'outerHeight']() * $kids.length;
            }else{
                $kids.each(function(){
                    scrollSize+= $(this)[_type?'outerWidth':'outerHeight']();
                });
            }
//滾動(dòng)元素總尺寸小于容器尺寸,不滾動(dòng) if (scrollSize<(_type?scrollW:scrollH)) return; 
//克隆滾動(dòng)子元素將其插入到滾動(dòng)元素后,并設(shè)定滾動(dòng)元素寬度            $element.append($kids.clone()).css(_type?'width':'height',scrollSize*2);
            
var numMoved = 0;
function scrollFunc(){
var _dir = (opts.direction == 'left' || opts.direction == 'right') ? 'scrollLeft':'scrollTop';
if (opts.loop > 0) {
                    numMoved+=opts.scrollAmount;
if(numMoved>scrollSize*opts.loop){
                        _scrollObj[_dir]= 0;
return clearInterval(moveId);
                    } 
                }
if(opts.direction == 'left' || opts.direction == 'up'){
var newPos = _scrollObj[_dir] + opts.scrollAmount;
if(newPos>=scrollSize){
                        newPos-= scrollSize;
                    }
                    _scrollObj[_dir]= newPos;
                }else{
var newPos = _scrollObj[_dir] - opts.scrollAmount;
if(newPos<=0){
                        newPos+= scrollSize;
                    }
                    _scrollObj[_dir]= newPos;
                }
            };
//滾動(dòng)開(kāi)始 var moveId = setInterval(scrollFunc, opts.scrollDelay);
//鼠標(biāo)劃過(guò)停止?jié)L動(dòng)            $marquee.hover(
function(){
                    clearInterval(moveId);
                },
function(){
                    clearInterval(moveId);
                    moveId= setInterval(scrollFunc, opts.scrollDelay);
                }
            );
            
//控制加速運(yùn)動(dòng) if(opts.controlBtn){
                $.each(opts.controlBtn,function(i,val){
                    $(val).bind(opts.eventA,function(){
                        opts.direction= i;
                        opts.oldAmount= opts.scrollAmount;
                        opts.scrollAmount= opts.newAmount;
                    }).bind(opts.eventB,function(){
                        opts.scrollAmount= opts.oldAmount;
                    });
                });
            }
        });
    };
    $.fn.Marquee.defaults= {
        isEqual:true,//所有滾動(dòng)的元素長(zhǎng)寬是否相等,true,false        loop: 0,//循環(huán)滾動(dòng)次數(shù),0時(shí)無(wú)限        direction: 'left',//滾動(dòng)方向,'left','right','up','down'        scrollAmount:1,//步長(zhǎng)        scrollDelay:10,//時(shí)長(zhǎng)        newAmount:3,//加速滾動(dòng)的步長(zhǎng)        eventA:'mousedown',//鼠標(biāo)事件,加速        eventB:'mouseup'//鼠標(biāo)事件,原速    };
    
    $.fn.Marquee.setDefaults= function(settings) {
        $.extend( $.fn.Marquee.defaults, settings );
    };
    
})(jQuery);

導(dǎo)入后前臺(tái)jquery調(diào)用代碼如下:

   <script type="text/javascript">
                        $(function () {
                            $("#demo").Marquee({
                                direction:'left',
                                eventA:'mouseenter',
                                eventB:'mouseleave'
                            });
                        });
</script>

代碼都比較簡(jiǎn)單,實(shí)現(xiàn)原理都是控制容器的scrollLeft位置。

當(dāng)前名稱:js實(shí)現(xiàn)圖片滑動(dòng)顯示效果-創(chuàng)新互聯(lián)
標(biāo)題來(lái)源:http://bm7419.com/article6/cdjsig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、企業(yè)網(wǎng)站制作ChatGPT、云服務(wù)器網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)