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

               js實現(xiàn)圖片滑動顯示效果

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

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

第一:先用HTML和CSS實現(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>

 第二:前臺主要用到的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;}

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

1、用傳統(tǒng)的js來實現(xià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++;
                                        }
                                    }
//設置定時執(zhí)行 var myTime = setInterval(Marquee, speed);
                                    tab.onmouseover= function () { clearInterval(myTime); }
                                    tab.onmouseout= function () { myTime = setInterval(Marquee, speed); };
</script>

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

(function($){
    $.fn.Marquee= function(options){
var opts = $.extend({},$.fn.Marquee.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上下 //防止?jié)L動子元素比滾動元素寬而取不到實際滾動子元素寬度            $element.css(_type?'width':'height',10000);
//獲取滾動元素的尺寸 if (opts.isEqual) {
                scrollSize= $kids[_type?'outerWidth':'outerHeight']() * $kids.length;
            }else{
                $kids.each(function(){
                    scrollSize+= $(this)[_type?'outerWidth':'outerHeight']();
                });
            }
//滾動元素總尺寸小于容器尺寸,不滾動 if (scrollSize<(_type?scrollW:scrollH)) return; 
//克隆滾動子元素將其插入到滾動元素后,并設定滾動元素寬度            $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;
                }
            };
//滾動開始 var moveId = setInterval(scrollFunc, opts.scrollDelay);
//鼠標劃過停止?jié)L動            $marquee.hover(
function(){
                    clearInterval(moveId);
                },
function(){
                    clearInterval(moveId);
                    moveId= setInterval(scrollFunc, opts.scrollDelay);
                }
            );
            
//控制加速運動 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,//所有滾動的元素長寬是否相等,true,false        loop: 0,//循環(huán)滾動次數(shù),0時無限        direction: 'left',//滾動方向,'left','right','up','down'        scrollAmount:1,//步長        scrollDelay:10,//時長        newAmount:3,//加速滾動的步長        eventA:'mousedown',//鼠標事件,加速        eventB:'mouseup'//鼠標事件,原速    };
    
    $.fn.Marquee.setDefaults= function(settings) {
        $.extend( $.fn.Marquee.defaults, settings );
    };
    
})(jQuery);

導入后前臺jquery調(diào)用代碼如下:

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

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

當前名稱:js實現(xiàn)圖片滑動顯示效果-創(chuàng)新互聯(lián)
標題來源:http://muchs.cn/article6/cdjsig.html

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

廣告

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

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