1.效果如圖:php
2.html代碼:css
[php] view plaincopyhtml
<h3>最新動態</h3> jquery
<div class="scrollNews" > app
<ul> 函數
<li><a href="#" class="tooltip" title="甜美寬鬆毛衣今秋必定紅.">甜美寬鬆毛衣今秋必定紅.</a></li> 動畫
<li><a href="#" class="tooltip" title="秋裝百搭小馬甲不到50元.">秋裝百搭小馬甲不到50元.</a></li> ui
<li><a href="#" class="tooltip" title="修身韓版小西裝萬人瘋搶.">修身韓版小西裝萬人瘋搶.</a></li> this
<li><a href="#" class="tooltip" title="夏末雪紡店主含淚大甩賣.">夏末雪紡店主含淚大甩賣.</a></li> spa
<li><a href="#" class="tooltip" title="瑞麗都瘋狂推薦的秋裝.">瑞麗都瘋狂推薦的秋裝.</a></li>
<li><a href="#" class="tooltip" title="48元長款針織小開衫賣瘋啦.">48元長款針織小開衫賣瘋啦.</a></li>
<li><a href="#" class="tooltip" title="長袖雪紡衫單穿內搭都超美.">長袖雪紡衫單穿內搭都超美.</a></li>
</ul>
</div>
3.jquery代碼:
[php] view plaincopy
/*新聞滾動*/
$(function(){
//將$(".scrollNews")對象做爲參數傳遞給scollNews()函數的參數
var $this = $(".scrollNews");
//滾動定時器變量
var scrollTimer;
//hover()方法的含義是鼠標滑入滑出,它對應着兩個事件,即mouseenter和mouseleave,所以可經過trigger("mouseleave")來觸發hover事件的第二個函數
$this.hover(
function(){
clearInterval(scrollTimer);
},
function(){
scrollTimer = setInterval(function(){
scrollNews( $this );//每3秒執行一次scrollNews函數
}, 3000 );
}
).trigger("mouseleave");//當用戶進入頁面後就會觸發hover事件的第二個函數,從而使內容滾動起來
});
function scrollNews(obj){
var $self = obj.find("ul:first"); //找到第一個ul元素
var lineHeight = $self.find("li:first").height(); //獲取第一個li元素的行高
$self.animate({ "marginTop" : -lineHeight +"px" }, 600 , function(){
//alert($self.css({marginTop:0}).find("li:first").text());//逐條獲取
//把全部匹配的元素追加到$self元素的後面,因此纔出現這種周而復始滾動的效果
$self.css({marginTop:0}).find("li:first").appendTo($self); //appendTo能直接移動元素
})
}
分析:經過控制$(".scrollNews");對象內的<ul>元素的marginTop屬性來獲得動畫效果。至於每次滾動的高度,能夠經過獲取<ul>元素內的第一個<li>元素的高度來達到目的。當每次滾動完畢後,須要把當前第一個<li>元素移動到<ul>元素內的最後,而後將<ul>元素的marginTop屬性設置爲零,這樣動畫才能夠無限的循環滾動