37 |
61 |
62 |
63 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Slim-scroll (_JavaScript Scroll Library_) ~ 4KB compressed
2 |
3 | Slim scroll is a replacement of default scrollbar provided by browsers on Windows. This library lets you design the scroll-bar by using simple css properties. It is created using javascript and css.
4 |
5 | [Download](https://github.com/kamlekar/slim-scroll/releases/latest) | [Github](https://github.com/venkateshwar/slim-scroll/) | [Demo](https://rawgit.com/venkateshwar/slim-scroll/master/tests/test1/index.html) | [CDNjs](https://cdnjs.com/libraries/slim-scroll)
6 |
7 | ### [Buy me a :beer: or :coffee:](https://paypal.me/kamlekar)
8 |
9 | **Tested on**: IE9+, Chrome and Firefox.
10 |
11 | ##
12 |
13 | ### Main Features:
14 | - Easier to color the custom scrollbar using CSS.
15 | - Can animate easily (_check below properties for support_).
16 | - Re-evaluates when the container is fluid, vertically.
17 |
18 | ### How to use:
19 | - To make it work, include `slimscroll.js` in `head` tag.
20 | - Apply height to the container in fixed units or percentage.
21 | - Just design the scrollbar as you want by applying css classes as explained below.
22 | - [In IE8] Apply high specificity to override normal styles given to the scroll bar.
23 |
24 | and then:
25 |
26 | ##### Method 1 (_with no added styles_):
27 |
28 | new slimScroll(Element); // 'Element' is Javascript DOM object
29 |
30 | ##### Method 2 (_with added styles_):
31 |
32 | or to add your own defined css styles:
33 |
34 | new slimScroll(Element, {
35 | 'wrapperClass': '',
36 |
37 | 'scrollBarClass': '',
38 |
39 | 'scrollBarContainerClass': '',
40 |
41 | 'scrollBarContainerSpecialClass': '',
42 |
43 | 'scrollBarMinHeight': '',
44 |
45 | 'scrollBarFixedHeight': '',
46 |
47 | 'keepFocus': true/false
48 | });
49 |
50 | ##### Explanation of above properties:
51 |
52 | - **wrapperClass** (*type - "string"*) : Mention wrapper class here.
53 | - **scrollBarClass** (*type - "string"*) : Mention scroll bar class here.
54 | - **scrollBarContainerClass** (*type - "string"*) : Mention scroll bar container class here.
55 | - **scrollBarContainerSpecialClass** (*type - "string"*) : This property is used to mention a class which will be applied only when the user is scrolling the content. Could be helpful while applying animations to the scroll bar.
56 | - **scrollBarMinHeight** (*type - "Integer"*) : Used to mention minimum scroll bar height here (without pixel unit)
57 | - **scrollBarFixedHeight** (*type - "Integer"*) : Used to mention scroll bar fixed height (without pixel unit). This makes sure to show the scroll bar height fixed even when content inside the container is increased.
58 | - **keepFocus** (*type - "Boolean"*) : Used to focus the container.
59 |
60 | ### To make this work on height resize:
61 |
62 | var customScroll = new slimScroll();
63 | window.onresize = customScroll.resetValues; // pure javascript example.
64 |
65 | ### Note:
66 |
67 | - Usage of the above mentioned properties is optional or as per need.
68 | - Add [higher specificity](https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity) css to override the custom styles which are being applied by this library.
69 | - Don't override the styles which are given highest specificity (`!important`) by this library (_those styles are necessary to make this scroll library work_).
70 |
71 |
72 | ### How I got this thought:
73 |
74 | I got this thought, when I found solution to hide the default scrollbar (_using css_) which was the requirement for a post on [Stackoverflow](http://stackoverflow.com/a/16671476/1577396).
75 |
76 | The solution was simple but that is how I got this thought :).
77 |
78 | ### Future implementations:
79 | - Implement Horizontal Scrollbar.
80 |
81 | ---------------------------------
82 |
83 | If you find any issue(s), please file [here](https://github.com/venkateshwar/slim-scroll/issues).
84 |
--------------------------------------------------------------------------------
/dist/slimscroll.min.js:
--------------------------------------------------------------------------------
1 | var slimScroll=function(e,t){var n={},o=this,i="wrapper",r="scrollBar",s="scrollBarContainer",l="data-slimscroll",a="scrollTop",c="parentElement",u="innerHTML",d="parentNode",p="srcElement",f=function(e){if(o.initInProcess||(o.initDone||o.init(),B(n[i]))){n[i].setAttribute("style","overflow: hidden !important");var t=n.E;n.h=n[s].offsetHeight,n.sH=n[i].scrollHeight,n.sP=n.h/n.sH*100,n.sbh=n.sP*n.h/100,t.sH?n.sP1=t.sH/n.h*100:n.sP1=n.sbhn.rP1?u=n.rP1:u<0&&(u=0),n[r].style.top=u+"%",n[i][a]=u*n.sH1,m(n[s],l.S+l.a)}},S=function(e){var t=window.getSelection?window.getSelection():document.selection;t&&(t.removeAllRanges?t.removeAllRanges():t.empty&&t.empty());(e=e||event).currentTarget||e[p];return w("mousemove",document,x),w("mouseup",document,P),n.offsetTop=T(n[i]),n.firstY=e.pageY||event.clientY,n.reposition||(n.reposition=H(n[r],n.h)),!1},H=function(e,t){var n=parseInt(e.style.top.replace("%",""),10)*t/100;return n||0},x=function(e){var e=e||event,t=n.E,o=e.pageY||e.clientY,l=(n.reposition+o-n.firstY)/n.h*100;n.rP1=0&&n.firstY>n.offsetTop;(n.previousTop>l&&c||c&&n[i][a]+n.h!==n.sH)&&(n[r].style.top=l+"%",n.previousTop=l,n[i][a]=l*n.sH1),m(n[s],t.S)},P=function(e){var e=e||event,t=n.E;b("mousemove",document),b("mouseup",document),n.reposition=0,m(n[s],t.S+t.a)},y=function(e){e=e||event;if(n){var t=n.E;m(n[s],t.S),n[r].style.top=n[i][a]/n.sH1+"%",m(n[s],t.S+t.a)}},w=function(e,t,n){t["on"+e]=n},b=function(e,t){t["on"+e]=null},C=function(e,t,n,o){e.insertRule?e.insertRule(t+"{"+n+"}",o):e.addRule&&e.addRule(t,n,o)},T=function(e){var t=document.documentElement[a];return e.getBoundingClientRect().top+(t||document.body[a])},E=function(){if(e.removeAttribute(l),o.isSlimScrollInserted){var t=e.firstChild.innerHTML;t&&(e.innerHTML=t)}o.isSlimScrollInserted=!1,o.initDone=!1},B=function(t){return t||(t=e),t.offsetHeightdiv",i,0),C(u,e+">div+div",r,0),C(u,"[data-scrollbar]",s,0)):a.styleSheet.cssText=e+">div{"+i+"}"+e+">div+div{"+r+"}"+e+">div+div>div{"+s+"}",o.isSlimScrollInserted=!0,window.slimScrollStylesApplied=!0}}();var a=e[u],c=n.E={};t=t||{},c.w=t.wrapperClass||"",c.s=t.scrollBarClass||"",c.S=t.scrollBarContainerClass||"",c.a=t.scrollBarContainerSpecialClass?" "+t.scrollBarContainerSpecialClass:"",c.mH=t.scrollBarMinHeight||25,c.sH=t.scrollBarFixedHeight,e[u]="",n[i]=h(c.w,a,e),n[s]=h(c.S+c.a,"",e),n[r]=h(c.s,"",n[s]),v(n[r],"data-scrollbar","1"),f(),Y(),t.keepFocus&&(v(n[i],"tabindex","-1"),n[i].focus()),w("mousedown",n[r],S),w("click",n[s],g),w("scroll",n[i],y),o.initInProcess=!1}else E()},Y=function(){n[i].style.overflow="";var e=n[i].offsetWidth-n[i].clientWidth;n[i].style.right=-e+"px",o.isSlimScrollInserted=!0,t.keepFocus&&(v(n[i],"tabindex","-1"),n[i].focus())};return o.resetValues=function(){Object.keys(n).length?(f(),Y()):f()},o.init=I,I(),o};
--------------------------------------------------------------------------------
/tests/test1/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | slim scroll demo
7 |
8 |
9 |
48 |
49 |
50 | Visit Website
51 |
52 |
53 | Lorem ipsum dolor sit amet, ne eos utinam impetus legimus, vide omnis nusquam eam te. Impetus mediocritatem eu mea. Nisl oblique salutandi no cum. Ei pro everti periculis. Ne per ignota delenit, vis officiis indoctum urbanitas no, accusata torquatos incorrupte at per. At mei soluta sanctus contentiones, eam id sint molestie scriptorem. An tation contentiones eum. Nec id offendit facilisi, ex eligendi gubergren eum, ne libris commune est. Modus labitur patrioque quo cu, eu mei altera integre eleifend, ea quod abhorreant vix. Per eu errem saepe nusquam. Ne congue splendide vim, pri ad vocibus omittam assentior. Cu nam eirmod ocurreret, partem intellegam est et. Illum aliquam legendos at sed, ne idque fastidii apeirian vix. Sed nisl libris delectus ei. Percipit oporteat philosophia et vel, liber deterruisset eu his, paulo mentitum te his. Et duo paulo iudicabit, voluptua placerat ea mei. Quo ea ponderum omittantur referrentur. At homero bonorum nominati has, suas comprehensam eum in. At meis lobortis cum. Diam ipsum consulatu pro no, wisi nullam labores mel an, pro error integre molestiae te. Scripta accommodare sea in, has ne error viris. Erat qualisque eu vim, an atqui vivendo forensibus usu. Iisque petentium ad cum.
54 | Lorem ipsum dolor sit amet, ne eos utinam impetus legimus, vide omnis nusquam eam te. Impetus mediocritatem eu mea. Nisl oblique salutandi no cum. Ei pro everti periculis. Ne per ignota delenit, vis officiis indoctum urbanitas no, accusata torquatos incorrupte at per. At mei soluta sanctus contentiones, eam id sint molestie scriptorem. An tation contentiones eum. Nec id offendit facilisi, ex eligendi gubergren eum, ne libris commune est. Modus labitur patrioque quo cu, eu mei altera integre eleifend, ea quod abhorreant vix. Per eu errem saepe nusquam. Ne congue splendide vim, pri ad vocibus omittam assentior. Cu nam eirmod ocurreret, partem intellegam est et. Illum aliquam legendos at sed, ne idque fastidii apeirian vix. Sed nisl libris delectus ei. Percipit oporteat philosophia et vel, liber deterruisset eu his, paulo mentitum te his. Et duo paulo iudicabit, voluptua placerat ea mei. Quo ea ponderum omittantur referrentur. At homero bonorum nominati has, suas comprehensam eum in. At meis lobortis cum. Diam ipsum consulatu pro no, wisi nullam labores mel an, pro error integre molestiae te. Scripta accommodare sea in, has ne error viris. Erat qualisque eu vim, an atqui vivendo forensibus usu. Iisque petentium ad cum.
55 |
56 |
57 |
58 | Lorem ipsum dolor sit amet, ne eos utinam impetus legimus, vide omnis nusquam eam te. Impetus mediocritatem eu mea. Nisl oblique salutandi no cum. Ei pro everti periculis. Ne per ignota delenit, vis officiis indoctum urbanitas no, accusata torquatos incorrupte at per. At mei soluta sanctus contentiones, eam id sint molestie scriptorem. An tation contentiones eum. Nec id offendit facilisi, ex eligendi gubergren eum, ne libris commune est. Modus labitur patrioque quo cu, eu mei altera integre eleifend, ea quod abhorreant vix. Per eu errem saepe nusquam. Ne congue splendide vim, pri ad vocibus omittam assentior. Cu nam eirmod ocurreret, partem intellegam est et. Illum aliquam legendos at sed, ne idque fastidii apeirian vix. Sed nisl libris delectus ei. Percipit oporteat philosophia et vel, liber deterruisset eu his, paulo mentitum te his. Et duo paulo iudicabit, voluptua placerat ea mei. Quo ea ponderum omittantur referrentur. At homero bonorum nominati has, suas comprehensam eum in. At meis lobortis cum. Diam ipsum consulatu pro no, wisi nullam labores mel an, pro error integre molestiae te. Scripta accommodare sea in, has ne error viris. Erat qualisque eu vim, an atqui vivendo forensibus usu. Iisque petentium ad cum.
59 | Lorem ipsum dolor sit amet, ne eos utinam impetus legimus, vide omnis nusquam eam te. Impetus mediocritatem eu mea. Nisl oblique salutandi no cum. Ei pro everti periculis. Ne per ignota delenit, vis officiis indoctum urbanitas no, accusata torquatos incorrupte at per. At mei soluta sanctus contentiones, eam id sint molestie scriptorem. An tation contentiones eum. Nec id offendit facilisi, ex eligendi gubergren eum, ne libris commune est. Modus labitur patrioque quo cu, eu mei altera integre eleifend, ea quod abhorreant vix. Per eu errem saepe nusquam. Ne congue splendide vim, pri ad vocibus omittam assentior. Cu nam eirmod ocurreret, partem intellegam est et. Illum aliquam legendos at sed, ne idque fastidii apeirian vix. Sed nisl libris delectus ei. Percipit oporteat philosophia et vel, liber deterruisset eu his, paulo mentitum te his. Et duo paulo iudicabit, voluptua placerat ea mei. Quo ea ponderum omittantur referrentur. At homero bonorum nominati has, suas comprehensam eum in. At meis lobortis cum. Diam ipsum consulatu pro no, wisi nullam labores mel an, pro error integre molestiae te. Scripta accommodare sea in, has ne error viris. Erat qualisque eu vim, an atqui vivendo forensibus usu. Iisque petentium ad cum.
60 |
61 |
62 |
63 | Lorem ipsum dolor sit amet, ne eos utinam impetus legimus, vide omnis nusquam eam te. Impetus mediocritatem eu mea. Nisl oblique salutandi no cum. Ei pro everti periculis. Ne per ignota delenit, vis officiis indoctum urbanitas no, accusata torquatos incorrupte at per. At mei soluta sanctus contentiones, eam id sint molestie scriptorem. An tation contentiones eum. Nec id offendit facilisi, ex eligendi gubergren eum, ne libris commune est. Modus labitur patrioque quo cu, eu mei altera integre eleifend, ea quod abhorreant vix. Per eu errem saepe nusquam. Ne congue splendide vim, pri ad vocibus omittam assentior. Cu nam eirmod ocurreret, partem intellegam est et. Illum aliquam legendos at sed, ne idque fastidii apeirian vix. Sed nisl libris delectus ei. Percipit oporteat philosophia et vel, liber deterruisset eu his, paulo mentitum te his. Et duo paulo iudicabit, voluptua placerat ea mei. Quo ea ponderum omittantur referrentur. At homero bonorum nominati has, suas comprehensam eum in. At meis lobortis cum. Diam ipsum consulatu pro no, wisi nullam labores mel an, pro error integre molestiae te. Scripta accommodare sea in, has ne error viris. Erat qualisque eu vim, an atqui vivendo forensibus usu. Iisque petentium ad cum.
64 | Lorem ipsum dolor sit amet, ne eos utinam impetus legimus, vide omnis nusquam eam te. Impetus mediocritatem eu mea. Nisl oblique salutandi no cum. Ei pro everti periculis. Ne per ignota delenit, vis officiis indoctum urbanitas no, accusata torquatos incorrupte at per. At mei soluta sanctus contentiones, eam id sint molestie scriptorem. An tation contentiones eum. Nec id offendit facilisi, ex eligendi gubergren eum, ne libris commune est. Modus labitur patrioque quo cu, eu mei altera integre eleifend, ea quod abhorreant vix. Per eu errem saepe nusquam. Ne congue splendide vim, pri ad vocibus omittam assentior. Cu nam eirmod ocurreret, partem intellegam est et. Illum aliquam legendos at sed, ne idque fastidii apeirian vix. Sed nisl libris delectus ei. Percipit oporteat philosophia et vel, liber deterruisset eu his, paulo mentitum te his. Et duo paulo iudicabit, voluptua placerat ea mei. Quo ea ponderum omittantur referrentur. At homero bonorum nominati has, suas comprehensam eum in. At meis lobortis cum. Diam ipsum consulatu pro no, wisi nullam labores mel an, pro error integre molestiae te. Scripta accommodare sea in, has ne error viris. Erat qualisque eu vim, an atqui vivendo forensibus usu. Iisque petentium ad cum.
65 |