1. 程式人生 > >【JS】JS 公告豎向、橫線滾動效果

【JS】JS 公告豎向、橫線滾動效果

一:豎向滾動效果
1.html

 <div id="scroll_noticeMsg" class="noticeMsg">
      <ul id="scroll_begin">
		<li>資料一</li>
		<li>資料二</li>
		<li>資料三</li>
		<li>資料四</li>
		<li>資料五</li>
	</ul>
      <ul id="scroll_end"></ul>
</div>

2.CSS

.noticeMsg {
    overflow: hidden;
    white-space: nowrap;
    height: 30px;
    width: 100%;
    max-height: 2rem;
    font-size: .65rem;
    -webkit-transition: .4s;
    -o-transition: .4s;
    transition: .4s;
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    background: url(../Images/notice.png) left 10px center no-repeat;
}
#scroll_begin li, #scroll_end li {
    line-height: 32px;
    text-indent: 30px;
}

3.JS

/*新聞滾動*/
$(function () {
    var $this = $(".noticeMsg");
    var scrollTimer;
    //hover()方法的含義是滑鼠滑入滑出,它對應著兩個事件,即mouseenter和mouseleave,因此可通過trigger("mouseleave")來觸發hover事件的第二個函式
    $this.hover(
        function () {
            clearInterval(scrollTimer);
        },
        function () {
            scrollTimer = setInterval(function () {
                scrollNews($this);
            }, 3000);
        }
    ).trigger("mouseleave");//當用戶進入頁面後就會觸發hover事件的第二個函式,從而使內容滾動起來

});

function scrollNews(obj) {
    var $self = obj.find("ul:first");
    var lineHeight = $self.find("li:first").height();
    $self.animate({"marginTop": -lineHeight + "px"}, 600, function () {
        //把所有匹配的元素追加到$self元素的後面,所以才出現這種周而復始滾動的效果
        $self.css({marginTop: 0}).find("li:first").appendTo($self);
    })
}

二:橫向滾動效果
1.CSS

#scroll_noticeMsg {height:26px;overflow: hidden;white-space: nowrap;width:535px;margin-left:10px;}
#scroll_begin,#scroll_end {display: inline;}
  1. JS
//文字橫向滾動
function ScrollImgLeft(){ 
 var speed=50;
  var MyMar = null;
 var scroll_begin = document.getElementById("scroll_begin"); 
 var scroll_end = document.getElementById("scroll_end"); 
 var scroll_div = document.getElementById("scroll_noticeMsg"); 
 scroll_end.innerHTML=scroll_begin.innerHTML; 
 function Marquee(){ 
  if(scroll_end.offsetWidth-scroll_div.scrollLeft<=0) 
   scroll_div.scrollLeft-=scroll_begin.offsetWidth; 
  else
   scroll_div.scrollLeft++; 
  } 
  MyMar=setInterval(Marquee,speed); 
  scroll_div.onmouseover = function(){
       clearInterval(MyMar);
     }
     scroll_div.onmouseout = function(){
       MyMar = setInterval(Marquee,speed);     
     }  
}
ScrollImgLeft();