基於jquery的內容迴圈滾動小模組(仿新浪微博未登入首頁滾動微博顯示)

來源:互聯網
上載者:User

從需求上來說,這個功能需要即時調用最新的微博資料,單就前端開發來說,其需求可以拆分如下:
1 內容持續滾動;
2 新微博將下面的微博先推下去,然後淡入進來;
3 滑鼠經過內容暫停滾動;
4 容器底部漸層消失在背景色下。
上述4個需求之中,需求1-3為js技術實現,需求4為css技術實現,下面逐個需求來講。
需求1和需求2:內容持續滾動的需求有些類似前一篇文章《小模組:公告滾動並暫停》中介紹的功能,在那篇文章中,此功能使用css的position定位來控制整個ul列表的移動動畫。結合需求2,我們可以寫得更簡單一些,讓最後的li元素定時插入第一個li元素的上方,然後採用animate方法來改變li的高度和透明效果。而不停頓的滾動依然要用到setTimeout方法。在沒有新資料載入的情況下,要實現有限內容迴圈滾動。
需求3:滑鼠經過暫停需求可以當滑鼠hover經過的時候在某元素上加上某屬性的值,這裡採用name屬性——判斷此值是否存在,如果存在則不執行代碼。
需求4:可以通過在內容上覆蓋漸層的png24圖片來實現,IE6對png24支援不好,如果需要顧及效能的話,在此容器上加display:none的IE6hack。接下來的問題是解決圖片覆蓋到文字之上,文字如何可以點擊或選中的問題,這時候需要一個特殊的css屬性“pointer-events”,此屬性的值設為none之後,滑鼠就可以透過絕對位置在文字上的圖片選中下面的文字。
綜合代碼如下:
HTML
複製代碼 代碼如下:
<div class="messagewrap">
<ul>
<li><!--多個li,請自行複製或者設定重複地區--></li>
</ul>
<div class="bottomcover">
<!--為了符合w3c要求不能有空標籤的要求,此處可選擇寫一個 -->
</div>
</div>

CSS
複製代碼 代碼如下:
.messagewrap{overflow:hidden;position:relative;width:500px;height:300px}
li{height:50px;}
.bottomcover{width:500px;height:45px;position:absolute;bottom:0;left:0;
pointer-events:none;background:url(halftransp.png) left bottom no-repeat;
/*某從背景色向上漸層透明圖片*/ _display:none;/*針對IE6體驗降級*/}

JS
複製代碼 代碼如下:
<script>
$(function(){
msgmove();
$("ul").hover(function(){
$(this).attr("name","hovered"); //滑鼠經過設定ul的name值為"hovered"
},function(){
$(this).removeAttr("name");
});
});
function msgmove(){
var isIE=!!window.ActiveXObject;
var isIE6=isIE&&!window.XMLHttpRequest;
if($("ul").attr("name") != "hovered"){
//判斷ul的name屬性是否為"hovered",決定下面代碼塊是否運行,以實現滑鼠經過暫停滾動。
var height = $("li:last").height();
if(isIE6){
//判斷IE6,jQuery的animate動畫和opacity透明在一起使用在IE6中會出現中文重影現象,
//所以在ie6中實行透明的禁用。
$("li:last").css({"height":0});
}else{
$("li:last").css({"opacity":0,"height":0});
//列表最後的li透明和高度設定為0
}
$("li:first").before($("li:last"));
//把列表最後的li提升到頂部,實現有限清單項目無限迴圈滾動顯示
$("li:first").animate({"height":height},300);
//列表頂部的li高度逐漸層高以把下面的li推下去
if(!isIE6){
$("li:first").animate({"opacity":"1"},300);
//在非IE6瀏覽器中設定透明淡入效果
}
}
setTimeout("msgmove()",5000);
//設定5秒滾動一次
}
</script>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.