// please add bootstrap.css & jquery.js in the same file folder // <!DOCTYPE html> <html> <head> <title></title> <link href="bootstrap.css" rel="stylesheet"> <script type="text/javascript" src="jquery.js"></script> </head> <body> <div class="container-fluid"> <div class="row"> <div class="col-xs-4"></div> <div class="col-xs-4" style="min-height:300px"> <ul id="marquee-vertical"> <li style="list-style-type:none"> <a href="">Breaking News 1</a> <div class="row"> <div class="col-xs-4"><img src="logo1.png"/></div> <div class="col-xs-8">Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.</div> </div> </li> <li style="list-style-type:none"> <a href="">Breaking News 2</a> <div class="row"> <div class="col-xs-4"><img src="logo1.png"/></div> <div class="col-xs-8">Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.</div> </div> </li> <li style="list-style-type:none"> <a href="">Breaking News 3</a> <div class="row"> <div class="col-xs-4"><img src="logo1.png"/></div> <div class="col-xs-8">Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.</div> </div> </li> <li style="list-style-type:none"> <a href="" >Breaking News 4</a> <div class="row"> <div class="col-xs-4"><img src="logo1.png"/></div> <div class="col-xs-8">Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.</div> </div> </li> </ul> </div> <div class="col-xs-4"></div> </div> </div> <script type="text/javascript"> (function($, window, document, undefined){ var pluginName = "marquee", defaults = { enable : true, direction: 'vertical', itemSelecter : 'li', delay: 1000, speed: 1, timing: 1, mouse: true }; function Widget(element, options) { this.element = element; this.settings = $.extend({}, defaults, options); this._defaults = defaults; this._name = pluginName; this.$element = $(this.element); this.$wrapper = this.$element.parent(); this.$items = this.$element.children(this.settings.itemSelecter); this.next = 0; this.timeoutHandle; this.intervalHandle if(!this.settings.enable)return; this.init(); } Widget.prototype = { init:function(){ var that = this; var totalSize = 0; $.each(this.$items, function(index, element){ totalSize += that.isHorizontal() ? parseInt($(element).outerWidth()) : parseInt($(element).outerHeight()); }); var elmentTotalSize = this.isHorizontal() ? this.$element.outerWidth : this.$element.outerHeight; if(totalSize < elmentTotalSize)return; this.$wrapper.css({ position : 'relative', overflow : 'hidden' }); this.$element.css({ position : 'absolute', top : 0, left: 0 }); this.$element.css(this.isHorizontal() ? 'width' : 'height', '1000%'); this.cloneAllItems(); if(this.settings.mouse) this.addHoverEvent(this); this.timer(this); }, timer : function(that){ this.timeoutHandle = setTimeout(function(){that.play(that)}, this.settings.delay); }, play : function(that){ this.clearTimeout(); var target = 0; for(var i = 0; i <= this.next; i++){ target -= this.isHorizontal() ? parseInt($(this.$items.get(this.next)).outerWidth()) : parseInt($(this.$items.get(this.next)).outerHeight()); } this.intervalHandle = setInterval(function(){that.animate(target)},this.settings.timing); }, animate : function(target){ var mark = this.isHorizontal() ? 'left' : 'top'; var present = parseInt(this.$element.css(mark)); if(present > target) { if(present - this.settings.speed <= target) { this.$element.css(mark, target); }else this.$element.css(mark, present - this.settings.speed); }else{ this.clearInterval(); if(this.next + 1 < this.$items.length){ this.next++; }else{ this.next = 0; this.$element.css(mark,0); } this.timer(this); } }, isHorizontal : function(){ return this.settings.direction == 'horizontal'; }, cloneAllItems: function(){ this.$element.append(this.$items.clone()); }, clearTimeout : function(){ clearTimeout(this.timeoutHandle); }, clearInterval : function(){ clearInterval(this.intervalHandle); }, addHoverEvent : function(that){ this.$wrapper .mouseenter(function(){ that.clearInterval() that.clearTimeout(); }) .mouseleave(function(){ that.play(that); }); } } $.fn[pluginName] = function(options) { return this.each(function() { if (!$.data(this, "plugin_" + pluginName)) { $.data(this, "plugin_" + pluginName, new Widget(this, options)); } }); }; })(jQuery, window, document); $(function(){ $('#marquee-vertical').marquee(); }); </script> </body> </html>