Note that there are some explanatory texts on larger screens.

plurals
  1. POAutomatically scroll to bottom of div using Tiny Scrollbar
    primarykey
    data
    text
    <p>I'm coding a shoutbox and making it as user friendly as possible. It uses the <a href="http://plugins.jquery.com/project/tinyscrollbar" rel="nofollow">Tiny Scrollbar plugin</a> for jQuery and I want to incorporate an extra function that will allow me to make it go to the bottom of the <code>div</code>. It should automatically scroll (possibly with a smooth animated effect) to the bottom.</p> <p>Here is the actual tiny scrollbar code:</p> <pre><code>(function($){ $.tiny = $.tiny || { }; $.tiny.scrollbar = { options: { axis: 'y', // vertical or horizontal scrollbar? ( x || y ). wheel: 40, //how many pixels must the mouswheel scroll at a time. scroll: true, //enable or disable the mousewheel; size: 'auto', //set the size of the scrollbar to auto or a fixed number. sizethumb: 'auto' //set the size of the thumb to auto or a fixed number. } }; $.fn.tinyscrollbar = function(options) { var oElement = null; var options = $.extend({}, $.tiny.scrollbar.options, options); this.each(function() { oElement = new Scrollbar($(this), options); }); return $.extend(this, oElement); }; function Scrollbar(root, options){ var oSelf = this; var oWrapper = root; var oViewport = { obj: $('.viewport', root) }; var oContent = { obj: $('.overview', root) }; var oScrollbar = { obj: $('.scrollbar', root) }; var oTrack = { obj: $('.track', oScrollbar.obj) }; var oThumb = { obj: $('.thumb', oScrollbar.obj) }; var sAxis = options.axis == 'x', sDirection = sAxis ? 'left' : 'top', sSize = sAxis ? 'Width' : 'Height'; var iScroll, iPosition = { start: 0, now: 0 }, iMouse = {}; function initialize() { oSelf.update(); setEvents(); return oSelf; } this.update = function(bKeepScroll){ oViewport[options.axis] = oViewport.obj[0]['offset'+ sSize]; oContent[options.axis] = oContent.obj[0]['scroll'+ sSize]; oContent.ratio = oViewport[options.axis] / oContent[options.axis]; oScrollbar.obj.toggleClass('disable', oContent.ratio &gt;= 1); oTrack[options.axis] = options.size == 'auto' ? oViewport[options.axis] : options.size; oThumb[options.axis] = Math.min(oTrack[options.axis], Math.max(0, ( options.sizethumb == 'auto' ? (oTrack[options.axis] * oContent.ratio) : options.sizethumb ))); oScrollbar.ratio = options.sizethumb == 'auto' ? (oContent[options.axis] / oTrack[options.axis]) : (oContent[options.axis] - oViewport[options.axis]) / (oTrack[options.axis] - oThumb[options.axis]); iScroll = (bKeepScroll &amp;&amp; oContent.ratio &lt;= 1) ? Math.min((oContent[options.axis] - oViewport[options.axis]), Math.max(0, iScroll)) : 0; setSize(); } function setSize(){ oThumb.obj.css(sDirection, iScroll / oScrollbar.ratio); oContent.obj.css(sDirection, -iScroll); iMouse['start'] = oThumb.obj.offset()[sDirection]; var sCssSize = sSize.toLowerCase(); oScrollbar.obj.css(sCssSize, oTrack[options.axis]); oTrack.obj.css(sCssSize, oTrack[options.axis]); oThumb.obj.css(sCssSize, oThumb[options.axis]); }; function setEvents(){ oThumb.obj.bind('mousedown', start); oThumb.obj[0].ontouchstart = function(oEvent){ oEvent.preventDefault(); oThumb.obj.unbind('mousedown'); start(oEvent.touches[0]); return false; } oTrack.obj.bind('mouseup', drag); if(options.scroll &amp;&amp; this.addEventListener){ oWrapper[0].addEventListener('DOMMouseScroll', wheel, false); oWrapper[0].addEventListener('mousewheel', wheel, false ); } else if(options.scroll){oWrapper[0].onmousewheel = wheel;} }; function start(oEvent){ iMouse.start = sAxis ? oEvent.pageX : oEvent.pageY; var oThumbDir = parseInt(oThumb.obj.css(sDirection)); iPosition.start = oThumbDir == 'auto' ? 0 : oThumbDir; $(document).bind('mousemove', drag); document.ontouchmove = function(oEvent){ $(document).unbind('mousemove'); drag(oEvent.touches[0]); }; $(document).bind('mouseup', end); oThumb.obj.bind('mouseup', end); oThumb.obj[0].ontouchend = document.ontouchend = function(oEvent){ $(document).unbind('mouseup'); oThumb.obj.unbind('mouseup'); end(oEvent.touches[0]); } return false; }; function wheel(oEvent){ if(!(oContent.ratio &gt;= 1)){ oEvent = $.event.fix(oEvent || window.event); var iDelta = oEvent.wheelDelta ? oEvent.wheelDelta/120 : -oEvent.detail/3; iScroll -= iDelta * options.wheel; iScroll = Math.min((oContent[options.axis] - oViewport[options.axis]), Math.max(0, iScroll)); oThumb.obj.css(sDirection, iScroll / oScrollbar.ratio); oContent.obj.css(sDirection, -iScroll); oEvent.preventDefault(); }; }; function end(oEvent){ $(document).unbind('mousemove', drag); $(document).unbind('mouseup', end); oThumb.obj.unbind('mouseup', end); document.ontouchmove = oThumb.obj[0].ontouchend = document.ontouchend = null; return false; }; function drag(oEvent){ if(!(oContent.ratio &gt;= 1)){ iPosition.now = Math.min((oTrack[options.axis] - oThumb[options.axis]), Math.max(0, (iPosition.start + ((sAxis ? oEvent.pageX : oEvent.pageY) - iMouse.start)))); iScroll = iPosition.now * oScrollbar.ratio; oContent.obj.css(sDirection, -iScroll); oThumb.obj.css(sDirection, iPosition.now);; } return false; }; return initialize(); }; })(jQuery); </code></pre> <p>If you could modify it to do this, I would be eternally grateful!</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload