以下是 jQuery新闻循环滚动代码 的示例演示效果:
部分效果截图:
HTML代码(index.html):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="gb2312">
<title>jQuery新闻循环滚动代码</title>
<link href="assets/css/bootstrap.css" rel="stylesheet">
<link href="assets/css/main.css" rel="stylesheet">
<link href="assets/css/font-awesome.min.css" rel="stylesheet">
<link href="assets/css/prism.css" rel="stylesheet" />
<link href="assets/css/jquery.mCustomScrollbar.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="green">
<div class="container">
<div class="row">
<div class="col-md-7 centered">
<div id="nt-example1-container">
<i class="fa fa-arrow-up" id="nt-example1-prev"></i>
<ul id="nt-example1">
<li>Etiam imperdiet volutpat libero eu tristique. Aenean, rutrum felis in. <a href="#">Read more...</a></li>
<li>Curabitur porttitor ante eget hendrerit adipiscing. Maecenas at magna. <a href="#">Read more...</a></li>
<li>Praesent ornare nisl lorem, ut condimentum lectus gravida ut. <a href="#">Read more...</a></li>
<li>Nunc ultrices tortor eu massa placerat posuere. Vivamus viverra sagittis. <a href="#">Read more...</a></li>
<li>Morbi sodales tellus sit amet leo congue bibendum. Ut non mauris eu neque. <a href="#">Read more...</a></li>
<li>In pharetra suscipit orci sed viverra. Praesent at sollicitudin tortor, id. <a href="#">Read more...</a> </li>
<li>Maecenas nec ligula sed est suscipit aliquet sed eget ipsum, suspendisse. <a href="#">Read more...</a></li>
<li>Onec bibendum consectetur diam, nec euismod urna venenatis eget.. <a href="#">Read more...</a> </li>
</ul>
<i class="fa fa-arrow-down" id="nt-example1-next"></i>
</div>
</div>
<div class="col-md-5 centered">
<br/><br/>
<h3>MULTILINES SIMPLE EXAMPLE</h3>
<pre><code class="language-javascript example-code">var nt_example1 = $('#nt-example1').newsTicker({
row_height: 80,
max_rows: 3,
duration: 4000,
prevButton: $('#nt-example1-prev'),
nextButton: $('#nt-example1-next')
});</code></pre>
</div>
</div>
</div>
</div>
<div class="white">
<div class="container">
<div class="row">
<div class="col-md-6 col-md-push-6 centered">
<div id="nt-example2-container">
<ul id="nt-example2">
<li data-infos="Cras sagittis nulla sit amet feugiat pulvinar. Fusce scelerisque aliquet purus, sit amet rutrum augue euismod ut. Aliquam erat volutpat. Integer convallis, ligula non bibendum dictum, ante lectus fringilla nunc, at euismod neque enim sit amet ante. In risus velit, porttitor blandit magna vel, adipiscing semper libero. ">
<i class="fa fa-fw fa-play state"></i>
<span class="hour">08:12</span> Etiam imperdiet volutpat libero eu tristique.
</li>
<li data-infos="Quisque imperdiet, tellus et tempus mattis, risus ipsum molestie leo, in tincidunt nisl nunc at magna. Suspendisse pretium ullamcorper feugiat. Nunc quis egestas odio, eu vestibulum nisl. In hac habitasse platea dictumst. Aliquam vel dapibus lacus. Curabitur pharetra quam purus. Suspendisse sed nulla condimentum nibh blandit consectetur non eget velit.">
<i class="fa fa-fw fa-play state"></i>
<span class="hour">08:41</span> Curabitur porttitor ante eget hendrerit adipi.
</li>
<li data-infos="Vestibulum ac interdum quam, tempus aliquet purus. Nunc luctus augue ut pellentesque faucibus. Proin urna nunc, feugiat ac bibendum non, cursus id orci. Integer porttitor diam et odio pharetra, sed congue augue dapibus. Fusce ac tristique tortor. Aliquam adipiscing ligula in dui pretium ultrices.">
<i class="fa fa-fw fa-play state"></i>
<span class="hour">10:02</span> Praesent ornare nisl lorem, ut condi.
</li>
<li data-infos="Proin vulputate mi pharetra tellus semper dapibus. Vestibulum non metus convallis, lobortis velit eu, facilisis mauris. Mauris mattis ante sit amet nulla egestas, ut consectetur tortor tristique. In porttitor non eros nec scelerisque. Sed eu condimentum tellus, et feugiat urna. Duis semper ligula a risus suscipit, ut vestibulum mi tempor.">
<i class="fa fa-fw fa-play state"></i>
<span class="hour">10:14</span> Nunc ultrices tortor eu massa placerat posuere.
</li>
<li data-infos="Sed facilisis, erat at accumsan tincidunt, metus diam convallis tortor, at facilisis tortor libero sed ante. Sed ut felis sed felis scelerisque bibendum. Ut quis aliquet magna. Phasellus elementum volutpat mattis. Proin in rutrum ante, at imperdiet dolor. Vivamus congue turpis facilisis congue ullamcorper. Etiam sollicitudin quis dolor hendrerit ultricies.">
<i class="fa fa-fw fa-play state"></i>
<span class="hour">11:23</span> Morbi sodales tellus sit amet leo congue bibendum.
</li>
<li data-infos="Raesent aliquam sapien quis pretium vestibulum. Vestibulum varius velit leo, quis facilisis enim mattis id. Proin et tempor ligula, id dapibus neque. Aliquam egestas adipiscing tellus. Morbi enim leo, fringilla eget vulputate tincidunt, fringilla et sapien. Curabitur ultricies auctor lectus, quis ultricies sem tincidunt sit amet. Mauris non tempor ipsum. Sed sed ipsum nulla. Quisque laoreet velit dolor, nec placerat odio ullamcorper eget.">
<i class="fa fa-fw fa-play state"></i>
<span class="hour">11:45</span> In pharetra suscipit orci sed viverra. Praesent at.
</li>
<li data-infos="Praesent ut eleifend lorem. Duis ut velit quis mauris molestie aliquam vitae id diam. Etiam eget mauris condimentum, lacinia lectus et, aliquet ligula. Nulla rutrum tincidunt tincidunt. Maecenas eu dolor vestibulum, pellentesque erat non, molestie nibh. Morbi ac semper quam. Aliquam erat volutpat.">
<i class="fa fa-fw fa-play state"></i>
<span class="hour">11:55</span> Maecenas nec ligula sed est suscipit aliquet sed.
</li>
<li data-infos="Duis euismod, mi nec posuere malesuada, nisl leo bibendum ligula, sit amet vestibulum est neque non sapien. Curabitur mi massa, bibendum cursus scelerisque imperdiet, semper eu lacus. Etiam mauris eros, faucibus eu pretium vitae, rutrum vel urna. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin laoreet pellentesque felis, sed vulputate justo rhoncus et. ">
<i class="fa fa-fw fa-play state"></i>
<span class="hour">12:00</span> Onec bibendum consectetur diam, nec eui.
</li>
</ul>
<div id="nt-example2-infos-container">
<div id="nt-example2-infos-triangle"></div>
<div id="nt-example2-infos" class="row">
<div class="col-xs-4 centered">
<div class="infos-hour">
08:12
</div>
<i class="fa fa-arrow-left" id="nt-example2-prev"></i>
<i class="fa fa-arrow-right" id="nt-example2-next"></i>
</div>
<div class="col-xs-8">
<div class="infos-text">Cras sagittis nulla sit amet feugiat pulvinar. Fusce scelerisque aliquet purus, sit amet rutrum augue euismod ut. Aliquam erat volutpat. Integer convallis, ligula non bibendum dictum, ante lectus fringilla nunc, at euismod neque enim sit amet ante. In risus velit, porttitor blandit magna vel, adipiscing semper libero.</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-6 col-md-pull-6 centered">
<h3>ONE LINE TICKER WITH CALLBACKS & METHODS EXAMPLE</h3>
<pre><code class="language-javascript example-code">var nt_example2 = $('#nt-example2').newsTicker({
row_height: 60,
max_rows: 1,
speed: 300,
duration: 6000,
prevButton: $('#nt-example2-prev'),
nextButton: $('#nt-example2-next'),
hasMoved: function() {
$('#nt-example2-infos-container').fadeOut(200, function(){
$('#nt-example2-infos .infos-hour').text($('#nt-example2 li:first span').text());
$('#nt-example2-infos .infos-text').text($('#nt-example2 li:first').data('infos'));
$(this).fadeIn(400);
});
},
pause: function() {
$('#nt-example2 li i').removeClass('fa-play').addClass('fa-pause');
},
unpause: function() {
$('#nt-example2 li i').removeClass('fa-pause').addClass('fa-play');
}
});
$('#nt-example2-infos').hover(function() {
nt_example2.newsTicker('pause');
}, function() {
nt_example2.newsTicker('unpause');
});
</code></pre>
</div>
</div>
</div>
</div>
<div class="green">
<div class="container">
<div class="row">
<div class="col-md-4 centered">
<div id="nt-example3-container">
<!-- <i class="fa fa-arrow-up" id="nt-example3-prev"></i> -->
<ul id="nt-example3">
<li>Lorem</li>
<li>Ipsum</li>
<li>Praesent</li>
<li>Nunc</li>
<li>Morbi</li>
<li>Pharetra</li>
<li>Maecenas</li>
<li>Onec</li>
</ul>
<span class="button" id="nt-example3-button">START</span>
<!-- <i class="fa fa-arrow-down" id="nt-example3-next"></i> -->
</div>
</div>
<div class="col-md-8 centered">
<h3>BONUS : "ROULETTE" EXAMPLE, USING CALLBACKS & METHODS</h3>
<pre><code class="language-javascript example-code">var state = 'stopped';
var speed;
var add;
var nt_example3 = $('#nt-example3').newsTicker({
row_height: 80,
max_rows: 1,
duration: 0,
speed: 10,
autostart: 0,
pauseOnHover: 0,
hasMoved: function() {
if (speed > 700) {
$('#nt-example3').newsTicker("stop");
console.log('stop')
$('#nt-example3-button').text("RESULT: " + $('#nt-example3 li:first').text().toUpperCase());
setTimeout(function() {
$('#nt-example3-button').text("START");
state = 'stopped';
},2500);
}
else if (state == 'stopping') {
add = add * 1.4;
speed = speed + add;
console.log(speed)
$('#nt-example3').newsTicker('updateOption', "duration", speed + 25);
$('#nt-example3').newsTicker('updateOption', "speed", speed);
}
}
});
$('#nt-example3-button').click(function(){
if (state == 'stopped') {
state = 'turning';
speed = 1;
add = 1;
$('#nt-example3').newsTicker('updateOption', "duration", 0);
$('#nt-example3').newsTicker('updateOption', "speed", speed);
nt_example3.newsTicker('start');
$(this).text("STOP");
}
else if (state == 'turning') {
state = 'stopping';
$(this).text("WAITING...");
}
});</code></pre>
</div>
</div>
</div>
</div>
<script src="jquery-1.9.1.js"></script>
<script src="assets/js/chart.js"></script>
<script src="assets/js/bootstrap.js"></script>
<script src="assets/js/prism.js"></script>
<script src="assets/js/jquery.mCustomScrollbar.min.js"></script>
<script src="jquery.newsTicker.js"></script>
<script>
$('a[href*=#]').click(function(e) {
var href = $.attr(this, 'href');
if (href != "#") {
$('html, body').animate({
scrollTop: $(href).offset().top - 81
}, 500);
}
else {
$('html, body').animate({
scrollTop: 0
}, 500);
}
return false;
});
$(window).load(function(){
$('code.language-javascript').mCustomScrollbar();
});
var nt_title = $('#nt-title').newsTicker({
row_height: 40,
max_rows: 1,
duration: 3000,
pauseOnHover: 0
});
var nt_example1 = $('#nt-example1').newsTicker({
row_height: 80,
max_rows: 3,
duration: 4000,
prevButton: $('#nt-example1-prev'),
nextButton: $('#nt-example1-next')
});
var nt_example2 = $('#nt-example2').newsTicker({
row_height: 60,
max_rows: 1,
speed: 300,
duration: 6000,
prevButton: $('#nt-example2-prev'),
nextButton: $('#nt-example2-next'),
hasMoved: function() {
$('#nt-example2-infos-container').fadeOut(200, function(){
$('#nt-example2-infos .infos-hour').text($('#nt-example2 li:first span').text());
$('#nt-example2-infos .infos-text').text($('#nt-example2 li:first').data('infos'));
$(this).fadeIn(400);
});
},
pause: function() {
$('#nt-example2 li i').removeClass('fa-play').addClass('fa-pause');
},
unpause: function() {
$('#nt-example2 li i').removeClass('fa-pause').addClass('fa-play');
}
});
$('#nt-example2-infos').hover(function() {
nt_example2.newsTicker('pause');
}, function() {
nt_example2.newsTicker('unpause');
});
var state = 'stopped';
var speed;
var add;
var nt_example3 = $('#nt-example3').newsTicker({
row_height: 80,
max_rows: 1,
duration: 0,
speed: 10,
autostart: 0,
pauseOnHover: 0,
hasMoved: function() {
if (speed > 700) {
$('#nt-example3').newsTicker("stop");
console.log('stop')
$('#nt-example3-button').text("RESULT: " + $('#nt-example3 li:first').text().toUpperCase());
setTimeout(function() {
$('#nt-example3-button').text("START");
state = 'stopped';
},2500);
}
else if (state == 'stopping') {
add = add * 1.4;
speed = speed + add;
console.log(speed)
$('#nt-example3').newsTicker('updateOption', "duration", speed + 25);
$('#nt-example3').newsTicker('updateOption', "speed", speed);
}
}
});
$('#nt-example3-button').click(function(){
if (state == 'stopped') {
state = 'turning';
speed = 1;
add = 1;
$('#nt-example3').newsTicker('updateOption', "duration", 0);
$('#nt-example3').newsTicker('updateOption', "speed", speed);
nt_example3.newsTicker('start');
$(this).text("STOP");
}
else if (state == 'turning') {
state = 'stopping';
$(this).text("WAITING...");
}
});
</script>
</body>
</html>
JS代码(jquery.newsTicker.min.js):
/* JQuery Advanced News Ticker 1.0.11 (20/02/14) created by risq website (docs & demos):http://risq.github.io/jquery-advanced-news-ticker/*/
(function(b,k,l,m){
function g(a,f){
this.element=a;
this.$el=b(a);
this.options=b.extend({
}
,c,f);
this._defaults=c;
this._name=d;
this.moveInterval;
this.moving=this.paused=this.state=0;
(this.$el.is("ul")||this.$el.is("ol"))&&this.init()}
var d="newsTicker",c={
row_height:20,max_rows:3,speed:400,duration:2500,direction:"up",autostart:1,pauseOnHover:1,nextButton:null,prevButton:null,startButton:null,stopButton:null,hasMoved:function(){
}
,movingUp:function(){
}
,movingDown:function(){
}
,start:function(){
}
,stop:function(){
}
,pause:function(){
}
,unpause:function(){
}
}
;
g.prototype={
init:function(){
this.$el.height(this.options.row_height*this.options.max_rows).css({
overflow:"hidden"}
);
this.checkSpeed();
this.options.nextButton&&"undefined"!==typeof this.options.nextButton[0]&&this.options.nextButton.click(function(a){
this.moveNext();
this.resetInterval()}
.bind(this));
this.options.prevButton&&"undefined"!==typeof this.options.prevButton[0]&&this.options.prevButton.click(function(a){
this.movePrev();
this.resetInterval()}
.bind(this));
this.options.stopButton&&"undefined"!==typeof this.options.stopButton[0]&&this.options.stopButton.click(function(a){
this.stop()}
.bind(this));
this.options.startButton&&"undefined"!==typeof this.options.startButton[0]&&this.options.startButton.click(function(a){
this.start()}
.bind(this));
this.options.pauseOnHover&&this.$el.hover(function(){
this.state&&this.pause()}
.bind(this),function(){
this.state&&this.unpause()}
.bind(this));
this.options.autostart&&this.start()}
,start:function(){
this.state||(this.state=1,this.resetInterval(),this.options.start())}
,stop:function(){
this.state&&(clearInterval(this.moveInterval),this.state=0,this.options.stop())}
,resetInterval:function(){
this.state&&(clearInterval(this.moveInterval),this.moveInterval=setInterval(function(){
this.move()}
.bind(this),this.options.duration))}
,move:function(){
this.paused||this.moveNext()}
,moveNext:function(){
"down"===this.options.direction?this.moveDown():"up"===this.options.direction&&this.moveUp()}
,movePrev:function(){
"down"===this.options.direction?this.moveUp():"up"===this.options.direction&&this.moveDown()}
,pause:function(){
this.paused||(this.paused=1);
this.options.pause()}
,unpause:function(){
this.paused&&(this.paused=0);
this.options.unpause()}
,moveDown:function(){
this.moving||(this.moving=1,this.options.movingDown(),this.$el.children("li:last").detach().prependTo(this.$el).css("marginTop","-"+this.options.row_height+"px").animate({
marginTop:"0px"}
,this.options.speed,function(){
this.moving=0;
this.options.hasMoved()}
.bind(this)))}
,moveUp:function(){
if(!this.moving){
this.moving=1;
this.options.movingUp();
var a=this.$el.children("li:first");
a.animate({
marginTop:"-"+this.options.row_height+"px"}
,this.options.speed,function(){
a.detach().css("marginTop","0").appendTo(this.$el);
this.moving=0;
this.options.hasMoved()}
.bind(this))}
}
,updateOption:function(a,b){
"undefined"!==typeof this.options[a]&&(this.options[a]=b,"duration"==a||"speed"==a)&&(this.checkSpeed(),this.resetInterval())}
,add:function(a){
this.$el.append(b("<li>").html(a))}
,getState:function(){
return paused?2:this.state}
,checkSpeed:function(){
this.options.duration<this.options.speed+25&&(this.options.speed=this.options.duration-25)}
,destroy:function(){
this._destroy()}
}
;
b.fn[d]=function(a){
var f=arguments;
return this.each(function(){
var c=b(this),e=b.data(this,"plugin_"+d),h="object"===typeof a&&a;
e||c.data("plugin_"+d,e=new g(this,h));
"string"===typeof a&&e[a].apply(e,Array.prototype.slice.call(f,1))}
)}
}
)(jQuery,window,document);