回答
jQuery愛好者,雷米夏普,有自己的跑馬燈插件,可以實現很容易地。您可以通過his blog或訪問demo page來收集更詳細的信息。
對於MooTools的用戶,有Mooquee。
您還可以在線查看此示例的實際代碼http://track.dc.gov/Resource/Script/ - 搜索「uiEndless」以查找目標腳本。
他們的代碼是個非常好的格式塊,你可以學習。當您訪問網站時打開您最喜愛的JS調試器,等待所有內容移動,然後在調試器中按「全部中斷」或等效。你會看到如下內容:
Dashboard.UI.EndlessLine = function() {
var me = this;
me.jq = $(me);
me.classNames = { CONTAINER: "uiEndless", VIEW: "uiEndlessView", CANVAS: "uiEndlessCanvas", TILE: "uiEndlessTile" };
var canvas = null;
var view = null;
var tiles = null;
var x = 0;
var xx = 0;
var canvasWidth = 0;
var step = 1;
var delay = 40;
me.initialize = function(container, data, handler) {
required(container, "container");
required(data, "data");
required(handler, "handler");
container.addClass(me.classNames.CONTAINER);
view = newDiv(me.classNames.VIEW);
canvas = newDiv(me.classNames.CANVAS);
view.append(canvas);
container.append(view);
x = 0;
xx = 0;
canvasWidth = 0;
tiles = me.populateTiles(data, handler);
container.click(function() {
if (me.started()) me.stop(); else me.start();
});
};
me._resize = function(size) {
};
var moveId = 0;
me.start = function() {
me.stop();
me.tick();
}
me.stop = function() {
if (moveId > 0) clearTimeout(moveId);
moveId = 0;
}
me.started = function() {
return moveId > 0;
};
me.tick = function() {
var tile = tiles.current();
var width = tile.calculatedWidth;
if (x < width - step) {
x += step;
} else {
x = 0;
tile.css("left", canvasWidth + "px");
if (tiles.advance()) {
xx = 0;
canvasWidth = 0;
do {
current = tiles.current();
width = current.calculatedWidth;
current[0].style.left = canvasWidth + "px";
canvasWidth += width;
} while (!tiles.advance());
} else {
canvasWidth += width;
}
}
canvas[0].style.left = -(xx) + "px";
xx += step;
moveId = setTimeout(me.tick, delay);
}
me.populateTiles = function(data, handler) {
var tiles = new Dashboard.Core.List();
var viewWidth = view.contentWidth();
var maxHeight = 0;
each(data, function() {
var tile = newDiv(me.classNames.TILE);
handler.call(this, tile);
tile.css({ left: canvasWidth + "px", top: 0 });
canvas.append(tile);
var width = tile.outerWidth();
var height = tile.outerHeight();
if (maxHeight < height) maxHeight = height;
tile.calculatedWidth = width;
canvasWidth += width; // getting width may only be done after the element is attached to DOM
tiles.append(tile);
view.height(height);
});
return tiles.createCycle();
}
}
我留下了深刻的印象 - 一切都看起來專業和很好的命名空間。
更新:如果要解釋它是如何工作的,請關注上面定義的tick
方法。粉飾所有的細節(因爲我還沒有真正研究過它自己),它計算的步長,在一定量的消息元素向左移動,並調度下一個節拍呼籲在未來40毫秒。
非常令人印象深刻。你能告訴我如何輕鬆獲得這些代碼。即時通訊使用Firefox與螢火蟲。我沒有看到一個選項打破所有。非常感謝 – 2010-02-11 01:02:05
@Vivek我其實更喜歡IE8進行調試。在IE8和Chrome中,有一個內置的調試器,提供了我提到的全部功能。在Firefox中,你需要Firebug(你有)。打開Firebug並點擊腳本標籤。確保它已啓用(您應該看到一堆源代碼)。在track.dc.gov標題下選擇「控制檯」(其中有一個下拉菜單,可讓您選擇您正在查看的腳本)下的「腳本」。然後點擊「||」 (看起來像一個暫停按鈕)在「控制檯」的左側。 – 2010-02-11 01:09:47
非常感謝喬納森。我現在明白了。 – 2010-02-11 01:18:45
- 1. JavaScript中的水平新聞滾動條
- 2. Themeblvd新聞滾動不會滾動
- 3. HTML \ JavaScript的 - 新聞滾動 - 滑動的文本效果
- 4. 滾動新聞Feed重疊div
- 5. 新聞在Python中滾動文本
- 6. Facebook的自動滾動帖子像新聞節目
- 7. 新聞滾筒的IE css問題
- 8. 自動化新聞
- 9. 向下滾動時刷新新聞源,瀏覽器
- 10. sIFR在Javascript新聞旋轉?
- 11. Greasemonkey Javascript鍵新聞幫助
- 12. 實現Facebook的新聞提要UITableView滾動操作
- 13. jQuery的垂直滾動新聞插件,但可控
- 14. 什麼是JS或JQuery的對水平滾動新聞股票
- 15. 我的新聞div滾動...我想讓它快速
- 16. 如何實現基於RSS的新聞滾動?
- 17. 如何爲我們的網站製作新聞滾動條
- 18. JavaScript重新加載滾動
- 19. 如何顯示動態的新聞和新聞檔案WordPress.com
- 20. 總新聞在新聞組
- 21. BlackBerry上的自動刷新新聞源
- 22. 新聞ID TYPO3的RealURL新聞鏈接
- 23. 新聞提要API的一般新聞
- 24. Android BBC新聞和Pulse新聞應用程序是如何實現水平滾動視圖的?
- 25. 如何使用C在視頻中添加滾動新聞#
- 26. 平滑滾動文本(如突發新聞...)
- 27. UIPageViewController在收到新聞後停止滾動
- 28. 如何創建美國今天像新聞圖片滾動?
- 29. jQuery插件具有連續滾動,如新聞票
- 30. Android:滾動菜單欄像福克斯新聞應用程序
感謝喬納森。我看看演示。這並不那麼順利。但它比選取標記更好。 – 2010-02-11 00:46:51
@Vivek:平滑度將由您設置的選項決定。如果你做得很快,跳躍很多像素,它會出現生澀。如果你使它慢點,逐像素,它將是平穩的。 – Sampson 2010-02-11 00:48:55
lemme嘗試一個真正的快速,看看 – 2010-02-11 00:50:27