jQuery 標(biāo)題的自動(dòng)翻轉(zhuǎn)實(shí)現(xiàn)代碼
更新時(shí)間:2009年10月14日 17:32:39 作者:
我們平時(shí)在開發(fā)web程序的時(shí)候,想把一個(gè)新聞源滾動(dòng)顯示新聞的條目的標(biāo)題及內(nèi)容摘要,而且是每次一條,有點(diǎn)類似csdn的滾動(dòng)廣告。
即一條新聞滾 進(jìn)視圖之后,會(huì)暫停幾秒鐘,然后繼續(xù)向上2滾動(dòng),淡出視圖,同時(shí),下一條新聞接著滾入視圖。這次主要是用jquery來開發(fā)這個(gè)功能,里面肯定有許多不足 之處,歡迎大家點(diǎn)評(píng)。
先粘貼一下代碼,
<style>
<%-- #news-feed
{
padding: 0;
margin: 0 0 0 10px;
position: relative;
height: 200px;
width: 17em;
overflow: hidden;
}
.headline
{
position: absolute;
height: 200px;
top: 210px;
overflow: hidden;
}--%>
</style>
<script type="text/javascript">
$(document).ready(function() {
$('#news-feed').each(function() {
var $container = $(this);
$container.empty();
$.get('feed.xml', function(data) {
$('rss item', data).each(function() {
var $link = $('<a></a>')
.attr('href', $('link', this).text())
.text($('title', this).text());
var $headline = $('<h4></h4>').append($link);
var pubDate = new Date($('pubDate', this).text());
var pubMonth = pubDate.getMonth() + 1;
var pubDay = pubDate.getDate();
var pubYear = pubDate.getFullYear();
var $publication = $('<div></div>')
.addClass('publication-date')
.text(pubMonth + '/' + pubDay + '/' + pubYear);
var $summary = $('<div></div>')
.addClass('summary')
.html($('description', this).text());
$('<div></div>')
.addClass('headline')
.append($headline, $publication)
.appendTo($container);
});
var currentHeadline = 0, oldHeadline = 0;
var hiddenPosition = $container.height() + 10;
$('div.headline').eq(currentHeadline).css('top', 0);
var headlineCount = $('div.headline').length;
var pause;
var headlineRotate = function() {
currentHeadline = (oldHeadline + 1) % headlineCount;
$('div.headline').eq(oldHeadline).animate(
{top: -hiddenPosition}, 'slow', function() {
$(this).css('top', hiddenPosition);
});
$('div.headline').eq(currentHeadline).animate(
{top: 0}, 'slow', function() {
pause = setTimeout(headlineRotate, 4000);
});
oldHeadline = currentHeadline;
};
pause = setTimeout(headlineRotate, 4000);
$container.hover(function() {
clearTimeout(pause);
}, function() {
pause = setTimeout(headlineRotate, 3000);
});
});
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div id="sidebar">
<h3>Recent News</h3>
<div id="news-feed">
<a href="###">News Releases</a>
</div>
</div>
</form>
</body>
我們來庖丁解牛一下這些代碼,首先來看樣式,因?yàn)槲覀円淮沃伙@示一條新聞?dòng)涗?,所以,我們?yīng)該把高度也設(shè)為一條記錄的,在這里設(shè)為200px, 而且如果超了的話,我們就自動(dòng)隱藏起來overflow=hidden。在這里,數(shù)據(jù)源我們用的是feed.xml,Jquery加載并讀取xml文件是 很簡(jiǎn)單的,可以參考上面的寫法,通過讀取xml文件,取出數(shù)據(jù),進(jìn)行組裝,就得到了要顯示的html代碼段并附加到#container中,同時(shí),在滾動(dòng) 顯示中,我們需要設(shè)置兩個(gè)變量,一個(gè)用于記錄當(dāng)前可見的標(biāo)題,另一個(gè)用于記錄剛剛滾動(dòng)出視圖的標(biāo)題。并且讓當(dāng)前的記錄顯示在最上方,一定要注意的是,位置 不能為static。最后,就是寫一個(gè)函數(shù),每次自動(dòng)調(diào)用記錄的顯示。jquery還有很多的插件,可以更加簡(jiǎn)化這些操作,以后多學(xué)習(xí)了。如果想學(xué)習(xí) jquery,個(gè)人推薦jquery基礎(chǔ)教程,jonathan chaffer編寫的,很不錯(cuò),很適合初學(xué)者,國(guó)內(nèi)其他的人寫的,里面就魚龍混雜了。
先粘貼一下代碼,
復(fù)制代碼 代碼如下:
<style>
<%-- #news-feed
{
padding: 0;
margin: 0 0 0 10px;
position: relative;
height: 200px;
width: 17em;
overflow: hidden;
}
.headline
{
position: absolute;
height: 200px;
top: 210px;
overflow: hidden;
}--%>
</style>
<script type="text/javascript">
$(document).ready(function() {
$('#news-feed').each(function() {
var $container = $(this);
$container.empty();
$.get('feed.xml', function(data) {
$('rss item', data).each(function() {
var $link = $('<a></a>')
.attr('href', $('link', this).text())
.text($('title', this).text());
var $headline = $('<h4></h4>').append($link);
var pubDate = new Date($('pubDate', this).text());
var pubMonth = pubDate.getMonth() + 1;
var pubDay = pubDate.getDate();
var pubYear = pubDate.getFullYear();
var $publication = $('<div></div>')
.addClass('publication-date')
.text(pubMonth + '/' + pubDay + '/' + pubYear);
var $summary = $('<div></div>')
.addClass('summary')
.html($('description', this).text());
$('<div></div>')
.addClass('headline')
.append($headline, $publication)
.appendTo($container);
});
var currentHeadline = 0, oldHeadline = 0;
var hiddenPosition = $container.height() + 10;
$('div.headline').eq(currentHeadline).css('top', 0);
var headlineCount = $('div.headline').length;
var pause;
var headlineRotate = function() {
currentHeadline = (oldHeadline + 1) % headlineCount;
$('div.headline').eq(oldHeadline).animate(
{top: -hiddenPosition}, 'slow', function() {
$(this).css('top', hiddenPosition);
});
$('div.headline').eq(currentHeadline).animate(
{top: 0}, 'slow', function() {
pause = setTimeout(headlineRotate, 4000);
});
oldHeadline = currentHeadline;
};
pause = setTimeout(headlineRotate, 4000);
$container.hover(function() {
clearTimeout(pause);
}, function() {
pause = setTimeout(headlineRotate, 3000);
});
});
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div id="sidebar">
<h3>Recent News</h3>
<div id="news-feed">
<a href="###">News Releases</a>
</div>
</div>
</form>
</body>
我們來庖丁解牛一下這些代碼,首先來看樣式,因?yàn)槲覀円淮沃伙@示一條新聞?dòng)涗?,所以,我們?yīng)該把高度也設(shè)為一條記錄的,在這里設(shè)為200px, 而且如果超了的話,我們就自動(dòng)隱藏起來overflow=hidden。在這里,數(shù)據(jù)源我們用的是feed.xml,Jquery加載并讀取xml文件是 很簡(jiǎn)單的,可以參考上面的寫法,通過讀取xml文件,取出數(shù)據(jù),進(jìn)行組裝,就得到了要顯示的html代碼段并附加到#container中,同時(shí),在滾動(dòng) 顯示中,我們需要設(shè)置兩個(gè)變量,一個(gè)用于記錄當(dāng)前可見的標(biāo)題,另一個(gè)用于記錄剛剛滾動(dòng)出視圖的標(biāo)題。并且讓當(dāng)前的記錄顯示在最上方,一定要注意的是,位置 不能為static。最后,就是寫一個(gè)函數(shù),每次自動(dòng)調(diào)用記錄的顯示。jquery還有很多的插件,可以更加簡(jiǎn)化這些操作,以后多學(xué)習(xí)了。如果想學(xué)習(xí) jquery,個(gè)人推薦jquery基礎(chǔ)教程,jonathan chaffer編寫的,很不錯(cuò),很適合初學(xué)者,國(guó)內(nèi)其他的人寫的,里面就魚龍混雜了。
您可能感興趣的文章:
- jQuery中:header選擇器用法實(shí)例
- Jquery修改頁(yè)面標(biāo)題title其它JS失效的解決方法
- 讓新消息在網(wǎng)頁(yè)標(biāo)題閃爍提示的jQuery代碼
- 基于jquery插件制作左右按鈕與標(biāo)題文字圖片切換效果
- Jquery 設(shè)置標(biāo)題的自動(dòng)翻轉(zhuǎn)
- jQuery+Ajax實(shí)現(xiàn)表格數(shù)據(jù)不同列標(biāo)題排序(為表格注入活力)
- Jquery創(chuàng)建層顯示標(biāo)題和內(nèi)容且隨鼠標(biāo)移動(dòng)而移動(dòng)
- 使表格的標(biāo)題列可左右拉伸jquery插件封裝
- jquery實(shí)現(xiàn)點(diǎn)擊彈出帶標(biāo)題欄的彈出層(從右上角飛入)效果
- jQuery實(shí)現(xiàn)點(diǎn)擊標(biāo)題輸入詳細(xì)信息
- jQuery實(shí)現(xiàn)獲取h1-h6標(biāo)題元素值的方法
相關(guān)文章
通過點(diǎn)擊jqgrid表格彈出需要的表格數(shù)據(jù)
在眾多的表格插件中,jqgrid的特點(diǎn)是非常鮮明的,所以jqgrid表格插件用處非常廣泛,本篇文章給大家介紹通過點(diǎn)擊jqgrid表格彈出需要的表格數(shù)據(jù),需要的朋友參考下2015-12-12
使用jquery.form.js實(shí)現(xiàn)圖片上傳的方法
這篇文章主要介紹了使用jquery.form.js實(shí)現(xiàn)圖片上傳的方法,涉及jquery使用表單插件jquery.form.js進(jìn)行圖片上傳的提交、類型驗(yàn)證、執(zhí)行結(jié)果回調(diào)顯示等技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2016-05-05
jQuery學(xué)習(xí)筆記 獲取jQuery對(duì)象
為了將Web的結(jié)構(gòu)層和表現(xiàn)層、行為層徹底分離,就不應(yīng)該在HTML標(biāo)簽上直接定義樣式或事件等。這意味著要想設(shè)置頁(yè)面中的某個(gè)元素,就需要先把這個(gè)元素選擇出來,選擇器正是解決這個(gè)問題的技術(shù)2012-09-09
jquery獲取easyui日期控件的值實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄猨query獲取easyui日期控件的值實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-11-11
在Web項(xiàng)目中引入Jquery插件報(bào)錯(cuò)的完美解決方案(圖解)
這篇文章主要介紹了在Web項(xiàng)目中引入Jquery插件報(bào)錯(cuò)的完美解決方案的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09
jquery簡(jiǎn)單實(shí)現(xiàn)鼠標(biāo)經(jīng)過導(dǎo)航條改變背景圖
鼠標(biāo)經(jīng)過導(dǎo)航條改變背景圖的效果很是好看,下面為大家介紹下使用jquery是如何實(shí)現(xiàn)的,感興趣的朋友可以參考下2013-12-12
推薦40個(gè)非常優(yōu)秀的jQuery插件和教程【系列三】
jQuery 在如今的 Web 開發(fā)項(xiàng)目中扮演著重要角色,jQuery 以其插件眾多、獨(dú)特、輕量以及支持大規(guī)模的網(wǎng)站開發(fā)聞名。本文大家分享40個(gè)實(shí)用的 jQuery 插件,可以根據(jù)您的項(xiàng)目需要來選擇使用2011-11-11
jQuery 插件開發(fā) 其實(shí)很簡(jiǎn)單
jQuery已經(jīng)被廣泛使用,憑借其簡(jiǎn)潔的API,對(duì)DOM強(qiáng)大的操控性,易擴(kuò)展性越來越受到web開發(fā)人員的喜愛,我在社區(qū)也發(fā)布了很多的jQuery插件2009-07-07
jQuery簡(jiǎn)單注冊(cè)和禁用全局事件的方法
這篇文章主要介紹了jQuery簡(jiǎn)單注冊(cè)和禁用全局事件的方法,結(jié)合實(shí)例形式分析了jQuery中ajaxStart與ajaxStop方法的使用技巧,需要的朋友可以參考下2016-07-07

