├── demo ├── css │ └── style.css ├── fonts │ ├── MaterialIcons-Regular.eot │ ├── MaterialIcons-Regular.ijmap │ ├── MaterialIcons-Regular.ttf │ ├── MaterialIcons-Regular.woff │ ├── MaterialIcons-Regular.woff2 │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.svg │ ├── fontawesome-webfont.ttf │ ├── fontawesome-webfont.woff │ └── fontawesome-webfont.woff2 ├── images │ ├── favicon.ico │ ├── favicon.png │ ├── ie8-panel │ │ └── warning_bar_0000_us.jpg │ ├── page-1_img01.jpg │ ├── page-1_img02.png │ ├── page-1_img03.jpg │ ├── page-1_img04.jpg │ └── page-1_img05.png ├── index.html ├── js │ ├── core.min.js │ ├── html5shiv.min.js │ ├── jquery.rd-parallax.min.js │ ├── jquery.swiper.min.js │ ├── jquery.ui.totop.min.js │ ├── jquery.vide.min.js │ ├── pointer-events.min.js │ ├── script.js │ ├── smoothscroll.min.js │ └── wow.min.js ├── sass │ ├── _variables.scss │ ├── components │ │ ├── _buttons.scss │ │ └── _icons.scss │ ├── extensions │ │ ├── _rd-parallax.scss │ │ ├── _swiper.scss │ │ ├── _ui-to-top.scss │ │ └── _vide.scss │ ├── fonts │ │ ├── _font-awesome.scss │ │ └── _material-icons.scss │ ├── helpers │ │ ├── _animate.scss │ │ ├── _floating.scss │ │ ├── _text-alignment.scss │ │ └── _text-styling.scss │ ├── includes │ │ ├── _mixins.scss │ │ └── _normalize.scss │ ├── modules │ │ ├── tm-box │ │ │ └── _boxes.scss │ │ └── tm-grid │ │ │ ├── _tm-grid-builder.scss │ │ │ └── _tm-grid.scss │ └── style.scss └── video │ ├── video-bg.jpg │ └── video-bg.mp4 ├── dist ├── css │ └── rd-navbar.css └── js │ ├── jquery.rd-navbar.js │ └── jquery.rd-navbar.min.js ├── documentation ├── README.md ├── config.php ├── css │ ├── grid.css │ └── style.css ├── fonts │ ├── material-design.eot │ ├── material-design.svg │ ├── material-design.ttf │ └── material-design.woff ├── functions.php ├── img │ ├── chrome.png │ ├── fancybox_buttons.png │ ├── fancybox_loading.gif │ ├── fancybox_overlay.png │ ├── fancybox_sprite.png │ ├── favicon.ico │ ├── favicon.png │ ├── firefox.png │ ├── ie.png │ ├── ie8-panel │ │ └── warning_bar_0000_us.jpg │ └── safari.png ├── index.php ├── js │ ├── device.min.js │ ├── html5shiv.js │ ├── jquery-migrate-1.2.1.js │ ├── jquery.easing.1.3.js │ ├── jquery.js │ ├── jquery.min.js │ ├── jquery.rd-navbar.js │ ├── jquery.rd-navbar.min.js │ ├── jquery.ui.totop.js │ ├── script.js │ └── script.min.js ├── sass │ ├── _alerts.scss │ ├── _mixins.scss │ ├── _navbar.scss │ ├── _normalize.scss │ ├── _owl-carousel.scss │ ├── _select.scss │ ├── _stuck.scss │ ├── _to-top.scss │ ├── _variables.scss │ ├── grid.scss │ └── style.scss ├── section.php ├── sections.json ├── sections │ ├── demo │ │ ├── en │ │ │ └── __description.php │ │ ├── ru │ │ │ └── __description.php │ │ └── section.json │ ├── example │ │ ├── en │ │ │ └── __description.php │ │ ├── ru │ │ │ └── __description.php │ │ └── section.json │ ├── howtouse │ │ ├── en │ │ │ ├── __description.php │ │ │ ├── classes.php │ │ │ ├── general.php │ │ │ ├── layouts.php │ │ │ ├── links.php │ │ │ ├── navigation.php │ │ │ ├── onepage.php │ │ │ ├── stickup.php │ │ │ └── toggles.php │ │ ├── ru │ │ │ ├── __description.php │ │ │ ├── classes.php │ │ │ ├── general.php │ │ │ ├── layouts.php │ │ │ ├── links.php │ │ │ ├── navigation.php │ │ │ ├── onepage.php │ │ │ ├── stickup.php │ │ │ └── toggles.php │ │ └── section.json │ ├── introduction │ │ ├── en │ │ │ └── __description.php │ │ ├── ru │ │ │ └── __description.php │ │ └── section.json │ ├── requirejs │ │ ├── en │ │ │ └── __description.php │ │ ├── ru │ │ │ └── __description.php │ │ └── section.json │ └── settings │ │ ├── en │ │ └── __description.php │ │ ├── ru │ │ └── __description.php │ │ └── section.json └── video │ ├── framework_install.mp4 │ ├── framework_install.png │ ├── static_editor.mp4 │ └── static_editor.png ├── readme.md ├── sources ├── css │ └── rd-navbar.css └── sass │ ├── _mixins.scss │ ├── rd-navbar.scss │ └── rd-navbar_components │ ├── _rd-navbar-brand.scss │ ├── _rd-navbar-cart.scss │ ├── _rd-navbar-collapse.scss │ ├── _rd-navbar-nav.scss │ ├── _rd-navbar-panel.scss │ ├── _rd-navbar-search.scss │ └── _rd-navbar-toggles.scss └── vendor ├── compiler.jar └── watchers.xml /demo/fonts/MaterialIcons-Regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZemezPlugins/rd-navbar/d96902f1d24e2f9d142bbaaf963e96b5651c1336/demo/fonts/MaterialIcons-Regular.eot -------------------------------------------------------------------------------- /demo/fonts/MaterialIcons-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZemezPlugins/rd-navbar/d96902f1d24e2f9d142bbaaf963e96b5651c1336/demo/fonts/MaterialIcons-Regular.ttf -------------------------------------------------------------------------------- /demo/fonts/MaterialIcons-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZemezPlugins/rd-navbar/d96902f1d24e2f9d142bbaaf963e96b5651c1336/demo/fonts/MaterialIcons-Regular.woff -------------------------------------------------------------------------------- /demo/fonts/MaterialIcons-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZemezPlugins/rd-navbar/d96902f1d24e2f9d142bbaaf963e96b5651c1336/demo/fonts/MaterialIcons-Regular.woff2 -------------------------------------------------------------------------------- /demo/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZemezPlugins/rd-navbar/d96902f1d24e2f9d142bbaaf963e96b5651c1336/demo/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /demo/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZemezPlugins/rd-navbar/d96902f1d24e2f9d142bbaaf963e96b5651c1336/demo/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /demo/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZemezPlugins/rd-navbar/d96902f1d24e2f9d142bbaaf963e96b5651c1336/demo/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /demo/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZemezPlugins/rd-navbar/d96902f1d24e2f9d142bbaaf963e96b5651c1336/demo/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /demo/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZemezPlugins/rd-navbar/d96902f1d24e2f9d142bbaaf963e96b5651c1336/demo/images/favicon.ico -------------------------------------------------------------------------------- /demo/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZemezPlugins/rd-navbar/d96902f1d24e2f9d142bbaaf963e96b5651c1336/demo/images/favicon.png -------------------------------------------------------------------------------- /demo/images/ie8-panel/warning_bar_0000_us.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZemezPlugins/rd-navbar/d96902f1d24e2f9d142bbaaf963e96b5651c1336/demo/images/ie8-panel/warning_bar_0000_us.jpg -------------------------------------------------------------------------------- /demo/images/page-1_img01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZemezPlugins/rd-navbar/d96902f1d24e2f9d142bbaaf963e96b5651c1336/demo/images/page-1_img01.jpg -------------------------------------------------------------------------------- /demo/images/page-1_img02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZemezPlugins/rd-navbar/d96902f1d24e2f9d142bbaaf963e96b5651c1336/demo/images/page-1_img02.png -------------------------------------------------------------------------------- /demo/images/page-1_img03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZemezPlugins/rd-navbar/d96902f1d24e2f9d142bbaaf963e96b5651c1336/demo/images/page-1_img03.jpg -------------------------------------------------------------------------------- /demo/images/page-1_img04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZemezPlugins/rd-navbar/d96902f1d24e2f9d142bbaaf963e96b5651c1336/demo/images/page-1_img04.jpg -------------------------------------------------------------------------------- /demo/images/page-1_img05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZemezPlugins/rd-navbar/d96902f1d24e2f9d142bbaaf963e96b5651c1336/demo/images/page-1_img05.png -------------------------------------------------------------------------------- /demo/js/html5shiv.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @preserve HTML5 Shiv 3.7.2 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed 3 | */ 4 | !function(e,t){function n(e,t){var n=e.createElement("p"),r=e.getElementsByTagName("head")[0]||e.documentElement;return n.innerHTML="x",r.insertBefore(n.lastChild,r.firstChild)}function r(){var e=y.elements;return"string"==typeof e?e.split(" "):e}function a(e,t){var n=y.elements;"string"!=typeof n&&(n=n.join(" ")),"string"!=typeof e&&(e=e.join(" ")),y.elements=n+" "+e,m(t)}function c(e){var t=E[e[p]];return t||(t={},v++,e[p]=v,E[v]=t),t}function o(e,n,r){if(n||(n=t),u)return n.createElement(e);r||(r=c(n));var a;return a=r.cache[e]?r.cache[e].cloneNode():g.test(e)?(r.cache[e]=r.createElem(e)).cloneNode():r.createElem(e),!a.canHaveChildren||f.test(e)||a.tagUrn?a:r.frag.appendChild(a)}function i(e,n){if(e||(e=t),u)return e.createDocumentFragment();n=n||c(e);for(var a=n.frag.cloneNode(),o=0,i=r(),l=i.length;l>o;o++)a.createElement(i[o]);return a}function l(e,t){t.cache||(t.cache={},t.createElem=e.createElement,t.createFrag=e.createDocumentFragment,t.frag=t.createFrag()),e.createElement=function(n){return y.shivMethods?o(n,e,t):t.createElem(n)},e.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+r().join().replace(/[\w\-:]+/g,function(e){return t.createElem(e),t.frag.createElement(e),'c("'+e+'")'})+");return n}")(y,t.frag)}function m(e){e||(e=t);var r=c(e);return!y.shivCSS||s||r.hasCSS||(r.hasCSS=!!n(e,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),u||l(e,r),e}var s,u,d="3.7.2",h=e.html5||{},f=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,g=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,p="_html5shiv",v=0,E={};!function(){try{var e=t.createElement("a");e.innerHTML="",s="hidden"in e,u=1==e.childNodes.length||function(){t.createElement("a");var e=t.createDocumentFragment();return"undefined"==typeof e.cloneNode||"undefined"==typeof e.createDocumentFragment||"undefined"==typeof e.createElement}()}catch(n){s=!0,u=!0}}();var y={elements:h.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:d,shivCSS:h.shivCSS!==!1,supportsUnknownElements:u,shivMethods:h.shivMethods!==!1,type:"default",shivDocument:m,createElement:o,createDocumentFragment:i,addElements:a};e.html5=y,m(t)}(this,document); -------------------------------------------------------------------------------- /demo/js/jquery.rd-parallax.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @module RD Parallax 3 | * @author Evgeniy Gusarov 4 | * @see https://ua.linkedin.com/pub/evgeniy-gusarov/8a/a40/54a 5 | * @version 3.0.2 6 | */ 7 | (function(){(function(d,q,n){var m,p,k,l;l=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);p=(k=-1!==navigator.appVersion.indexOf("MSIE"))?parseInt(navigator.appVersion.split("MSIE")[1]):null;m=function(){function b(a,e){this.options=d.extend(!0,{},this.Defaults,e);this.$element=d(a);this.$win=d(n);this.$doc=d(q);this.initialize()}b.prototype.Defaults={layerBlur:!0,layerDirection:"inverse",layerSpeed:1,layerDuration:200,layerEasing:"linear"};b.prototype.initialize= 8 | function(){var a;a=this;a.$element.wrapInner(d("
",{"class":"rd-parallax-inner"})).find(".rd-parallax-layer[data-type]").each(function(){var e,c;e=d(this);switch(e.attr("data-type").toLowerCase()){case "media":if(c=this.getAttribute("data-url"))e.css({"background-image":a.url(c)}),("true"===this.getAttribute("data-blur")||a.options.layerBlur)&&d("",{src:c}).load(function(){e.attr("data-media-width",this.width);e.attr("data-media-height",this.height);a.$win.on("resize",d.proxy(a.blurMedia, 9 | e[0],a));if(l)a.$win.on("orientationchange",d.proxy(a.blurMedia,e[0],a));return d.proxy(a.blurMedia,e[0],a)()});a.$element.on("resize",d.proxy(a.resizeMedia,this,a));a.$element.on("resize",d.proxy(a.moveLayer,this,a));a.$win.on("resize",d.proxy(a.resizeMedia,this,a));if(l)a.$win.on("orientationchange",d.proxy(a.resizeMedia,this,a))}a.$doc.on("scroll",d.proxy(a.moveLayer,this,a));a.$doc.on("resize",d.proxy(a.moveLayer,this,a));if("true"===this.getAttribute("data-fade")&&!k)a.$doc.on("scroll",d.proxy(a.fadeLayer, 10 | this,a));if("true"===this.getAttribute("data-fade")&&!k)a.$doc.on("resize",d.proxy(a.fadeLayer,this,a))});a.$win.trigger("resize");a.$doc.trigger("scroll")};b.prototype.moveLayer=function(a){var e,c,b,f,g,h;f=a.$win.scrollTop();b=a.$element.offset().top;h=a.$win.height();e=a.$element.height();c=this.offsetHeight;parseFloat(g);g=("inverse"===this.getAttribute("data-direction")?-1:"inverse"===a.options.layerDirection?-1:1)*(this.getAttribute("data-speed")?Math.min(parseFloat(this.getAttribute("data-speed")), 11 | 2):a.options.layerSpeed);e=-(b-f)*g+(e-c)/2+(h-e)/2*g;return d(this).css(a.transform(e,a))};b.prototype.fadeLayer=function(a,e){var c,b,f,g,h;f=d(this);c=a.$element.height();b=a.$element.offset().top+c/2;g=f.offset().top+f.height()/2;h=c/6;if(b+h>g&&b-hc?0:1=c?(a-e)*c:a*c)};b.prototype.url=function(a){return"url("+a+")"};b.prototype.px=function(a){return a+"px"};b.prototype.transform=function(a,b){return k&&10>p?{transform:"translate(0,"+a+"px)"}:{"-webkit-transform":"translate3d(0,"+a+"px, 0)",transform:"translate3d(0,"+a+"px, 0)",transition:l?""+b.options.layerDuration+"ms transform "+b.options.layerEasing:"none"}};b.prototype.blur=function(a){return 3'+t.text+""),o(i).click(function(){return o("html, body").stop().animate({scrollTop:0},t.scrollSpeed,t.easingType),!1}),o(window).scroll(function(){var n=o(window).scrollTop();"undefined"==typeof document.body.style.maxHeight&&o(i).css({position:"absolute",top:o(window).scrollTop()+o(window).height()-50}),n>t.min?o(i).stop(!0,!0).addClass("active"):o(i).removeClass("active")})}}(jQuery); -------------------------------------------------------------------------------- /demo/js/jquery.vide.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @module Vide - v0.1.0 3 | * @description Easy as hell jQuery plugin for video backgrounds. 4 | * @author Ilya Makarov 5 | * @see http://vodkabears.github.io/vide/ 6 | * @license MIT License 7 | */ 8 | !function(t,e,i,s){"use strict";function o(e,i,s){this.element=t(e),this._defaults=a,this._name=n;var o=i.lastIndexOf(".");i=i.slice(0,0>o?i.length:o),this.settings=t.extend({},a,s),this.path=i,this.init()}var n="vide",a={volume:1,playbackRate:1,muted:!0,loop:!0,autoplay:!0,position:"50% 50%",posterType:"jpg"},r=/iPad|iPhone|iPod/i.test(s.userAgent),p=/Android/i.test(s.userAgent);t[n]={lookup:[]};var h=function(t){var e,i,s={};e=t.replace(/\s*:\s*/g,":").replace(/\s*,\s*/g,","),i=e.split(",");var o,n,a;for(o=0,n=i.length;n>o;o++)i[o]=i[o].split(":"),a=i[o][1],("string"==typeof a||a instanceof String)&&(a="true"===a||("false"===a?!1:a)),("string"==typeof a||a instanceof String)&&(a=isNaN(a)?a:+a),s[i[o][0]]=a;return s},d=function(t){var e=t.split(" ");switch(e[0]){case"left":e[0]="0%";break;case"center":e[0]="50%";break;case"right":e[0]="100%"}switch(e[1]){case"top":e[1]="0";break;case"middle":e[1]="50%";break;case"bottom":e[1]="100%"}return{x:e[0],y:e[1]}};o.prototype.init=function(){var e=this;if(this.wrapper=t('
'),this.wrapper.css({position:"absolute","z-index":0,top:0,left:0,bottom:0,right:0,overflow:"hidden","-webkit-background-size":"cover","-moz-background-size":"cover","-o-background-size":"cover","background-size":"cover","background-repeat":"no-repeat","background-position":"center center"}),"detect"===this.settings.posterType?(t.get(this.path+".png").done(function(){e.wrapper.css("background-image","url("+e.path+".png)")}),t.get(this.path+".jpg").done(function(){e.wrapper.css("background-image","url("+e.path+".jpg)")}),t.get(this.path+".gif").done(function(){e.wrapper.css("background-image","url("+e.path+".gif)")})):e.wrapper.css("background-image","url("+e.path+"."+this.settings.posterType+")"),"static"===this.element.css("position")&&this.element.css("position","relative"),this.element.prepend(this.wrapper),!r&&!p){this.video=t(""),this.video.css("visibility","hidden"),this.video.prop({autoplay:this.settings.autoplay,loop:this.settings.loop,volume:this.settings.volume,muted:this.settings.muted,playbackRate:this.settings.playbackRate}),this.wrapper.append(this.video);var i=d(this.settings.position);this.video.css({margin:"auto",position:"absolute","z-index":1,top:i.y,left:i.x,"-webkit-transform":"translate(-"+i.x+", -"+i.y+")","-ms-transform":"translate(-"+i.x+", -"+i.y+")",transform:"translate(-"+i.x+", -"+i.y+")"}),this.video.bind("loadedmetadata."+n,function(){e.video.css("visibility","visible"),e.resize()}),t(this.element).bind("resize."+n,function(){e.resize()})}},o.prototype.getVideoObject=function(){return this.video?this.video[0]:null},o.prototype.resize=function(){if(this.video){var t=this.video[0].videoHeight,e=this.video[0].videoWidth,i=this.wrapper.height(),s=this.wrapper.width();this.video.css(s/e>i/t?{width:s+2,height:"auto"}:{width:"auto",height:i+2})}},o.prototype.destroy=function(){this.element.unbind(n),this.video.unbind(n),delete t[n].lookup[this.index],this.element.removeData(n),this.wrapper.remove()},t.fn[n]=function(e,i){var s;return this.each(function(){s=t.data(this,n),s&&s.destroy(),s=new o(this,e,i),s.index=t[n].lookup.push(s)-1,t.data(this,n,s)}),this},t(i).ready(function(){t(e).bind("resize."+n,function(){for(var e,i=t[n].lookup.length,s=0;i>s;s++)e=t[n].lookup[s],e&&e.resize()}),t(i).find("[data-"+n+"-bg]").each(function(e,i){var s=t(i),o=s.data(n+"-options"),a=s.data(n+"-bg");o=o?h(o):{},s[n](a,o)})})}(jQuery||Zepto,window,document,navigator); -------------------------------------------------------------------------------- /demo/js/pointer-events.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @module Pointer Events Polyfill 3 | * @description Adds support for the style attribute "pointer-events: none" to browsers without this feature (namely, IE). 4 | * @author Kent Mewhort 5 | * @license BSD Lisence 6 | */ 7 | function PointerEventsPolyfill(t){if(this.options={selector:"*",mouseEvents:["click","dblclick","mousedown","mouseup"],usePolyfillIf:function(){if("Microsoft Internet Explorer"==navigator.appName){var t=navigator.userAgent;if(null!=t.match(/MSIE ([0-9]{1,}[\.0-9]{0,})/)){var e=parseFloat(RegExp.$1);if(11>e)return!0}}return!1}},t){var e=this;$.each(t,function(t,n){e.options[t]=n})}this.options.usePolyfillIf()&&this.register_mouse_events()}PointerEventsPolyfill.initialize=function(t){return null==PointerEventsPolyfill.singleton&&(PointerEventsPolyfill.singleton=new PointerEventsPolyfill(t)),PointerEventsPolyfill.singleton},PointerEventsPolyfill.prototype.register_mouse_events=function(){$(document).on(this.options.mouseEvents.join(" "),this.options.selector,function(t){if("none"==$(this).css("pointer-events")){var e=$(this).css("display");$(this).css("display","none");var n=document.elementFromPoint(t.clientX,t.clientY);return e?$(this).css("display",e):$(this).css("display",""),t.target=n,$(n).trigger(t),!1}return!0})},jQuery(document).ready(function(){PointerEventsPolyfill.initialize({})}); -------------------------------------------------------------------------------- /demo/js/smoothscroll.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @module SmoothScroll 3 | * @author Balazs Galambosi, Patrick Brunner, Michael Herf 4 | * @license MIT license 5 | * @version v0.9.9 6 | */ 7 | function ssc_init() { 8 | if (document.body) { 9 | var a = document.body, b = document.documentElement, c = window.innerHeight, d = a.scrollHeight; 10 | (ssc_root = 0 <= document.compatMode.indexOf("CSS") ? b : a, ssc_activeElement = a, ssc_initdone = !0, top != self) ? ssc_frame = !0 : d > c && (a.offsetHeight <= c || b.offsetHeight <= c) && (ssc_root.style.height = "auto", ssc_root.offsetHeight <= c) && (c = document.createElement("div"), c.style.clear = "both", a.appendChild(c)); 11 | ssc_fixedback || (a.style.backgroundAttachment = "scroll", b.style.backgroundAttachment = "scroll"); 12 | ssc_keyboardsupport && ssc_addEvent("keydown", ssc_keydown) 13 | } 14 | } 15 | function ssc_scrollArray(a, b, c, d) { 16 | if (d || (d = 1E3), ssc_directionCheck(b, c), ssc_que.push({ 17 | x: b, 18 | y: c, 19 | lastX: 0 > b ? .99 : -.99, 20 | lastY: 0 > c ? .99 : -.99, 21 | start: +new Date 22 | }), !ssc_pending) { 23 | var e = function () { 24 | for (var n = +new Date, h = 0, m = 0, k = 0; k < ssc_que.length; k++) { 25 | var f = ssc_que[k], l = n - f.start, p = l >= ssc_animtime, g = p ? 1 : l / ssc_animtime; 26 | ssc_pulseAlgorithm && (g = ssc_pulse(g)); 27 | l = f.x * g - f.lastX >> 0; 28 | g = f.y * g - f.lastY >> 0; 29 | h += l; 30 | m += g; 31 | f.lastX += l; 32 | f.lastY += g; 33 | p && (ssc_que.splice(k, 1), k--) 34 | } 35 | b && (n = a.scrollLeft, a.scrollLeft += h, h && a.scrollLeft === n && (b = 0)); 36 | c && (h = a.scrollTop, a.scrollTop += m, m && a.scrollTop === h && (c = 0)); 37 | b || c || (ssc_que = []); 38 | ssc_que.length ? setTimeout(e, d / ssc_framerate + 1) : ssc_pending = !1 39 | }; 40 | setTimeout(e, 0); 41 | ssc_pending = !0 42 | } 43 | } 44 | function ssc_wheel(a) { 45 | ssc_initdone || ssc_init(); 46 | var b = a.target, c = ssc_overflowingAncestor(b); 47 | if (!c || a.defaultPrevented || ssc_isNodeName(ssc_activeElement, "embed") || ssc_isNodeName(b, "embed") && /\.pdf/i.test(b.src))return !0; 48 | var b = a.wheelDeltaX || 0, d = a.wheelDeltaY || 0; 49 | b || d || (d = a.wheelDelta || 0); 50 | 1.2 < Math.abs(b) && (b *= ssc_stepsize / 120); 51 | 1.2 < Math.abs(d) && (d *= ssc_stepsize / 120); 52 | ssc_scrollArray(c, -b, -d); 53 | a.preventDefault() 54 | } 55 | function ssc_keydown(a) { 56 | var b = a.target, c = a.ctrlKey || a.altKey || a.metaKey; 57 | if (/input|textarea|embed/i.test(b.nodeName) || b.isContentEditable || a.defaultPrevented || c || ssc_isNodeName(b, "button") && a.keyCode === ssc_key.spacebar)return !0; 58 | var d; 59 | d = b = 0; 60 | var c = ssc_overflowingAncestor(ssc_activeElement), e = c.clientHeight; 61 | switch (c == document.body && (e = window.innerHeight), a.keyCode) { 62 | case ssc_key.up: 63 | d = -ssc_arrowscroll; 64 | break; 65 | case ssc_key.down: 66 | d = ssc_arrowscroll; 67 | break; 68 | case ssc_key.spacebar: 69 | d = a.shiftKey ? 1 : -1; 70 | d = -d * e * .9; 71 | break; 72 | case ssc_key.pageup: 73 | d = .9 * -e; 74 | break; 75 | case ssc_key.pagedown: 76 | d = .9 * e; 77 | break; 78 | case ssc_key.home: 79 | d = -c.scrollTop; 80 | break; 81 | case ssc_key.end: 82 | e = c.scrollHeight - c.scrollTop - e; 83 | d = 0 < e ? e + 10 : 0; 84 | break; 85 | case ssc_key.left: 86 | b = -ssc_arrowscroll; 87 | break; 88 | case ssc_key.right: 89 | b = ssc_arrowscroll; 90 | break; 91 | default: 92 | return !0 93 | } 94 | ssc_scrollArray(c, b, d); 95 | a.preventDefault() 96 | } 97 | function ssc_mousedown(a) { 98 | ssc_activeElement = a.target 99 | } 100 | function ssc_setCache(a, b) { 101 | for (var c = a.length; c--;)ssc_cache[ssc_uniqueID(a[c])] = b; 102 | return b 103 | } 104 | function ssc_overflowingAncestor(a) { 105 | var b = [], c = ssc_root.scrollHeight; 106 | do { 107 | var d = ssc_cache[ssc_uniqueID(a)]; 108 | if (d)return ssc_setCache(b, d); 109 | if (b.push(a), c === a.scrollHeight) { 110 | if (!ssc_frame || ssc_root.clientHeight + 10 < c)return ssc_setCache(b, document.body) 111 | } else if (a.clientHeight + 10 < a.scrollHeight && (overflow = getComputedStyle(a, "").getPropertyValue("overflow"), "scroll" === overflow || "auto" === overflow))return ssc_setCache(b, a) 112 | } while (a = a.parentNode) 113 | } 114 | function ssc_addEvent(a, b, c) { 115 | window.addEventListener(a, b, c || !1) 116 | } 117 | function ssc_removeEvent(a, b, c) { 118 | window.removeEventListener(a, b, c || !1) 119 | } 120 | function ssc_isNodeName(a, b) { 121 | return a.nodeName.toLowerCase() === b.toLowerCase() 122 | } 123 | function ssc_directionCheck(a, b) { 124 | a = 0 < a ? 1 : -1; 125 | b = 0 < b ? 1 : -1; 126 | (ssc_direction.x !== a || ssc_direction.y !== b) && (ssc_direction.x = a, ssc_direction.y = b, ssc_que = []) 127 | } 128 | function ssc_pulse_(a) { 129 | var b, c, d; 130 | return a *= ssc_pulseScale, 1 > a ? b = a - (1 - Math.exp(-a)) : (c = Math.exp(-1), --a, d = 1 - Math.exp(-a), b = c + d * (1 - c)), b * ssc_pulseNormalize 131 | } 132 | function ssc_pulse(a) { 133 | return 1 <= a ? 1 : 0 >= a ? 0 : (1 == ssc_pulseNormalize && (ssc_pulseNormalize /= ssc_pulse_(1)), ssc_pulse_(a)) 134 | } 135 | if (-1 === navigator.platform.toUpperCase().indexOf("MAC") && !navigator.userAgent.match(/(Android|iPod|iPhone|iPad|IEMobile|Opera Mini|BlackBerry)/)) { 136 | var ssc_framerate = 150, ssc_animtime = 700, ssc_stepsize = 100, ssc_pulseAlgorithm = !0, ssc_pulseScale = 8, ssc_pulseNormalize = 1, ssc_keyboardsupport = !0, ssc_arrowscroll = 50, ssc_frame = !1, ssc_direction = { 137 | x: 0, 138 | y: 0 139 | }, ssc_initdone = !1, ssc_fixedback = !0, ssc_root = document.documentElement, ssc_activeElement, ssc_key = { 140 | left: 37, up: 38, right: 39, down: 40, spacebar: 32, pageup: 33, pagedown: 34, end: 35, 141 | home: 36 142 | }, ssc_que = [], ssc_pending = !1, ssc_cache = {}; 143 | setInterval(function () { 144 | ssc_cache = {} 145 | }, 1E4); 146 | var ssc_uniqueID = function () { 147 | var a = 0; 148 | return function (b) { 149 | return b.ssc_uniqueID || (b.ssc_uniqueID = a++) 150 | } 151 | }(), ischrome = /chrome/.test(navigator.userAgent.toLowerCase()); 152 | ischrome && (ssc_addEvent("mousedown", ssc_mousedown), ssc_addEvent("mousewheel", ssc_wheel), ssc_addEvent("load", ssc_init)) 153 | } 154 | ; 155 | -------------------------------------------------------------------------------- /demo/js/wow.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @module WOW 3 | * @author Matthieu Aussaguel 4 | * @version v1.1.2 5 | * @license MIT License 6 | */ 7 | (function(){var t,e,n,i,o,r=function(t,e){return function(){return t.apply(e,arguments)}},s=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};e=function(){function t(){}return t.prototype.extend=function(t,e){var n,i;for(n in e)i=e[n],null==t[n]&&(t[n]=i);return t},t.prototype.isMobile=function(t){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(t)},t.prototype.createEvent=function(t,e,n,i){var o;return null==e&&(e=!1),null==n&&(n=!1),null==i&&(i=null),null!=document.createEvent?(o=document.createEvent("CustomEvent"),o.initCustomEvent(t,e,n,i)):null!=document.createEventObject?(o=document.createEventObject(),o.eventType=t):o.eventName=t,o},t.prototype.emitEvent=function(t,e){return null!=t.dispatchEvent?t.dispatchEvent(e):e in(null!=t)?t[e]():"on"+e in(null!=t)?t["on"+e]():void 0},t.prototype.addEvent=function(t,e,n){return null!=t.addEventListener?t.addEventListener(e,n,!1):null!=t.attachEvent?t.attachEvent("on"+e,n):t[e]=n},t.prototype.removeEvent=function(t,e,n){return null!=t.removeEventListener?t.removeEventListener(e,n,!1):null!=t.detachEvent?t.detachEvent("on"+e,n):delete t[e]},t.prototype.innerHeight=function(){return"innerHeight"in window?window.innerHeight:document.documentElement.clientHeight},t}(),n=this.WeakMap||this.MozWeakMap||(n=function(){function t(){this.keys=[],this.values=[]}return t.prototype.get=function(t){var e,n,i,o,r;for(r=this.keys,e=i=0,o=r.length;o>i;e=++i)if(n=r[e],n===t)return this.values[e]},t.prototype.set=function(t,e){var n,i,o,r,s;for(s=this.keys,n=o=0,r=s.length;r>o;n=++o)if(i=s[n],i===t)return void(this.values[n]=e);return this.keys.push(t),this.values.push(e)},t}()),t=this.MutationObserver||this.WebkitMutationObserver||this.MozMutationObserver||(t=function(){function t(){"undefined"!=typeof console&&null!==console&&console.warn("MutationObserver is not supported by your browser."),"undefined"!=typeof console&&null!==console&&console.warn("WOW.js cannot detect dom mutations, please call .sync() after loading new content.")}return t.notSupported=!0,t.prototype.observe=function(){},t}()),i=this.getComputedStyle||function(t){return this.getPropertyValue=function(e){var n;return"float"===e&&(e="styleFloat"),o.test(e)&&e.replace(o,function(t,e){return e.toUpperCase()}),(null!=(n=t.currentStyle)?n[e]:void 0)||null},this},o=/(\-([a-z]){1})/g,this.WOW=function(){function o(t){null==t&&(t={}),this.scrollCallback=r(this.scrollCallback,this),this.scrollHandler=r(this.scrollHandler,this),this.resetAnimation=r(this.resetAnimation,this),this.start=r(this.start,this),this.scrolled=!0,this.config=this.util().extend(t,this.defaults),null!=t.scrollContainer&&(this.config.scrollContainer=document.querySelector(t.scrollContainer)),this.animationNameCache=new n,this.wowEvent=this.util().createEvent(this.config.boxClass)}return o.prototype.defaults={boxClass:"wow",animateClass:"animated",offset:0,mobile:!0,live:!0,callback:null,scrollContainer:null},o.prototype.init=function(){var t;return this.element=window.document.documentElement,"interactive"===(t=document.readyState)||"complete"===t?this.start():this.util().addEvent(document,"DOMContentLoaded",this.start),this.finished=[]},o.prototype.start=function(){var e,n,i,o;if(this.stopped=!1,this.boxes=function(){var t,n,i,o;for(i=this.element.querySelectorAll("."+this.config.boxClass),o=[],t=0,n=i.length; n>t; t++)e=i[t],o.push(e);return o}.call(this),this.all=function(){var t,n,i,o;for(i=this.boxes,o=[],t=0,n=i.length;n>t;t++)e=i[t],o.push(e);return o}.call(this),this.boxes.length)if(this.disabled())this.resetStyle();else for(o=this.boxes,n=0,i=o.length;i>n;n++)e=o[n],this.applyStyle(e,!0);return this.disabled()||(this.util().addEvent(this.config.scrollContainer||window,"scroll",this.scrollHandler),this.util().addEvent(window,"resize",this.scrollHandler),this.interval=setInterval(this.scrollCallback,50)),this.config.live?new t(function(t){return function(e){var n,i,o,r,s;for(s=[],n=0,i=e.length;i>n;n++)r=e[n],s.push(function(){var t,e,n,i;for(n=r.addedNodes||[],i=[],t=0,e=n.length;e>t;t++)o=n[t],i.push(this.doSync(o));return i}.call(t));return s}}(this)).observe(document.body,{childList:!0,subtree:!0}):void 0},o.prototype.stop=function(){return this.stopped=!0,this.util().removeEvent(this.config.scrollContainer||window,"scroll",this.scrollHandler),this.util().removeEvent(window,"resize",this.scrollHandler),null!=this.interval?clearInterval(this.interval):void 0},o.prototype.sync=function(){return t.notSupported?this.doSync(this.element):void 0},o.prototype.doSync=function(t){var e,n,i,o,r;if(null==t&&(t=this.element),1===t.nodeType){for(t=t.parentNode||t,o=t.querySelectorAll("."+this.config.boxClass),r=[],n=0,i=o.length;i>n;n++)e=o[n],s.call(this.all,e)<0?(this.boxes.push(e),this.all.push(e),this.stopped||this.disabled()?this.resetStyle():this.applyStyle(e,!0),r.push(this.scrolled=!0)):r.push(void 0);return r}},o.prototype.show=function(t){return this.applyStyle(t),t.className=t.className+" "+this.config.animateClass,null!=this.config.callback&&this.config.callback(t),this.util().emitEvent(t,this.wowEvent),this.util().addEvent(t,"animationend",this.resetAnimation),this.util().addEvent(t,"oanimationend",this.resetAnimation),this.util().addEvent(t,"webkitAnimationEnd",this.resetAnimation),this.util().addEvent(t,"MSAnimationEnd",this.resetAnimation),t},o.prototype.applyStyle=function(t,e){var n,i,o;return i=t.getAttribute("data-wow-duration"),n=t.getAttribute("data-wow-delay"),o=t.getAttribute("data-wow-iteration"),this.animate(function(r){return function(){return r.customStyle(t,e,i,n,o)}}(this))},o.prototype.animate=function(){return"requestAnimationFrame"in window?function(t){return window.requestAnimationFrame(t)}:function(t){return t()}}(),o.prototype.resetStyle=function(){var t,e,n,i,o;for(i=this.boxes,o=[],e=0,n=i.length;n>e;e++)t=i[e],o.push(t.style.visibility="visible");return o},o.prototype.resetAnimation=function(t){var e;return t.type.toLowerCase().indexOf("animationend")>=0?(e=t.target||t.srcElement,e.className=e.className.replace(this.config.animateClass,"").trim()):void 0},o.prototype.customStyle=function(t,e,n,i,o){return e&&this.cacheAnimationName(t),t.style.visibility=e?"hidden":"visible",n&&this.vendorSet(t.style,{animationDuration:n}),i&&this.vendorSet(t.style,{animationDelay:i}),o&&this.vendorSet(t.style,{animationIterationCount:o}),this.vendorSet(t.style,{animationName:e?"none":this.cachedAnimationName(t)}),t},o.prototype.vendors=["moz","webkit"],o.prototype.vendorSet=function(t,e){var n,i,o,r;i=[];for(n in e)o=e[n],t[""+n]=o,i.push(function(){var e,i,s,l;for(s=this.vendors,l=[],e=0,i=s.length;i>e;e++)r=s[e],l.push(t[""+r+n.charAt(0).toUpperCase()+n.substr(1)]=o);return l}.call(this));return i},o.prototype.vendorCSS=function(t,e){var n,o,r,s,l,a;for(l=i(t),s=l.getPropertyCSSValue(e),r=this.vendors,n=0,o=r.length;o>n;n++)a=r[n],s=s||l.getPropertyCSSValue("-"+a+"-"+e);return s},o.prototype.animationName=function(t){var e;try{e=this.vendorCSS(t,"animation-name").cssText}catch(n){e=i(t).getPropertyValue("animation-name")}return"none"===e?"":e},o.prototype.cacheAnimationName=function(t){return this.animationNameCache.set(t,this.animationName(t))},o.prototype.cachedAnimationName=function(t){return this.animationNameCache.get(t)},o.prototype.scrollHandler=function(){return this.scrolled=!0},o.prototype.scrollCallback=function(){var t;return!this.scrolled||(this.scrolled=!1,this.boxes=function(){var e,n,i,o;for(i=this.boxes,o=[],e=0,n=i.length; n>e; e++)t=i[e],t&&(this.isVisible(t)?this.show(t):o.push(t));return o}.call(this),this.boxes.length||this.config.live)?void 0:this.stop()},o.prototype.offsetTop=function(t){for(var e; void 0===t.offsetTop;)t=t.parentNode;for(e=t.offsetTop; t=t.offsetParent;)e+=t.offsetTop;return e},o.prototype.isVisible=function(t){var e,n,i,o,r;return n=t.getAttribute("data-wow-offset")||this.config.offset,r=this.config.scrollContainer&&this.config.scrollContainer.scrollTop||window.pageYOffset,o=r+Math.min(this.element.clientHeight,this.util().innerHeight())-n,i=this.offsetTop(t),e=i+t.clientHeight,o>=i&&e>=r},o.prototype.util=function(){return null!=this._util?this._util:this._util=new e},o.prototype.disabled=function(){return!this.config.mobile&&this.util().isMobile(navigator.userAgent)},o}()}).call(this); -------------------------------------------------------------------------------- /demo/sass/_variables.scss: -------------------------------------------------------------------------------- 1 | //======================================================== 2 | // Variables 3 | //========================================================= 4 | 5 | // Use relative measurements. Change to 0 on "Post Production" 6 | $debug: 1; 7 | 8 | // Layouts 9 | $layout-boxed-width: 1920px; 10 | $layout-boxed-bg: #444; 11 | 12 | 13 | // Resolutions 14 | $screen-xs-min: 480px; 15 | $screen-sm-min: 768px; 16 | $screen-md-min: 992px; 17 | $screen-lg-min: 1200px; 18 | 19 | 20 | // Fonts 21 | $default-font-family: 'Roboto', sans-serif; 22 | $default-font-weight: 400; 23 | $default-font-size: 16px; 24 | $default-line-height: 26px; 25 | 26 | 27 | // Colors 28 | $default: #000; 29 | $contrast: #fff; 30 | $white: #fff; 31 | $primary: #2196f3; 32 | $secondary-1: #33d7b4; 33 | $secondary-2: #ff4c2e; 34 | $secondary-3: #feea3a; 35 | 36 | $header-color: $contrast; 37 | $header-bg: darken($primary, 10%); 38 | 39 | $content-color: lighten(saturate(adjust_hue($default, 0), 0%), 46.666666666666664%);; 40 | $content-bg: $contrast; 41 | 42 | $footer-color: $contrast; 43 | $footer-bg: $default; 44 | 45 | 46 | // Round Corvers 47 | $border-radius-small: 0; 48 | $border-radius-base: $border-radius-small * 2; 49 | $border-radius-large: $border-radius-base * 2; 50 | 51 | 52 | // Shadows 53 | $box-shadow-ambient: 0 0 2px rgba(0, 0, 0, .12); 54 | $box-shadow-key-light: 2px 3px 8px 0px rgba(0, 0, 0, 0.3); 55 | 56 | -------------------------------------------------------------------------------- /demo/sass/components/_buttons.scss: -------------------------------------------------------------------------------- 1 | /* 2 | * @subsection Buttons 3 | */ 4 | 5 | $btn-xs-height: 30px; // < 40px 6 | $btn-xs-size: 14px; 7 | 8 | $btn-sm-height: $btn-xs-height * 1.33; // >= 40px 9 | $btn-sm-size: $btn-xs-size * 1.33; 10 | 11 | $btn-md-height: $btn-sm-height * 1.25; // >= 50px 12 | $btn-md-size: $btn-sm-size * 1.25; 13 | 14 | $btn-lg-height: $btn-md-height * 1.2; // >= 60px 15 | $btn-lg-size: $btn-md-size * 1.2; 16 | 17 | $btn-xl-height: $btn-lg-height * 1.16; // >= 70px 18 | $btn-xl-size: $btn-lg-size * 1.16; 19 | 20 | $btn-group-offset: 10px; 21 | 22 | // Button General Styles 23 | .btn { 24 | display: inline-block; 25 | text-align: center; 26 | line-height: 1.2; 27 | white-space: nowrap; 28 | max-width: 100%; 29 | overflow: hidden; 30 | text-overflow: ellipsis; 31 | } 32 | 33 | // Button Layout Styles 34 | .btn-xs { 35 | padding: ceil(($btn-xs-height - ($btn-xs-size * 1.2)) / 2); 36 | font-size: ceil($btn-xs-size); 37 | } 38 | 39 | .btn-sm { 40 | padding: ceil(($btn-sm-height - ($btn-sm-size * 1.2)) / 2); 41 | font-size: ceil($btn-sm-size); 42 | } 43 | 44 | .btn-md { 45 | padding: ceil(($btn-md-height - ($btn-md-size * 1.2)) / 2); 46 | font-size: ceil($btn-md-size); 47 | } 48 | 49 | .btn-lg { 50 | padding: ceil(($btn-lg-height - ($btn-lg-size * 1.2)) / 2); 51 | font-size: ceil($btn-lg-size); 52 | } 53 | 54 | .btn-xl { 55 | padding: ceil(($btn-xl-height - ($btn-xl-size * 1.2)) / 2); 56 | font-size: ceil($btn-xl-size); 57 | } 58 | 59 | // Button Appearance Styles 60 | .btn-default { 61 | color: $contrast; 62 | background: $default; 63 | 64 | &:hover { 65 | color: $contrast; 66 | background: lighten($default, 5%); 67 | } 68 | 69 | &:active { 70 | color: $contrast; 71 | background: darken($default, 5%); 72 | } 73 | } 74 | 75 | .btn-primary { 76 | color: #fff; 77 | background: $primary; 78 | 79 | &:hover { 80 | color: #fff; 81 | background: lighten($primary, 5%); 82 | } 83 | 84 | &:active { 85 | color: #fff; 86 | background: darken($primary, 5%); 87 | } 88 | } 89 | 90 | 91 | // Button Group Styles 92 | .btn-group { 93 | @include transform(translateY(-$btn-group-offset)); 94 | margin-bottom: -$btn-group-offset; 95 | margin-left: -$btn-group-offset; 96 | 97 | .btn { 98 | margin-top: $btn-group-offset; 99 | margin-left: $btn-group-offset; 100 | } 101 | } -------------------------------------------------------------------------------- /demo/sass/components/_icons.scss: -------------------------------------------------------------------------------- 1 | /* 2 | * @subsection Icons 3 | */ 4 | 5 | $icon-xs-size: 40px; 6 | $icon-xs-fz: 28px; 7 | 8 | $icon-sm-size: 45px; 9 | $icon-sm-fz: 43px; 10 | 11 | $icon-md-size: 60px; 12 | $icon-md-fz: 48px; 13 | 14 | $icon-lg-size: 108px; 15 | $icon-lg-fz: 40px; 16 | 17 | $icon-xl-size: $icon-lg-size * 1.15; 18 | $icon-xl-fz: $icon-lg-fz * 1.15; 19 | 20 | // Icon General Styles 21 | .icon { 22 | display: inline-block; 23 | text-align: center; 24 | border-radius: 50%; 25 | } 26 | 27 | 28 | // Icon Sizing Styles 29 | .icon-xs{ 30 | width: $icon-xs-size; 31 | height: $icon-xs-size; 32 | line-height: $icon-xs-size; 33 | font-size: $icon-xs-fz; 34 | } 35 | 36 | .icon-sm { 37 | width: $icon-sm-size; 38 | height: $icon-sm-size; 39 | line-height: $icon-sm-size; 40 | font-size: $icon-sm-fz; 41 | } 42 | 43 | .icon-md { 44 | width: $icon-md-size; 45 | height: $icon-md-size; 46 | line-height: $icon-md-size; 47 | font-size: $icon-md-fz; 48 | } 49 | 50 | .icon-lg { 51 | width: $icon-lg-size; 52 | height: $icon-lg-size; 53 | line-height: $icon-lg-size; 54 | font-size: $icon-lg-fz; 55 | } 56 | 57 | .icon-xl{ 58 | width: $icon-xl-size; 59 | height: $icon-xl-size; 60 | line-height: $icon-xl-size; 61 | font-size: $icon-xl-fz; 62 | } 63 | 64 | 65 | // Icon Appearance Styles 66 | .icon-default { 67 | color: darken(saturate(adjust_hue($contrast, 0), 0.5076142131979677%), 8.039215686274503%); 68 | } 69 | 70 | .icon-primary { 71 | color: #FFF; 72 | background: $primary; 73 | } 74 | 75 | .icon-secondary-1 { 76 | color: #FFF; 77 | background: $secondary-1; 78 | } 79 | 80 | .icon-secondary-2 { 81 | color: #FFF; 82 | background: $secondary-2; 83 | } 84 | 85 | .icon-secondary-3 { 86 | color: #FFF; 87 | background: $secondary-3; 88 | } 89 | 90 | // Social Icons Styles 91 | .icon.fa-facebook { 92 | color: #FFF; 93 | background: #3B579D; 94 | 95 | &:hover { 96 | background: darken(#3B579D, 5%); 97 | } 98 | } 99 | 100 | .icon.fa-twitter { 101 | color: #FFF; 102 | background: #5EA9DD; 103 | 104 | &:hover { 105 | background: darken(#5EA9DD, 5%); 106 | } 107 | } 108 | 109 | .icon.fa-google-plus { 110 | color: #FFF; 111 | background: #DF4A32; 112 | 113 | &:hover { 114 | background: darken(#DF4A32, 5%); 115 | } 116 | } 117 | 118 | 119 | 120 | -------------------------------------------------------------------------------- /demo/sass/extensions/_rd-parallax.scss: -------------------------------------------------------------------------------- 1 | /* 2 | * @subsection RD Parallax 3 | * 4 | * @description Describes style declarations for RD Parallax extension 5 | * 6 | * @author Evgeniy Gusarov 7 | * @link https://ua.linkedin.com/pub/evgeniy-gusarov/8a/a40/54a 8 | * @version 3.0.0 9 | */ 10 | .rd-parallax{ 11 | 12 | &-layer-wrap{ 13 | position: relative; 14 | } 15 | 16 | &-inner{ 17 | overflow: hidden; 18 | position: relative; 19 | min-height: 100%; 20 | } 21 | 22 | &-layer[data-type="media"]{ 23 | position: absolute; 24 | top: 0; 25 | left: 0; 26 | right: 0; 27 | bottom: 0; 28 | height: 100%; 29 | -webkit-backface-visibility: hidden; 30 | 31 | iframe{ 32 | width: 100%; 33 | height: 100%; 34 | } 35 | } 36 | 37 | &-layer[data-url]{ 38 | -webkit-background-size: cover; 39 | background-size: cover; 40 | background-position: center center; 41 | } 42 | 43 | &-layer[data-type="html"]{ 44 | position: relative; 45 | } 46 | 47 | &, #{headings()}{ 48 | color: $white; 49 | } 50 | 51 | .image-wrap-1{ 52 | visibility: hidden; 53 | position: absolute; 54 | top: -30px; 55 | width: 710px; 56 | right: 100%; 57 | margin-right: 38px; 58 | z-index: 1; 59 | 60 | img{ 61 | @include transform(rotate(10deg)); 62 | } 63 | } 64 | 65 | .image-wrap-2{ 66 | visibility: hidden; 67 | position: absolute; 68 | top: 100px; 69 | width: 910px; 70 | right: 100%; 71 | margin-right: 58px;; 72 | z-index: 0; 73 | 74 | img{ 75 | @include transform(rotate(-13deg)); 76 | } 77 | } 78 | 79 | @media (min-width: $screen-md-min) { 80 | .image-wrap-1, .image-wrap-2{ 81 | visibility: visible; 82 | } 83 | } 84 | } -------------------------------------------------------------------------------- /demo/sass/extensions/_ui-to-top.scss: -------------------------------------------------------------------------------- 1 | /* 2 | * @subsection ToTop 3 | * @license MIT license - http://opensource.org/licenses/MIT 4 | * @version 1.0.0 5 | */ 6 | .ui-to-top{ 7 | display: none; 8 | width: 50px; 9 | height: 50px; 10 | font-size: 24px; 11 | line-height: 46px; 12 | color: #FFF; 13 | background: $primary; 14 | border-radius: 50%; 15 | box-shadow: $box-shadow-ambient, $box-shadow-key-light; 16 | position: fixed; 17 | right: 15px; 18 | bottom: 15px; 19 | overflow: hidden; 20 | text-align: center; 21 | text-decoration: none; 22 | z-index: 20; 23 | 24 | @include transform(translateY(100px)); 25 | 26 | &:hover { 27 | color: #FFF; 28 | background: lighten($primary, 5%); 29 | text-decoration: none; 30 | } 31 | 32 | &.active{ 33 | @include transform(translateY(0)); 34 | } 35 | } 36 | 37 | .mobile .ui-to-top, 38 | .tablet .ui-to-top { 39 | display: none !important; 40 | } 41 | 42 | @media (min-width: $screen-md-min){ 43 | .ui-to-top { 44 | display: block; 45 | right: 40px; 46 | bottom: 40px; 47 | } 48 | } 49 | 50 | 51 | -------------------------------------------------------------------------------- /demo/sass/extensions/_vide.scss: -------------------------------------------------------------------------------- 1 | /* 2 | * @subsection Vide 3 | * @description Describes style declarations for Vide extension 4 | */ 5 | 6 | .vide { 7 | &__body { 8 | position: relative; 9 | } 10 | } -------------------------------------------------------------------------------- /demo/sass/helpers/_floating.scss: -------------------------------------------------------------------------------- 1 | /* 2 | * @subsection Floating System 3 | */ 4 | 5 | .pull-left { 6 | float: left; 7 | } 8 | 9 | .pull-none { 10 | float: none; 11 | } 12 | 13 | .pull-right { 14 | float: right; 15 | } 16 | 17 | @mixin make-floating($resolution){ 18 | .pull-#{$resolution}-left { 19 | float: left; 20 | } 21 | 22 | .pull-#{$resolution}-none { 23 | float: none; 24 | } 25 | 26 | .pull-#{$resolution}-right { 27 | float: right; 28 | } 29 | } 30 | 31 | @media (min-width: $screen-xs-min) { 32 | @include make-floating("xs"); 33 | } 34 | 35 | @media (min-width: $screen-sm-min) { 36 | @include make-floating("sm"); 37 | } 38 | 39 | @media (min-width: $screen-md-min) { 40 | @include make-floating("md"); 41 | } 42 | 43 | @media (min-width: $screen-lg-min) { 44 | @include make-floating("lg"); 45 | } 46 | -------------------------------------------------------------------------------- /demo/sass/helpers/_text-alignment.scss: -------------------------------------------------------------------------------- 1 | /* 2 | * @subsection Text Alignment 3 | */ 4 | 5 | .text-left { 6 | text-align: left; 7 | } 8 | 9 | .text-center { 10 | text-align: center; 11 | } 12 | 13 | .text-right { 14 | text-align: right; 15 | } 16 | 17 | @mixin make-text-alignment($resolution){ 18 | .text-#{$resolution}-left { 19 | text-align: left; 20 | } 21 | 22 | .text-#{$resolution}-center { 23 | text-align: center; 24 | } 25 | 26 | .text-#{$resolution}-right { 27 | text-align: right; 28 | } 29 | } 30 | 31 | @media (min-width: $screen-xs-min) { 32 | @include make-text-alignment("xs"); 33 | } 34 | 35 | @media (min-width: $screen-sm-min) { 36 | @include make-text-alignment("sm"); 37 | } 38 | 39 | @media (min-width: $screen-md-min) { 40 | @include make-text-alignment("md"); 41 | } 42 | 43 | @media (min-width: $screen-lg-min) { 44 | @include make-text-alignment("lg"); 45 | } 46 | 47 | -------------------------------------------------------------------------------- /demo/sass/helpers/_text-styling.scss: -------------------------------------------------------------------------------- 1 | /* 2 | * @subsection Text Styling 3 | */ 4 | 5 | .italic { 6 | font-style: italic; 7 | } 8 | 9 | .underline { 10 | text-decoration: underline; 11 | } 12 | 13 | .strike { 14 | text-decoration: line-through; 15 | } 16 | 17 | .thin { 18 | font-weight: 100; 19 | } 20 | 21 | .light { 22 | font-weight: 300; 23 | } 24 | 25 | .regular{ 26 | font-weight: 400; 27 | } 28 | 29 | .medium{ 30 | font-weight: 500; 31 | } 32 | 33 | .sbold{ 34 | font-weight: 600; 35 | } 36 | 37 | .bold, strong { 38 | font-weight: 700; 39 | } 40 | 41 | .ubold { 42 | font-weight: 900; 43 | } 44 | 45 | .uppercase{ 46 | text-transform: uppercase; 47 | } -------------------------------------------------------------------------------- /demo/sass/includes/_mixins.scss: -------------------------------------------------------------------------------- 1 | //========================================================== 2 | // MIXINS 3 | //========================================================== 4 | 5 | // Note: Some of described mixins in this file requires the ie conditional comments 6 | // 7 | // For IE < 9 8 | // 11 | // 12 | 13 | @mixin keyframes($name) { 14 | @-webkit-keyframes #{$name} { 15 | @content; 16 | } 17 | @keyframes #{$name} { 18 | @content; 19 | } 20 | } 21 | 22 | @mixin clip($x1, $x2, $y1, $y2) { 23 | clip: rect($y1, $x2, $y2, $x1); 24 | } 25 | 26 | // Opacity 27 | @mixin opacity($opacity) { 28 | opacity: $opacity; 29 | 30 | .lt-ie9 & { 31 | -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=#{$opacity})"; 32 | filter: alpha(opacity=$opacity*100); 33 | } 34 | } 35 | 36 | // Background-rgba 37 | @mixin background($rgb, $opacity) { 38 | background: rgba($rgb, $opacity); 39 | 40 | .lt-ie9 & { 41 | background: none; 42 | -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str(rgba($rgb, $opacity))}', endColorstr='#{ie-hex-str(rgba($rgb, $opacity))}')"; 43 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str(rgba($rgb, $opacity))}', endColorstr='#{ie-hex-str(rgba($rgb, $opacity))}'); 44 | zoom: 1; 45 | } 46 | } 47 | 48 | // Animation 49 | @mixin animation($anim) { 50 | -webkit-animation: $anim; 51 | animation: $anim; 52 | } 53 | 54 | // Transform Origin 55 | @mixin transform-origin($trfm-o) { 56 | -webkit-transform-origin: $trfm-o; 57 | transform-origin: $trfm-o; 58 | } 59 | 60 | // Transform 61 | @mixin transform($trfm) { 62 | -webkit-transform: $trfm; 63 | transform: $trfm; 64 | } 65 | 66 | // Triangle 67 | @mixin triangle($dir, $w, $h, $clr) { 68 | width: 0; 69 | height: 0; 70 | border-style: solid; 71 | 72 | @if $dir == top { 73 | border-width: 0 ceil($w/2) $h ceil($w/2); 74 | border-color: transparent transparent $clr transparent; 75 | } @else if $dir == bottom { 76 | border-width: $h ceil($w/2) 0 ceil($w/2); 77 | border-color: $clr transparent transparent transparent; 78 | } @else if $dir == left { 79 | border-width: ceil($h/2) $w ceil($h/2) 0; 80 | border-color: transparent $clr transparent transparent; 81 | } @else if $dir == right { 82 | border-width: ceil($h/2) 0 ceil($h/2) $w; 83 | border-color: transparent transparent transparent $clr; 84 | } @else if $dir == top_left { 85 | border-width: $w $w 0 0; 86 | border-color: $clr transparent transparent transparent; 87 | } @else if $dir == top_right { 88 | border-width: 0 $w $w 0; 89 | border-color: transparent $clr transparent transparent; 90 | } @else if $dir == bottom_right { 91 | border-width: 0 0 $w $w; 92 | border-color: transparent transparent $clr transparent; 93 | } @else if $dir == bottom_left { 94 | border-width: $w 0 0 $w; 95 | border-color: transparent transparent transparent $clr; 96 | } 97 | } 98 | 99 | // Clearfix 100 | @mixin clearfix { 101 | &:before, 102 | &:after { 103 | display: table; 104 | content: ""; 105 | line-height: 0; 106 | } 107 | 108 | &:after { 109 | clear: both; 110 | } 111 | } 112 | 113 | @include keyframes(sprite-animation){ 114 | from{ 115 | background-position: 0 0; 116 | } 117 | } 118 | 119 | // Variables 120 | $fa: 'FontAwesome'; 121 | 122 | // Usefull Functions 123 | 124 | @function str-replace($string, $search, $replace: '') { 125 | $index: str-index($string, $search); 126 | 127 | @if $index { 128 | @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace); 129 | } 130 | 131 | @return $string; 132 | } 133 | 134 | @function rem($px-size) { 135 | @if ($debug) { 136 | @return $px-size; 137 | } @else { 138 | @return str-replace(#{($px-size/100)}, px, rem); 139 | } 140 | } 141 | 142 | @function remove($list, $value, $recursive: false) { 143 | $result: (); 144 | 145 | @for $i from 1 through length($list) { 146 | @if type-of(nth($list, $i)) == list and $recursive { 147 | $result: append($result, remove(nth($list, $i), $value, $recursive)); 148 | } @else if nth($list, $i) != $value { 149 | $result: append($result, nth($list, $i)); 150 | } 151 | } 152 | 153 | @return $result; 154 | } 155 | 156 | @function sort($list) { 157 | $sortedlist: (); 158 | @while length($list) > 0 { 159 | $value: nth($list, 1); 160 | @each $item in $list { 161 | @if $item < $value { 162 | $value: $item; 163 | } 164 | } 165 | $sortedlist: append($sortedlist, $value, 'space'); 166 | $list: remove($list, $value); 167 | } 168 | @return $sortedlist; 169 | } 170 | 171 | @function average($list) { 172 | $sum: 0; 173 | 174 | @each $i in $list { 175 | $sum: $sum + $i; 176 | } 177 | 178 | @return $sum / length($list); 179 | } 180 | 181 | @function headings() { 182 | @return "h1, h2, h3, h4, h5, h6, .heading-1, .heading-2, .heading-3, .heading-4,.heading-5, .heading-6"; 183 | } 184 | 185 | @function cols($resolution) { 186 | $selector: (); 187 | @each $j in 1, 2, 3, 4, 6, 12 { 188 | $selector: append($selector, "> .col-#{$resolution}-#{$j}:nth-child(n + #{(12/$j)+1})", comma); 189 | } 190 | 191 | $selector: append($selector, "> .col-#{$resolution}-8.col-#{$resolution}-preffix-2"); 192 | 193 | @return $selector; 194 | } 195 | 196 | @function cols-full($resolution) { 197 | $selector: (); 198 | @for $j from 1 through 12 { 199 | $selector: append($selector, "> .col-#{$resolution}-#{$j}:nth-child(n)", comma); 200 | } 201 | 202 | @return $selector; 203 | } 204 | 205 | @mixin make-flow-offset($lg-offset, $md-offset: $lg-offset, $sm-offset: $md-offset, $xs-offset: $sm-offset) { 206 | & > * + * { 207 | margin-top: $xs-offset; 208 | } 209 | 210 | html:not(.lt-ie10) & { 211 | @media (min-width: $screen-xs-min) { 212 | #{cols-full("xs")} { 213 | margin-top: 0; 214 | } 215 | } 216 | 217 | @media (min-width: $screen-xs-min) { 218 | #{cols("xs")} { 219 | margin-top: $xs-offset; 220 | } 221 | } 222 | 223 | @media (min-width: $screen-sm-min) { 224 | #{cols-full("sm")} { 225 | margin-top: 0; 226 | } 227 | } 228 | 229 | @media (min-width: $screen-sm-min) { 230 | #{cols("sm")} { 231 | margin-top: $sm-offset; 232 | } 233 | } 234 | 235 | @media (min-width: $screen-md-min) { 236 | #{cols-full("md")} { 237 | margin-top: 0; 238 | } 239 | } 240 | 241 | @media (min-width: $screen-md-min) { 242 | #{cols("md")} { 243 | margin-top: $md-offset; 244 | } 245 | } 246 | 247 | @media (min-width: $screen-lg-min) { 248 | #{cols-full("lg")} { 249 | margin-top: 0; 250 | } 251 | } 252 | 253 | @media (min-width: $screen-lg-min) { 254 | #{cols("lg")} { 255 | margin-top: $lg-offset; 256 | } 257 | } 258 | } 259 | } 260 | -------------------------------------------------------------------------------- /demo/sass/includes/_normalize.scss: -------------------------------------------------------------------------------- 1 | /* 2 | * @section Normalize 3 | * 4 | * @description Resets default browser styling 5 | * 6 | * @link http://github.com/necolas/normalize.css 7 | * @license MIT license - http://opensource.org/licenses/MIT 8 | * @version 3.0.3 9 | * @revision 1.0 10 | */ 11 | 12 | html, body, div, span, applet, object, iframe, 13 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, 14 | a, abbr, acronym, address, big, cite, code, 15 | del, dfn, em, img, ins, kbd, q, s, samp, 16 | small, strike, strong, sub, sup, tt, var, 17 | b, u, i, center, 18 | dl, dt, dd, ol, ul, li, 19 | fieldset, form, label, legend, 20 | table, caption, tbody, tfoot, thead, tr, th, td, 21 | article, aside, canvas, details, embed, 22 | figure, figcaption, footer, header, hgroup, 23 | menu, nav, output, ruby, section, summary, 24 | time, mark, audio, video, button, input, textarea { 25 | margin: 0; 26 | padding: 0; 27 | border: 0; 28 | font: inherit; 29 | vertical-align: top; 30 | } 31 | 32 | article, aside, details, figcaption, figure, 33 | footer, header, hgroup, menu, nav, main, time, section { 34 | display: block; 35 | } 36 | 37 | ol, ul { 38 | list-style: none; 39 | } 40 | 41 | blockquote, q { 42 | quotes: none; 43 | } 44 | 45 | blockquote:before, blockquote:after, 46 | q:before, q:after { 47 | content: ''; 48 | } 49 | 50 | table { 51 | border-collapse: collapse; 52 | border-spacing: 0; 53 | } 54 | 55 | button, input, textarea, select { 56 | display: inline-block; 57 | -webkit-appearance: none; 58 | outline: none; 59 | color: inherit; 60 | overflow: visible; 61 | background-color: rgba(#000, 0); 62 | box-shadow: none; 63 | border-radius: 0; 64 | } 65 | 66 | button, 67 | input[type='button'], 68 | input[type='submit'] { 69 | cursor: pointer; 70 | } 71 | 72 | /* 73 | * @bugfix input text-overflow padding ignore 74 | * @affected lt IE11 75 | */ 76 | .lt-ie11 { 77 | input { 78 | border-left: 1px solid rgba(#000, 0); 79 | border-right: 1px solid rgba(#000, 0); 80 | border-bottom-left-radius: 1px!important; 81 | } 82 | } 83 | 84 | *, 85 | *:before, 86 | *:after { 87 | box-sizing: border-box; 88 | } 89 | 90 | a, 91 | a[href^="tel:"], 92 | a[href^="callto:"] { 93 | font: inherit; 94 | color: inherit; 95 | text-decoration: none; 96 | 97 | &:focus { 98 | outline: none; 99 | } 100 | } 101 | 102 | img { 103 | max-width: 100%; 104 | height: auto; 105 | } 106 | 107 | a, button, input { 108 | transition: .3s all ease; 109 | } 110 | -------------------------------------------------------------------------------- /demo/sass/modules/tm-box/_boxes.scss: -------------------------------------------------------------------------------- 1 | /* 2 | * @subsection Box 3 | */ 4 | 5 | $box-gutter: 30px; 6 | 7 | .box__left{ 8 | padding-bottom: $box-gutter; 9 | } 10 | 11 | .box__right{ 12 | padding-top: $box-gutter; 13 | } 14 | 15 | .box, .box-xs, .box-sm, .box-md, .box-lg{ 16 | .box__middle { 17 | vertical-align: middle; 18 | } 19 | 20 | .box__bottom { 21 | vertical-align: bottom; 22 | } 23 | } 24 | 25 | .box-group, .box-group-outer > *{ 26 | display: -ms-flexbox; 27 | display: -webkit-flex; 28 | display: flex; 29 | } 30 | 31 | .box{ 32 | .box__left img, .box__right img{ 33 | max-width: none; 34 | } 35 | 36 | .box__left, 37 | .box__right, 38 | .box__body { 39 | padding: 0; 40 | display: table-cell; 41 | vertical-align: top; 42 | } 43 | 44 | .box__left{ 45 | padding-right: $box-gutter; 46 | padding-bottom: 0; 47 | } 48 | 49 | .box__right{ 50 | padding-left: $box-gutter; 51 | padding-top: 0; 52 | } 53 | } 54 | 55 | @mixin make-box($resolution, $gutter){ 56 | .box-#{$resolution}{ 57 | .box__left img, .box__right img{ 58 | max-width: none; 59 | } 60 | 61 | .box__left, 62 | .box__right, 63 | .box__body { 64 | display: table-cell; 65 | vertical-align: top; 66 | } 67 | 68 | .box__left{ 69 | padding-right: $gutter; 70 | padding-bottom: 0; 71 | } 72 | 73 | .box__right{ 74 | padding-left: $gutter; 75 | padding-top: 0; 76 | } 77 | } 78 | 79 | .box-#{$resolution}-clear{ 80 | .box__left img, .box__right img{ 81 | max-width: 100%; 82 | } 83 | 84 | .box__left, 85 | .box__right, 86 | .box__cnt { 87 | padding: 0; 88 | display: block; 89 | vert-align: top; 90 | } 91 | 92 | .box__left{ 93 | padding-bottom: $gutter; 94 | } 95 | 96 | .box__right{ 97 | padding-top: $gutter; 98 | } 99 | } 100 | } 101 | 102 | @media (min-width: $screen-xs-min) { 103 | @include make-box("xs", $box-gutter); 104 | } 105 | 106 | @media (min-width: $screen-sm-min) { 107 | @include make-box("sm", $box-gutter); 108 | } 109 | 110 | @media (min-width: $screen-md-min) { 111 | @include make-box("md", $box-gutter); 112 | } 113 | 114 | @media (min-width: $screen-lg-min) { 115 | @include make-box("lg", $box-gutter); 116 | } -------------------------------------------------------------------------------- /demo/sass/modules/tm-grid/_tm-grid-builder.scss: -------------------------------------------------------------------------------- 1 | //======================================================= 2 | // Grid System 3 | //======================================================= 4 | 5 | @mixin make-flex() { 6 | display: -ms-flexbox; 7 | display: -webkit-flex; 8 | display: flex; 9 | } 10 | 11 | @mixin flex($grow-shrink-basis) { 12 | -ms-flex: $grow-shrink-basis; 13 | -webkit-flex: $grow-shrink-basis; 14 | flex: $grow-shrink-basis; 15 | } 16 | 17 | @mixin flex-direction($direction) { 18 | -webkit-flex-direction: $direction; 19 | -ms-flex-direction: $direction; 20 | flex-direction: $direction; 21 | } 22 | 23 | @mixin flex-wrap($wrap) { 24 | -webkit-flex-wrap: $wrap; 25 | -ms-flex-wrap: $wrap; 26 | flex-wrap: $wrap; 27 | } 28 | 29 | @mixin flex-grow($grow) { 30 | -webkit-flex-grow: $grow; 31 | -ms-flex-positive: $grow; 32 | flex-grow: $grow; 33 | } 34 | 35 | @mixin flex-basis($basis) { 36 | -webkit-flex-basis: $basis; 37 | -ms-flex-preferred-size: $basis; 38 | flex-basis: $basis; 39 | max-width: $basis; 40 | } 41 | 42 | @mixin justify-content($align) { 43 | -webkit-justify-content: $align; 44 | @if ($align == "flex-start") { 45 | -ms-flex-pack: start; 46 | } @else if ($align == "flex-end") { 47 | -ms-flex-pack: end; 48 | } @else if ($align == "space-around") { 49 | -ms-flex-pack: distribute; 50 | } @else if ($align == "space-between") { 51 | -ms-flex-pack: justify; 52 | } @else { 53 | -ms-flex-pack: $align; 54 | } 55 | justify-content: $align; 56 | } 57 | 58 | @mixin align-content($align){ 59 | -webkit-align-content: $align; 60 | @if ($align == "flex-start") { 61 | -ms-flex-pack: start; 62 | } @else if ($align == "flex-end") { 63 | -ms-flex-pack: end; 64 | } @else if ($align == "space-around") { 65 | -ms-flex-pack: distribute; 66 | } @else if ($align == "space-between") { 67 | -ms-flex-pack: justify; 68 | } @else if ($align == "center") { 69 | -ms-flex-pack: center; 70 | } @else if ($align == "stretch") { 71 | -ms-flex-pack: stretch; 72 | } @else { 73 | -ms-flex-pack: $align; 74 | } 75 | align-content: $align; 76 | } 77 | 78 | @mixin align-items($valign) { 79 | -webkit-align-items: $valign; 80 | @if ($valign == "flex-start") { 81 | -ms-flex-align: start; 82 | } @else if ($valign == "flex-end") { 83 | -ms-flex-align: end; 84 | } @else { 85 | -ms-flex-align: $valign; 86 | } 87 | align-items: $valign; 88 | } 89 | 90 | @mixin align-self($valign) { 91 | -webkit-align-self: $valign; 92 | @if ($valign == "flex-start") { 93 | -ms-flex-item-align: start; 94 | } @else if ($valign == "flex-end") { 95 | -ms-flex-item-align: end; 96 | } @else { 97 | -ms-flex-item-align: $valign; 98 | } 99 | align-self: $valign; 100 | } 101 | 102 | @mixin order($order) { 103 | -webkit-order: $order; 104 | -ms-flex-order: $order; 105 | order: $order 106 | } 107 | 108 | @mixin make-container($gutter: 30px) { 109 | margin-right: auto; 110 | margin-left: auto; 111 | padding-left: ($gutter / 2); 112 | padding-right: ($gutter / 2); 113 | } 114 | 115 | @mixin make-row($gutter: 30px) { 116 | margin-left: ceil(($gutter / -2)); 117 | margin-right: floor(($gutter / -2)); 118 | } 119 | 120 | @mixin make-col($gutter: 30px) { 121 | padding-left: ceil(($gutter / 2)); 122 | padding-right: floor(($gutter / 2)); 123 | } 124 | 125 | @mixin make-grid($resolution, $count: 12) { 126 | .col-#{$resolution}-preffix-0 { 127 | margin-left: 0%; 128 | } 129 | 130 | @for $i from 1 through $count { 131 | .col-#{$resolution}-#{$i} { 132 | @include flex-basis(percentage($i / $count)); 133 | } 134 | 135 | .col-#{$resolution}-preffix-#{$i} { 136 | margin-left: percentage($i / $count); 137 | } 138 | } 139 | } 140 | 141 | @mixin make-fallback($resolution, $count: 12) { 142 | @for $i from 1 through $count { 143 | .col-xs-#{$i}{ 144 | margin-left: auto; 145 | margin-right: auto; 146 | max-width: percentage($i / $count); 147 | } 148 | } 149 | 150 | @for $i from 1 through $count { 151 | .col-sm-#{$i}{ 152 | margin-left: auto; 153 | margin-right: auto; 154 | max-width: percentage($i / $count); 155 | } 156 | } 157 | 158 | @for $i from 1 through $count { 159 | .col-md-#{$i}{ 160 | margin-left: auto; 161 | margin-right: auto; 162 | max-width: percentage($i / $count); 163 | } 164 | } 165 | 166 | @for $i from 1 through $count { 167 | .col-lg-#{$i} { 168 | margin-left: auto; 169 | margin-right: auto; 170 | max-width: percentage($i / $count); 171 | } 172 | } 173 | 174 | [class*="col-xs-preffix-"], 175 | [class*="col-sm-preffix-"], 176 | [class*="col-md-preffix-"], 177 | [class*="col-lg-preffix-"]{ 178 | margin-left: auto; 179 | } 180 | } 181 | 182 | @mixin make-grid-system($resolution) { 183 | .row-#{$resolution}-center { 184 | @include justify-content(center); 185 | } 186 | 187 | .row-#{$resolution}-left { 188 | @include justify-content(flex-start); 189 | } 190 | 191 | .row-#{$resolution}-right { 192 | @include justify-content(flex-end); 193 | } 194 | 195 | .row-#{$resolution}-justify { 196 | @include justify-content(space-between); 197 | } 198 | 199 | .row-#{$resolution}-around { 200 | @include justify-content(space-around); 201 | } 202 | 203 | .row-#{$resolution}-top { 204 | @include align-items(flex-start); 205 | } 206 | 207 | .row-#{$resolution} { 208 | @include flex-direction(row); 209 | } 210 | 211 | .row-#{$resolution}-reverse { 212 | @include flex-direction(row-reverse); 213 | } 214 | 215 | .row-#{$resolution}-middle { 216 | @include align-items(center); 217 | } 218 | 219 | .row-#{$resolution}-bottom { 220 | @include align-items(flex-end); 221 | } 222 | 223 | .col-#{$resolution}-top { 224 | @include align-self(flex-start); 225 | } 226 | 227 | .col-#{$resolution}-middle { 228 | @include align-self(center); 229 | } 230 | 231 | .col-#{$resolution}-bottom { 232 | @include align-self(flex-end); 233 | } 234 | 235 | .row > { 236 | @include make-grid($resolution, $column-count); 237 | } 238 | } -------------------------------------------------------------------------------- /demo/sass/modules/tm-grid/_tm-grid.scss: -------------------------------------------------------------------------------- 1 | /* 2 | * @section TM Grid System 3 | * 4 | * @description A powerful and flexible css flex grid system 5 | * 6 | * @author Evgeniy Gusarov 7 | * @link https://ua.linkedin.com/pub/evgeniy-gusarov/8a/a40/54a 8 | * @version 1.0.0 9 | */ 10 | 11 | @import "_tm-grid-builder.scss"; 12 | 13 | $column-count: 12; 14 | $column-width: 70px; 15 | $gutter-width: 30px; 16 | 17 | $row-ws: $gutter-width * 2; 18 | 19 | $container-xs: 300px; 20 | $container-sm: 720px + $gutter-width; 21 | $container-md: 940px + $gutter-width; 22 | $container-lg: $column-count*$column-width + $gutter-width*($column-count); 23 | 24 | .container { 25 | @include make-container($gutter-width); 26 | min-width: $container-xs; 27 | max-width: $screen-xs-min; 28 | 29 | @media (min-width: $screen-sm-min) { 30 | max-width: $container-sm; 31 | } 32 | @media (min-width: $screen-md-min) { 33 | max-width: $container-md; 34 | } 35 | @media (min-width: $screen-lg-min) { 36 | max-width: $container-lg; 37 | } 38 | } 39 | 40 | .container-fluid { 41 | @include make-container($gutter-width); 42 | } 43 | 44 | .row { 45 | @include make-row($gutter-width); 46 | } 47 | 48 | [class*='col-'] { 49 | @include make-col($gutter-width); 50 | } 51 | 52 | html.lt-ie10 * + [class*='col-'], 53 | html.lt-ie10 * + .row, 54 | * + [class*='col-'], 55 | * + .row { 56 | margin-top: $row-ws; 57 | } 58 | 59 | html.lt-ie10 .row-no-gutter, .row-no-gutter { 60 | margin-left: 0; 61 | margin-right: 0; 62 | 63 | > [class*='col'] { 64 | padding-left: 0; 65 | padding-right: 0; 66 | } 67 | 68 | > * + [class*='col'] { 69 | margin-top: 0; 70 | } 71 | } 72 | 73 | @media (min-width: $screen-xs-min) { 74 | * + [class*='col-xs-'] { 75 | margin-top: 0; 76 | } 77 | 78 | .row { 79 | @include make-flex(); 80 | @include flex(0 1 auto); 81 | @include flex-direction(row); 82 | @include flex-wrap(wrap); 83 | } 84 | 85 | .row > [class*='col'] { 86 | @include flex(0 0 auto); 87 | @include flex-basis(100%); 88 | } 89 | 90 | @include make-grid-system("xs"); 91 | } 92 | 93 | @media (min-width: $screen-sm-min) { 94 | * + [class*='col-sm-'] { 95 | margin-top: 0; 96 | } 97 | 98 | @include make-grid-system("sm"); 99 | } 100 | 101 | @media (min-width: $screen-md-min) { 102 | * + [class*='col-md-'] { 103 | margin-top: 0; 104 | } 105 | 106 | @include make-grid-system("md"); 107 | } 108 | 109 | @media (min-width: $screen-lg-min) { 110 | * + [class*='col-lg-'] { 111 | margin-top: 0; 112 | } 113 | 114 | @include make-grid-system("lg"); 115 | } 116 | 117 | html.lt-ie10 { 118 | .row > { 119 | @include make-fallback($column-count); 120 | } 121 | } 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | -------------------------------------------------------------------------------- /demo/video/video-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZemezPlugins/rd-navbar/d96902f1d24e2f9d142bbaaf963e96b5651c1336/demo/video/video-bg.jpg -------------------------------------------------------------------------------- /demo/video/video-bg.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZemezPlugins/rd-navbar/d96902f1d24e2f9d142bbaaf963e96b5651c1336/demo/video/video-bg.mp4 -------------------------------------------------------------------------------- /documentation/README.md: -------------------------------------------------------------------------------- 1 | # theme-documentation 2 | New Theme Documentation 3 | -------------------------------------------------------------------------------- /documentation/config.php: -------------------------------------------------------------------------------- 1 | $section_dirname) { 30 | $section_json_file = dirname(__FILE__) . '/sections/' . $section_dirname . '/section.json'; 31 | // Check if section json file exists 32 | if (file_exists($section_json_file)): 33 | $section_string = file_get_contents($section_json_file); 34 | $current_section = json_decode($section_string, true); 35 | 36 | if (empty($current_section)) { 37 | echo "Section $section_dirname JSON empty or formatted wrong"; 38 | } 39 | 40 | $section_id = $current_section['id']; 41 | $section_title = $current_section['translations'][$lang]; 42 | $section_path = 'index.php?lang=' . $lang . '§ion=' . $section_id; 43 | 44 | // Active class 45 | $active_class = ''; 46 | if ($section_id == $_GET['section']) { 47 | $active_class = ' opened'; 48 | } 49 | 50 | // Get Articles List 51 | $section_articles = getArticles($current_section); 52 | 53 | $html .= '
  • ' . $section_title . ''; 54 | 55 | // Generate articles navigation 56 | if (!empty($section_articles)) { 57 | $html .= '
      '; 58 | foreach ($section_articles as $key => $article) { 59 | $article_id = $article['id']; 60 | $article_name = $article['translations'][$lang]; 61 | 62 | $article_path = '#' . $article_id; 63 | // Update article path if first in article section 64 | if ($key == 0) { 65 | $article_path = 'index.php?lang=' . $lang . '§ion=' . $section_id .'#'; 66 | } 67 | // Update article path if not in article section 68 | else if ($section_param != $section_id) { 69 | $article_path = 'index.php?lang=' . $lang . '§ion=' . $section_id . '#' . $article_id; 70 | } 71 | $html .= '
    • ' . $article_name . '
    • '; 72 | } 73 | $html .= '
    '; 74 | } 75 | $html .= '
  • '; 76 | else: 77 | die("Section $section_dirname JSON file not found"); 78 | endif; 79 | 80 | } 81 | return $html; 82 | } 83 | 84 | /** 85 | * Includes articles files 86 | * @param [array] $sections [Array with sections data] 87 | * @param [string] $lang [Current language] 88 | * @param [string] $section_param [Current section] 89 | */ 90 | function includeSection($sections, $lang, $section_param) 91 | { 92 | $section_json_file = dirname(__FILE__) . '/sections/' . $section_param . '/section.json'; 93 | 94 | if (file_exists($section_json_file)): 95 | $section_string = file_get_contents($section_json_file); 96 | $current_section = json_decode($section_string, true); 97 | 98 | $section_id = $current_section['id']; 99 | $section_articles = $current_section['articles']; 100 | 101 | echo "
    "; 102 | // Load section description 103 | $section_desc = dirname(__FILE__) . '/sections/' . $section_param . '/' . $lang . '/__description.php'; 104 | if (file_exists($section_desc)) { 105 | echo "
    "; 106 | include_once $section_desc; 107 | echo "
    "; 108 | } else { 109 | echo "Section __description.php file is missing."; 110 | } 111 | 112 | foreach ($section_articles as $key => $article) { 113 | $article_id = $article['id']; 114 | echo "
    "; 115 | $article_path = dirname(__FILE__) . '/sections/' . $section_param . '/' . $lang . '/' . $article_id . '.php'; 116 | if (file_exists($article_path)) { 117 | include_once $article_path; 118 | } else { 119 | echo "Article $article_id not found."; 120 | } 121 | echo "
    "; 122 | } 123 | echo "
    "; 124 | else: 125 | die("Section $section_dirname JSON file not found"); 126 | endif; 127 | } 128 | 129 | /** 130 | * Documentation Search 131 | * @param string $dir Documentation sections directory 132 | * @return array Array with files, that contain search request value 133 | */ 134 | function search_dir($dir) 135 | { 136 | global $request, $seen; 137 | 138 | $dirs = array(); 139 | $pages = array(); 140 | 141 | $regex = "/" . preg_quote($request,'/') . "/"; 142 | $seen[] = realpath($dir); 143 | 144 | if (is_readable($dir) && ($d = dir($dir))) { 145 | 146 | while (false != ($f = $d->read())) { 147 | $path = $d->path . '/' . $f; 148 | 149 | if (is_file($path) && is_readable($path)) { 150 | $realpath = realpath($path); 151 | 152 | if (in_array($realpath, $seen)) { 153 | continue; 154 | } else { 155 | $seen[] = $realpath; 156 | } 157 | 158 | $file = join(' ', file($path)); 159 | 160 | if (preg_match($regex, $file)) { 161 | if ('json' != substr($path, strrpos($path, '.') + 1 )) { 162 | $path_array = explode('/', $path); 163 | $sect_name = substr($path_array[3], 0, strpos($path_array[3], '.')); 164 | 165 | if ($sect_name == '__description') { 166 | $sect_hash = ''; 167 | } else { 168 | $sect_hash = '#' . $sect_name; 169 | } 170 | 171 | array_push($pages, array( 172 | 'lang' => $path_array[2], 173 | 'section' => $path_array[1], 174 | 'hash' => $sect_hash, 175 | ) 176 | ); 177 | } 178 | } 179 | 180 | } else { 181 | if (is_dir($path) && ('.' != $f) && ('..' != $f)) { 182 | array_push($dirs, $path); 183 | } 184 | } 185 | } 186 | $d->close(); 187 | } 188 | 189 | foreach ($dirs as $subdir) { 190 | $realdir = realpath($subdir); 191 | 192 | if (!in_array($realdir, $seen)) { 193 | $seen[] = $realdir; 194 | $pages = array_merge($pages, search_dir($subdir)); 195 | } 196 | } 197 | 198 | return $pages; 199 | } -------------------------------------------------------------------------------- /documentation/img/chrome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZemezPlugins/rd-navbar/d96902f1d24e2f9d142bbaaf963e96b5651c1336/documentation/img/chrome.png -------------------------------------------------------------------------------- /documentation/img/fancybox_buttons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZemezPlugins/rd-navbar/d96902f1d24e2f9d142bbaaf963e96b5651c1336/documentation/img/fancybox_buttons.png -------------------------------------------------------------------------------- /documentation/img/fancybox_loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZemezPlugins/rd-navbar/d96902f1d24e2f9d142bbaaf963e96b5651c1336/documentation/img/fancybox_loading.gif -------------------------------------------------------------------------------- /documentation/img/fancybox_overlay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZemezPlugins/rd-navbar/d96902f1d24e2f9d142bbaaf963e96b5651c1336/documentation/img/fancybox_overlay.png -------------------------------------------------------------------------------- /documentation/img/fancybox_sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZemezPlugins/rd-navbar/d96902f1d24e2f9d142bbaaf963e96b5651c1336/documentation/img/fancybox_sprite.png -------------------------------------------------------------------------------- /documentation/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZemezPlugins/rd-navbar/d96902f1d24e2f9d142bbaaf963e96b5651c1336/documentation/img/favicon.ico -------------------------------------------------------------------------------- /documentation/img/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZemezPlugins/rd-navbar/d96902f1d24e2f9d142bbaaf963e96b5651c1336/documentation/img/favicon.png -------------------------------------------------------------------------------- /documentation/img/firefox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZemezPlugins/rd-navbar/d96902f1d24e2f9d142bbaaf963e96b5651c1336/documentation/img/firefox.png -------------------------------------------------------------------------------- /documentation/img/ie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZemezPlugins/rd-navbar/d96902f1d24e2f9d142bbaaf963e96b5651c1336/documentation/img/ie.png -------------------------------------------------------------------------------- /documentation/img/ie8-panel/warning_bar_0000_us.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZemezPlugins/rd-navbar/d96902f1d24e2f9d142bbaaf963e96b5651c1336/documentation/img/ie8-panel/warning_bar_0000_us.jpg -------------------------------------------------------------------------------- /documentation/img/safari.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZemezPlugins/rd-navbar/d96902f1d24e2f9d142bbaaf963e96b5651c1336/documentation/img/safari.png -------------------------------------------------------------------------------- /documentation/index.php: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | 12 | 13 | <?php echo $doc_title; ?> 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 35 | 36 | 37 | 38 | 39 |
    40 |
    41 | 46 |
    47 |
    48 | 58 |
    59 |
    60 | 63 |
    64 |
    65 | 66 |
    67 |

    68 | 69 |

    70 |
    71 |
    72 | 75 |
    76 | 81 |
    82 | 85 |
    86 |
    87 | 88 |
    89 |
    90 | 91 | 94 |
    95 | 105 | 106 |
    107 |
    108 |
    109 |
    110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 129 | 130 | 131 | 132 | 133 | 134 | -------------------------------------------------------------------------------- /documentation/js/device.min.js: -------------------------------------------------------------------------------- 1 | /*! device.js 0.1.61 */ 2 | (function () { 3 | var a, b, c, d, e, f, g, h, i, j; 4 | a = window.device, window.device = {}, c = window.document.documentElement, j = window.navigator.userAgent.toLowerCase(), device.ios = function () { 5 | return device.iphone() || device.ipod() || device.ipad() 6 | }, device.iphone = function () { 7 | return d("iphone") 8 | }, device.ipod = function () { 9 | return d("ipod") 10 | }, device.ipad = function () { 11 | return d("ipad") 12 | }, device.android = function () { 13 | return d("android") 14 | }, device.androidPhone = function () { 15 | return device.android() && d("mobile") 16 | }, device.androidTablet = function () { 17 | return device.android() && !d("mobile") 18 | }, device.blackberry = function () { 19 | return d("blackberry") || d("bb10") || d("rim") 20 | }, device.blackberryPhone = function () { 21 | return device.blackberry() && !d("tablet") 22 | }, device.blackberryTablet = function () { 23 | return device.blackberry() && d("tablet") 24 | }, device.windows = function () { 25 | return d("windows") 26 | }, device.windowsPhone = function () { 27 | return device.windows() && d("phone") 28 | }, device.windowsTablet = function () { 29 | return device.windows() && d("touch") && !device.windowsPhone() 30 | }, device.fxos = function () { 31 | return(d("(mobile;") || d("(tablet;")) && d("; rv:") 32 | }, device.fxosPhone = function () { 33 | return device.fxos() && d("mobile") 34 | }, device.fxosTablet = function () { 35 | return device.fxos() && d("tablet") 36 | }, device.meego = function () { 37 | return d("meego") 38 | }, device.cordova = function () { 39 | return window.cordova && "file:" === location.protocol 40 | }, device.nodeWebkit = function () { 41 | return"object" == typeof window.process 42 | }, device.mobile = function () { 43 | return device.androidPhone() || device.iphone() || device.ipod() || device.windowsPhone() || device.blackberryPhone() || device.fxosPhone() || device.meego() 44 | }, device.tablet = function () { 45 | return device.ipad() || device.androidTablet() || device.blackberryTablet() || device.windowsTablet() || device.fxosTablet() 46 | }, device.desktop = function () { 47 | return!device.tablet() && !device.mobile() 48 | }, device.portrait = function () { 49 | return window.innerHeight / window.innerWidth > 1 50 | }, device.landscape = function () { 51 | return window.innerHeight / window.innerWidth < 1 52 | }, device.noConflict = function () { 53 | return window.device = a, this 54 | }, d = function (a) { 55 | return-1 !== j.indexOf(a) 56 | }, f = function (a) { 57 | var b; 58 | return b = new RegExp(a, "i"), c.className.match(b) 59 | }, b = function (a) { 60 | return f(a) ? void 0 : c.className += " " + a 61 | }, h = function (a) { 62 | return f(a) ? c.className = c.className.replace(a, "") : void 0 63 | }, device.ios() ? device.ipad() ? b("ios ipad tablet") : device.iphone() ? b("ios iphone mobile") : device.ipod() && b("ios ipod mobile") : b(device.android() ? device.androidTablet() ? "android tablet" : "android mobile" : device.blackberry() ? device.blackberryTablet() ? "blackberry tablet" : "blackberry mobile" : device.windows() ? device.windowsTablet() ? "windows tablet" : device.windowsPhone() ? "windows mobile" : "desktop" : device.fxos() ? device.fxosTablet() ? "fxos tablet" : "fxos mobile" : device.meego() ? "meego mobile" : device.nodeWebkit() ? "node-webkit" : "desktop"), device.cordova() && b("cordova"), e = function () { 64 | return device.landscape() ? (h("portrait"), b("landscape")) : (h("landscape"), b("portrait")) 65 | }, i = "onorientationchange"in window, g = i ? "orientationchange" : "resize", window.addEventListener ? window.addEventListener(g, e, !1) : window.attachEvent ? window.attachEvent(g, e) : window[g] = e, e() 66 | }).call(this); -------------------------------------------------------------------------------- /documentation/js/jquery.easing.1.3.js: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/ 3 | * 4 | * Uses the built in easing capabilities added In jQuery 1.1 5 | * to offer multiple easing options 6 | * 7 | * TERMS OF USE - jQuery Easing 8 | * 9 | * Open source under the BSD License. 10 | * 11 | * Copyright © 2008 George McGinley Smith 12 | * All rights reserved. 13 | * 14 | * Redistribution and use in source and binary forms, with or without modification, 15 | * are permitted provided that the following conditions are met: 16 | * 17 | * Redistributions of source code must retain the above copyright notice, this list of 18 | * conditions and the following disclaimer. 19 | * Redistributions in binary form must reproduce the above copyright notice, this list 20 | * of conditions and the following disclaimer in the documentation and/or other materials 21 | * provided with the distribution. 22 | * 23 | * Neither the name of the author nor the names of contributors may be used to endorse 24 | * or promote products derived from this software without specific prior written permission. 25 | * 26 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 27 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 28 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 29 | * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 30 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 31 | * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 32 | * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 33 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 34 | * OF THE POSSIBILITY OF SUCH DAMAGE. 35 | * 36 | */ 37 | 38 | // t: current time, b: begInnIng value, c: change In value, d: duration 39 | jQuery.easing['jswing'] = jQuery.easing['swing']; 40 | 41 | jQuery.extend( jQuery.easing, 42 | { 43 | def: 'easeOutQuad', 44 | swing: function (x, t, b, c, d) { 45 | //alert(jQuery.easing.default); 46 | return jQuery.easing[jQuery.easing.def](x, t, b, c, d); 47 | }, 48 | easeInQuad: function (x, t, b, c, d) { 49 | return c*(t/=d)*t + b; 50 | }, 51 | easeOutQuad: function (x, t, b, c, d) { 52 | return -c *(t/=d)*(t-2) + b; 53 | }, 54 | easeInOutQuad: function (x, t, b, c, d) { 55 | if ((t/=d/2) < 1) return c/2*t*t + b; 56 | return -c/2 * ((--t)*(t-2) - 1) + b; 57 | }, 58 | easeInCubic: function (x, t, b, c, d) { 59 | return c*(t/=d)*t*t + b; 60 | }, 61 | easeOutCubic: function (x, t, b, c, d) { 62 | return c*((t=t/d-1)*t*t + 1) + b; 63 | }, 64 | easeInOutCubic: function (x, t, b, c, d) { 65 | if ((t/=d/2) < 1) return c/2*t*t*t + b; 66 | return c/2*((t-=2)*t*t + 2) + b; 67 | }, 68 | easeInQuart: function (x, t, b, c, d) { 69 | return c*(t/=d)*t*t*t + b; 70 | }, 71 | easeOutQuart: function (x, t, b, c, d) { 72 | return -c * ((t=t/d-1)*t*t*t - 1) + b; 73 | }, 74 | easeInOutQuart: function (x, t, b, c, d) { 75 | if ((t/=d/2) < 1) return c/2*t*t*t*t + b; 76 | return -c/2 * ((t-=2)*t*t*t - 2) + b; 77 | }, 78 | easeInQuint: function (x, t, b, c, d) { 79 | return c*(t/=d)*t*t*t*t + b; 80 | }, 81 | easeOutQuint: function (x, t, b, c, d) { 82 | return c*((t=t/d-1)*t*t*t*t + 1) + b; 83 | }, 84 | easeInOutQuint: function (x, t, b, c, d) { 85 | if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b; 86 | return c/2*((t-=2)*t*t*t*t + 2) + b; 87 | }, 88 | easeInSine: function (x, t, b, c, d) { 89 | return -c * Math.cos(t/d * (Math.PI/2)) + c + b; 90 | }, 91 | easeOutSine: function (x, t, b, c, d) { 92 | return c * Math.sin(t/d * (Math.PI/2)) + b; 93 | }, 94 | easeInOutSine: function (x, t, b, c, d) { 95 | return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b; 96 | }, 97 | easeInExpo: function (x, t, b, c, d) { 98 | return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b; 99 | }, 100 | easeOutExpo: function (x, t, b, c, d) { 101 | return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b; 102 | }, 103 | easeInOutExpo: function (x, t, b, c, d) { 104 | if (t==0) return b; 105 | if (t==d) return b+c; 106 | if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b; 107 | return c/2 * (-Math.pow(2, -10 * --t) + 2) + b; 108 | }, 109 | easeInCirc: function (x, t, b, c, d) { 110 | return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b; 111 | }, 112 | easeOutCirc: function (x, t, b, c, d) { 113 | return c * Math.sqrt(1 - (t=t/d-1)*t) + b; 114 | }, 115 | easeInOutCirc: function (x, t, b, c, d) { 116 | if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b; 117 | return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b; 118 | }, 119 | easeInElastic: function (x, t, b, c, d) { 120 | var s=1.70158;var p=0;var a=c; 121 | if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; 122 | if (a < Math.abs(c)) { a=c; var s=p/4; } 123 | else var s = p/(2*Math.PI) * Math.asin (c/a); 124 | return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; 125 | }, 126 | easeOutElastic: function (x, t, b, c, d) { 127 | var s=1.70158;var p=0;var a=c; 128 | if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; 129 | if (a < Math.abs(c)) { a=c; var s=p/4; } 130 | else var s = p/(2*Math.PI) * Math.asin (c/a); 131 | return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b; 132 | }, 133 | easeInOutElastic: function (x, t, b, c, d) { 134 | var s=1.70158;var p=0;var a=c; 135 | if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5); 136 | if (a < Math.abs(c)) { a=c; var s=p/4; } 137 | else var s = p/(2*Math.PI) * Math.asin (c/a); 138 | if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; 139 | return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b; 140 | }, 141 | easeInBack: function (x, t, b, c, d, s) { 142 | if (s == undefined) s = 1.70158; 143 | return c*(t/=d)*t*((s+1)*t - s) + b; 144 | }, 145 | easeOutBack: function (x, t, b, c, d, s) { 146 | if (s == undefined) s = 1.70158; 147 | return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b; 148 | }, 149 | easeInOutBack: function (x, t, b, c, d, s) { 150 | if (s == undefined) s = 1.70158; 151 | if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b; 152 | return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b; 153 | }, 154 | easeInBounce: function (x, t, b, c, d) { 155 | return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b; 156 | }, 157 | easeOutBounce: function (x, t, b, c, d) { 158 | if ((t/=d) < (1/2.75)) { 159 | return c*(7.5625*t*t) + b; 160 | } else if (t < (2/2.75)) { 161 | return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b; 162 | } else if (t < (2.5/2.75)) { 163 | return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b; 164 | } else { 165 | return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b; 166 | } 167 | }, 168 | easeInOutBounce: function (x, t, b, c, d) { 169 | if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b; 170 | return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b; 171 | } 172 | }); 173 | 174 | /* 175 | * 176 | * TERMS OF USE - EASING EQUATIONS 177 | * 178 | * Open source under the BSD License. 179 | * 180 | * Copyright © 2001 Robert Penner 181 | * All rights reserved. 182 | * 183 | * Redistribution and use in source and binary forms, with or without modification, 184 | * are permitted provided that the following conditions are met: 185 | * 186 | * Redistributions of source code must retain the above copyright notice, this list of 187 | * conditions and the following disclaimer. 188 | * Redistributions in binary form must reproduce the above copyright notice, this list 189 | * of conditions and the following disclaimer in the documentation and/or other materials 190 | * provided with the distribution. 191 | * 192 | * Neither the name of the author nor the names of contributors may be used to endorse 193 | * or promote products derived from this software without specific prior written permission. 194 | * 195 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 196 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 197 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 198 | * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 199 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 200 | * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 201 | * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 202 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 203 | * OF THE POSSIBILITY OF SUCH DAMAGE. 204 | * 205 | */ -------------------------------------------------------------------------------- /documentation/js/jquery.rd-navbar.min.js: -------------------------------------------------------------------------------- 1 | (function(a){var n=a(window).width(),h,m,k=0,l=function(b,c){this.options=c;this.$source=a(b)};l.prototype={init:function(){this.createDOM();this.createListeners()},createDOM:function(){a(".rd-mobilemenu").append(this.createNavDOM());a("html").hasClass("desktop")&&1600<=n?(a("body").delegate("*","mousewheel",this.scroll),a("body").delegate("*","touchmove",this.scroll),a("body").delegate("*","touchend",this.touchend),a("body").delegate("*","touchstart",{type:"click"},this.close)):a(".rd-mobilepanel_toggle, .page-content, .rd-mobilemenu").removeClass("active")}, 2 | createNavDOM:function(){for(var b=a("
      ",{"class":"rd-mobilemenu_ul"}),c=this.$source.children(),d=0;d a").hasClass("opened")||a(h).css({display:"none"}), 3 | a(f).find("> a").each(function(){$this=a(this);$this.addClass("rd-with-ul").on("click",function(b){b.preventDefault();$this=a(this);$this.hasClass("rd-with-ul")&&!$this.hasClass("active")?(a(".rd-with-ul").removeClass("active"),b=$this.addClass("active").parent().find(".rd-mobilemenu_submenu"),b.stop().slideDown(),a(".rd-mobilemenu_submenu").not(b).stop().slideUp()):(b=$this.removeClass("active").parent().find(".rd-mobilemenu_submenu"),b.stop().slideUp())})})}f&&b.append(f)}b.find("a").each(function(){-1< 4 | window.location.href.indexOf(a(this).attr("href"))&&(a(this).parents(".rd-mobilemenu_ul").find("a").removeClass("focus"),a(this).addClass("focus"))});return b},createListeners:function(){this.panelHeight=a(".rd-mobilepanel").outerHeight();this.createToggleListener();this.createResizeListener();this.createScrollListener();this.createItemScrollListener()},createToggleListener:function(){var b=this,c;c=b.isMobile()?"touchstart":"click";a("body").delegate(".rd-mobilepanel_toggle",c,function(c){c.preventDefault(); 5 | c.stopPropagation();c=a(".rd-mobilemenu");a(this).toggleClass("active");a(".page-content").toggleClass("active");console.log("toggle");c.hasClass("active")?(a(this).removeClass("active"),c.removeClass("active"),a("body").undelegate("*","mousewheel",b.scroll),a("body").undelegate("*","touchmove",b.scroll),a("body").undelegate("*","touchend",b.touchend)):(a(this).addClass("active"),c.addClass("active"),a("body").delegate("*","mousewheel",b.scroll),a("body").delegate("*","touchmove",b.scroll),a("body").delegate("*", 6 | "touchend",b.touchend))})},createResizeListener:function(){var b=this;a(window).on("resize",function(){var c=a(".rd-mobilemenu");"none"==c.css("display")&&(c.removeClass("active"),a(".rd-mobilepanel_toggle").removeClass("active"),a("body").undelegate("*","mousewheel",b.scroll),a("body").undelegate("*","touchmove",b.scroll),a("body").undelegate("*","touchend",b.touchend))})},createScrollListener:function(){function b(){function b(){e.addClass("fixed");f.css({transform:"translateY(50.25px)","font-size":24})} 7 | var e=a(".rd-mobilepanel"),f=a(".rd-mobilepanel_title"),g=a(document).scrollTop();1067g?(e.removeClass("fixed"),a("body").removeClass("navbar-stickup").removeClass("navbar-fixed"),g>c&&e.hasClass("fixed"),f.css({transform:"translateY("+g/4+"px)","font-size":56-g/6.7})):(b(),a("body").removeClass("navbar-fixed").addClass("navbar-stickup")):(b(),a("body").removeClass("navbar-stickup").addClass("navbar-fixed"));c=g}a(".rd-mobilepanel");var c=0;a(window).on("scroll",b);a(window).on("resize", 8 | b);b()},createItemScrollListener:function(){a(".rd-mobilemenu_ul").find('a[href*="#"]').on("click",function(b){if(-1==window.location.search.indexOf(a(this).attr("data-section")))return!0;b.preventDefault();a(this).parents(".rd-mobilemenu_ul").find("a").removeClass("focus");a(this).addClass("focus");var c=this.hash;console.log(this.hash);""==this.hash?a("html, body").stop().animate({scrollTop:0},300,"swing",function(){window.location.hash=c}):(b=a(c),a("html, body").stop().animate({scrollTop:b.stickUpOffset().top+ 9 | 2},300,"swing",function(){window.location.hash=c}))});a(document).on("scroll",function(b){var c=a(document).scrollTop(),d;a(".rd-mobilemenu_ul > li > a.rd-with-ul").each(function(){-1a(document).height()-100?(d.find("a").removeClass("focus"),d.find("> li:last-child a").addClass("focus")):d.find("a").each(function(){var b=a(this),d=a("#"+b.attr("data-id"));0c&&(b.parents(".rd-mobilemenu_ul").find("a").removeClass("focus"),b.addClass("focus"))}))})},scroll:function(b){var c=a(".rd-mobilemenu_ul"),d=b.originalEvent.targetTouches?b.originalEvent.targetTouches[0].pageX:b.pageX,e=b.originalEvent.targetTouches?b.originalEvent.targetTouches[0].pageY:b.pageY;if(e>c.stickUpOffset().top&&ec.stickUpOffset().left&&de-k){k=e;return}k=e;d=-25*(b.originalEvent.wheelDelta||-b.originalEvent.detail)}c.stop().scrollTop(c.scrollTop()+d)}else if(a("html").hasClass("desktop"))return!0;b.preventDefault();return!1},touchend:function(b){b=a(".rd-mobilemenu_ul");b.stop().animate({scrollTop:b.scrollTop()+(m?100:-100)},3E3,"easeOutQuint");h=void 0},close:function(b){if(b.originalEvent){var c=a(".rd-mobilemenu"),d=b.originalEvent.targetTouches? 12 | b.originalEvent.targetTouches[0].pageX:b.pageX,e=b.originalEvent.targetTouches?b.originalEvent.targetTouches[0].pageY:b.pageY;e>c.stickUpOffset().top&&ec.stickUpOffset().left&&d'+settings.text+''); 19 | 20 | $(containerIDhash).click(function(){ 21 | $('html, body').stop().animate({scrollTop:0}, settings.scrollSpeed, settings.easingType); 22 | $('#'+settings.containerHoverID, this).stop().animate({'opacity': 0 }, settings.inDelay, settings.easingType); 23 | return false; 24 | }) 25 | 26 | 27 | $(window).scroll(function() { 28 | var sd = $(window).scrollTop(); 29 | if(typeof document.body.style.maxHeight === "undefined") { 30 | $(containerIDhash).css({ 31 | 'position': 'absolute', 32 | 'top': $(window).scrollTop() + $(window).height() - 50 33 | }); 34 | } 35 | if ( sd > settings.min ) 36 | $(containerIDhash).addClass('active'); 37 | else 38 | $(containerIDhash).removeClass('active'); 39 | }); 40 | }; 41 | })(jQuery); 42 | -------------------------------------------------------------------------------- /documentation/js/script.min.js: -------------------------------------------------------------------------------- 1 | function isIE(){var a=navigator.userAgent.toLowerCase();return-1!=a.indexOf("msie")?parseInt(a.split("msie")[1]):!1}(function(a){a("html").hasClass("desktop")&&a(document).ready(function(){a().UItoTop({easingType:"easeOutQuart",containerClass:"toTop fa fa-angle-up"})})})(jQuery); 2 | $(function(){var a=document.querySelector&&document.querySelector('meta[name="viewport"]'),c=navigator.userAgent,b=function(){a.content="width=device-width, minimum-scale=0.25, maximum-scale=1.6, initial-scale=1.0"};a&&/iPhone|iPad/.test(c)&&!/Opera Mini/.test(c)&&(a.content="width=device-width, minimum-scale=1.0, maximum-scale=1.0",document.addEventListener("gesturestart",b,!1));void 0!=window.orientation&&(c.match(/ipod|ipad|iphone/gi)||$(".sf-menus li").each(function(){$(">ul",this)[0]&&$(">a", 3 | this).toggle(function(){return!1},function(){window.location.href=$(this).attr("href")})}))});var ua=navigator.userAgent.toLocaleLowerCase(),regV=/ipod|ipad|iphone/gi,result=ua.match(regV),userScale="";result||(userScale=",user-scalable=0");document.write(''); 4 | (function(a){var c=a(".select");0
    ');b.append('
      ');var d=b.find("select"),c=b.find(".pseudo-select"),e=b.find(".pseudo-dropdown");d.css("display","none");d.find("option").each(function(){var b=a(this);e.append('
    • '+b.text()+"
    • ")});var f=e.find("li");if(0 9 | // 10 | // 11 | // 12 | 13 | // Opacity 14 | @mixin opacity($opacity) { 15 | opacity: $opacity; 16 | 17 | .lt-ie9 & { 18 | -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=#{$opacity})"; 19 | filter: alpha(opacity=$opacity*100); 20 | } 21 | } 22 | 23 | 24 | @mixin clip($x1, $x2, $y1, $y2){ 25 | clip: rect($y1,$x2,$y2,$x1); 26 | } 27 | 28 | // Background-rgba 29 | @mixin background($rgb, $opacity) { 30 | background: rgba($rgb, $opacity); 31 | 32 | .lt-ie9 & { 33 | background: none; 34 | -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str(rgba($rgb, $opacity))}', endColorstr='#{ie-hex-str(rgba($rgb, $opacity))}')"; 35 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str(rgba($rgb, $opacity))}', endColorstr='#{ie-hex-str(rgba($rgb, $opacity))}'); 36 | zoom: 1; 37 | } 38 | } 39 | 40 | // Transition 41 | @mixin transition($trsn) { 42 | -moz-transition: $trsn; 43 | -o-transition: $trsn; 44 | -webkit-transition: $trsn; 45 | transition: $trsn; 46 | } 47 | 48 | // Transition Delay 49 | @mixin transition-delay($trsn-d) { 50 | -moz-transition-delay: $trsn-d; 51 | -o-transition-delay: $trsn-d; 52 | -webkit-transition-delay: $trsn-d; 53 | transition-delay: $trsn-d; 54 | } 55 | 56 | // Animation 57 | @mixin animation($anim) { 58 | -webkit-animation: $anim; 59 | -moz-animation: $anim; 60 | -ms-animation: $anim; 61 | -o-animation: $anim; 62 | animation: $anim; 63 | } 64 | 65 | // Transform Origin 66 | @mixin transform-origin($trfm-o) { 67 | -moz-transform-origin: $trfm-o; 68 | -ms-transform-origin: $trfm-o; 69 | -o-transform-origin: $trfm-o; 70 | -webkit-transform-origin: $trfm-o; 71 | transform-origin: $trfm-o; 72 | } 73 | 74 | // Transform 75 | @mixin transform($trfm) { 76 | -moz-transform: $trfm; 77 | -ms-transform: $trfm; 78 | -o-transform: $trfm; 79 | -webkit-transform: $trfm; 80 | transform: $trfm; 81 | } 82 | 83 | // Box Sizing 84 | @mixin box-sizing($bs) { 85 | -moz-box-sizing: $bs; 86 | -webkit-box-sizing: $bs; 87 | box-sizing: $bs; 88 | } 89 | 90 | // Border Radius 91 | @mixin border-radius($border-radius) { 92 | -webkit-border-radius: $border-radius; 93 | -moz-border-radius: $border-radius; 94 | border-radius: $border-radius; 95 | } 96 | 97 | // Box Shadow 98 | @mixin box-shadow($box-shadow) { 99 | -webkit-box-shadow: $box-shadow; 100 | -moz-box-shadow: $box-shadow; 101 | box-shadow: $box-shadow; 102 | } 103 | 104 | // Reset Input 105 | @mixin reset-input() { 106 | outline: none; 107 | background-color: transparent; 108 | border: none; 109 | -webkit-appearance: none; 110 | border-radius: 0; 111 | vertical-align: baseline; 112 | box-shadow: none; 113 | } 114 | 115 | // Hide Text 116 | @mixin hide-text { 117 | font: 0/0 a; 118 | text-shadow: none; 119 | color: transparent; 120 | } 121 | 122 | // User Select 123 | @mixin user-select($select: none) { 124 | -webkit-user-select: $select; 125 | -khtml-user-select: $select; 126 | -moz-user-select: $select; 127 | -ms-user-select: $select; 128 | user-select: $select; 129 | } 130 | 131 | // Triangle 132 | @mixin triangle($dir, $w, $h, $clr) { 133 | width: 0; 134 | height: 0; 135 | border-style: solid; 136 | 137 | @if $dir == top { 138 | border-width: 0 $w/2 $h $w/2; 139 | border-color: transparent transparent $clr transparent; 140 | } @else if $dir == bottom { 141 | border-width: $h $w/2 0 $w/2; 142 | border-color: $clr transparent transparent transparent; 143 | } @else if $dir == left { 144 | border-width: $h/2 $w $h/2 0; 145 | border-color: transparent $clr transparent transparent; 146 | } @else if $dir == right { 147 | border-width: $h/2 0 $h/2 $w; 148 | border-color: transparent transparent transparent $clr; 149 | } @else if $dir == top_left { 150 | border-width: $w $w 0 0; 151 | border-color: $clr transparent transparent transparent; 152 | } @else if $dir == top_right { 153 | border-width: 0 $w $w 0; 154 | border-color: transparent $clr transparent transparent; 155 | } @else if $dir == bottom_right { 156 | border-width: 0 0 $w $w; 157 | border-color: transparent transparent $clr transparent; 158 | } @else if $dir == bottom_left { 159 | border-width: $w 0 0 $w; 160 | border-color: transparent transparent transparent $clr; 161 | } 162 | } 163 | 164 | // Clearfix 165 | @mixin clearfix { 166 | &:before, 167 | &:after { 168 | display: table; 169 | content: ""; 170 | line-height: 0; 171 | } 172 | 173 | &:after { 174 | clear: both; 175 | } 176 | } 177 | 178 | // Variables 179 | $fa: 'FontAwesome'; 180 | 181 | // FA Icons 182 | // Angle 183 | $fa-angle-left: '\f104'; 184 | $fa-angle-right: '\f105'; 185 | $fa-angle-down: '\f107'; 186 | $fa-angle-up: '\f106'; 187 | 188 | // Arrow Circle 189 | $fa-arrow-circle-down: '\f0ab'; 190 | $fa-arrow-circle-top: '\f0aa'; 191 | $fa-arrow-circle-left: '\f0a8'; 192 | $fa-arrow-circle-right: '\f0a9'; 193 | 194 | // Caret 195 | $fa-caret-down: '\f0d7'; 196 | $fa-caret-right: '\f0da'; 197 | $fa-caret-left: '\f0d9'; 198 | $fa-caret-up: '\f0d8'; 199 | 200 | // Chevron 201 | $fa-chevron-left: '\f053'; 202 | $fa-chevron-right: '\f054'; 203 | $fa-chevron-up: '\f077'; 204 | $fa-chevron-down: '\f078'; 205 | 206 | // Other 207 | $fa-search: '\f002'; 208 | $fa-close: '\f00d'; 209 | $fa-expand: '\f065'; 210 | $fa-play-circle: '\f144'; 211 | $fa-play-circle-o: '\f01d'; 212 | $fa-play: '\f04b'; 213 | $fa-youtube-play: '\f16a'; 214 | $fa-link: '\f0c1'; 215 | $fa-envelope: '\f0e0'; 216 | $fa-mobile: '\f10b'; 217 | $fa-map-marker: '\f041'; 218 | $fa-comments: '\f086'; 219 | $fa-comments-o: '\f0e6'; 220 | $fa-cogs: '\f085'; 221 | $fa-cog: '\f013'; 222 | $fa-eye: '\f06e'; 223 | $fa-external-link: '\f08e'; 224 | $fa-photo: '\f03e'; 225 | $fa-volume-off: '\f026'; 226 | $fa-volume-up: '\f028'; 227 | $fa-volume-down: '\f027'; 228 | $fa-users: '\f0c0'; 229 | $fa-times: '\f00d'; 230 | $fa-star: '\f005'; 231 | $fa-stop: '\f04d'; 232 | $fa-pause: '\f04c'; 233 | $fa-check-square-o: '\f046'; 234 | $fa-desktop: '\f108'; 235 | $fa-cubes: '\f1b3'; 236 | $fa-bolt: '\f0e7'; 237 | $fa-bullhorn: '\f0a1'; 238 | $fa-book: '\f02d'; 239 | $fa-gears: '\f085'; 240 | $fa-codepen: '\f1cb'; 241 | $fa-plus: '\f067'; 242 | $fa-thumbs-o-up: '\f087'; 243 | $fa-quote-left: '\f10d'; 244 | 245 | @mixin keyframes($name) { 246 | @-webkit-keyframes #{$name} { 247 | @content; 248 | } 249 | @-moz-keyframes #{$name} { 250 | @content; 251 | } 252 | @-ms-keyframes #{$name} { 253 | @content; 254 | } 255 | @keyframes #{$name} { 256 | @content; 257 | } 258 | } 259 | 260 | /// Gives a card depth effect. 261 | /// @param {Number} $depth - depth level (between 1 and 5) 262 | /// @link http://www.google.com/design/spec/layout/layout-principles.html#layout-principles-dimensionality Google Design 263 | /// @requires {function} top-shadow 264 | /// @requires {function} bottom-shadow 265 | @mixin card($depth) { 266 | @if $depth < 1 { 267 | box-shadow: none; 268 | } @else if $depth > 5 { 269 | @warn "Invalid $depth `#{$depth}` for mixin `card`."; 270 | } @else { 271 | box-shadow: bottom-shadow($depth), top-shadow($depth); 272 | } 273 | } 274 | 275 | /// Computes a top-shadow for a card effect. 276 | /// @param {Number} $depth - depth level 277 | /// @return {List} 278 | @function top-shadow($depth) { 279 | $primary-offset: nth(1.5 3 10 14 19, $depth) * 1px; 280 | $blur: nth(1.5 3 10 14 19, $depth) * 4px; 281 | $color: rgba(black, nth(.12 .16 .19 .25 .30, $depth)); 282 | 283 | @return 0 $primary-offset $blur $color; 284 | } 285 | 286 | /// Computes a bottom-shadow for a card effect. 287 | /// @param {Number} $depth - depth level 288 | /// @return {List} 289 | @function bottom-shadow($depth) { 290 | $primary-offset: nth(1.5 3 6 10 15, $depth) * 1px; 291 | $blur: nth(1 3 3 5 6, $depth) * 4px; 292 | $color: rgba(black, nth(.24 .23 .23 .22 .22, $depth)); 293 | 294 | @return 0 $primary-offset $blur $color; 295 | } -------------------------------------------------------------------------------- /documentation/sass/_normalize.scss: -------------------------------------------------------------------------------- 1 | /*========================================================== 2 | NORMALIZE 3 | ==========================================================*/ 4 | html, body, div, span, applet, object, iframe, 5 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, 6 | a, abbr, acronym, address, big, cite, code, 7 | del, dfn, em, img, ins, kbd, q, s, samp, 8 | small, strike, strong, sub, sup, tt, var, 9 | b, u, i, center, 10 | dl, dt, dd, ol, ul, li, 11 | fieldset, form, label, legend, 12 | table, caption, tbody, tfoot, thead, tr, th, td, 13 | article, aside, canvas, details, embed, 14 | figure, figcaption, footer, header, hgroup, 15 | menu, nav, output, ruby, section, summary, 16 | time, mark, audio, video { 17 | margin: 0; 18 | padding: 0; 19 | border: 0; 20 | font-size: 100%; 21 | font: inherit; 22 | vertical-align: top; 23 | } 24 | 25 | article, aside, details, figcaption, figure, 26 | footer, header, hgroup, menu, nav, section { 27 | display: block; 28 | } 29 | body { 30 | line-height: 1; 31 | } 32 | ol, ul { 33 | list-style: none; 34 | } 35 | blockquote, q { 36 | quotes: none; 37 | } 38 | blockquote:before, blockquote:after, 39 | q:before, q:after { 40 | content: ''; 41 | content: none; 42 | } 43 | table { 44 | border-collapse: collapse; 45 | border-spacing: 0; 46 | } 47 | 48 | button, 49 | input[type='button']{ 50 | background: none; 51 | border: none; 52 | display: inline-block; 53 | padding: 0; 54 | outline: none; 55 | outline-offset: 0; 56 | cursor: pointer; 57 | -webkit-appearance: none; 58 | 59 | &::-moz-focus-inner { 60 | border: none; 61 | padding: 0; 62 | } 63 | } -------------------------------------------------------------------------------- /documentation/sass/_owl-carousel.scss: -------------------------------------------------------------------------------- 1 | /*======================================================== 2 | Owl Carousel 3 | =========================================================*/ 4 | @import "_mixins.scss"; 5 | @import "_variables.scss"; 6 | 7 | //------------------------------------------------------ 8 | // OWL STYLES 9 | //------------------------------------------------------ 10 | 11 | .owl-carousel .animated { 12 | -webkit-animation-duration: 1000ms; 13 | animation-duration: 1000ms; 14 | -webkit-animation-fill-mode: both; 15 | animation-fill-mode: both; 16 | } 17 | .owl-carousel .owl-animated-in { 18 | z-index: 0; 19 | } 20 | .owl-carousel .owl-animated-out { 21 | z-index: 1; 22 | } 23 | .owl-carousel .fadeOut { 24 | -webkit-animation-name: fadeOut; 25 | animation-name: fadeOut; 26 | } 27 | 28 | @-webkit-keyframes fadeOut { 29 | 0% { 30 | opacity: 1; 31 | } 32 | 33 | 100% { 34 | opacity: 0; 35 | } 36 | } 37 | @keyframes fadeOut { 38 | 0% { 39 | opacity: 1; 40 | } 41 | 42 | 100% { 43 | opacity: 0; 44 | } 45 | } 46 | 47 | .owl-height { 48 | @include transition(height 500ms ease-in-out); 49 | } 50 | 51 | .owl-carousel { 52 | display: none; 53 | width: 100%; 54 | -webkit-tap-highlight-color: transparent; 55 | position: relative; 56 | z-index: 1; 57 | 58 | figure:last-child{ 59 | margin-bottom: 0; 60 | } 61 | 62 | margin-bottom: 45px; 63 | } 64 | .owl-carousel .owl-stage { 65 | position: relative; 66 | -ms-touch-action: pan-Y; 67 | } 68 | .owl-carousel .owl-stage:after { 69 | content: "."; 70 | display: block; 71 | clear: both; 72 | visibility: hidden; 73 | line-height: 0; 74 | height: 0; 75 | } 76 | .owl-carousel .owl-stage-outer { 77 | position: relative; 78 | overflow: hidden; 79 | -webkit-transform: translate3d(0px, 0px, 0px); 80 | } 81 | .owl-carousel .owl-controls .owl-nav .owl-prev, 82 | .owl-carousel .owl-controls .owl-nav .owl-next, 83 | .owl-carousel .owl-controls .owl-dot { 84 | cursor: pointer; 85 | cursor: hand; 86 | @include user-select(none); 87 | } 88 | .owl-carousel.owl-loaded { 89 | display: block; 90 | } 91 | .owl-carousel.owl-loading { 92 | opacity: 0; 93 | display: block; 94 | } 95 | .owl-carousel.owl-hidden { 96 | opacity: 0; 97 | } 98 | .owl-carousel .owl-refresh .owl-item { 99 | display: none; 100 | } 101 | .owl-carousel .owl-item { 102 | position: relative; 103 | min-height: 1px; 104 | float: left; 105 | -webkit-backface-visibility: hidden; 106 | -webkit-tap-highlight-color: transparent; 107 | -webkit-touch-callout: none; 108 | @include user-select(none); 109 | } 110 | 111 | .item{ 112 | position: relative; 113 | } 114 | 115 | .owl-carousel .owl-item img { 116 | display: block; 117 | width: 100%; 118 | -webkit-transform-style: preserve-3d; 119 | } 120 | .owl-carousel.owl-text-select-on .owl-item { 121 | @include user-select(none); 122 | } 123 | .owl-carousel .owl-grab { 124 | cursor: move; 125 | cursor: -webkit-grab; 126 | cursor: -o-grab; 127 | cursor: -ms-grab; 128 | cursor: grab; 129 | } 130 | .owl-carousel.owl-rtl { 131 | direction: rtl; 132 | } 133 | .owl-carousel.owl-rtl .owl-item { 134 | float: right; 135 | } 136 | 137 | .no-js .owl-carousel { 138 | display: block; 139 | } 140 | 141 | .owl-carousel .owl-item .owl-lazy { 142 | opacity: 0; 143 | @include transition(opacity 400ms ease); 144 | } 145 | .owl-carousel .owl-item img { 146 | transform-style: preserve-3d; 147 | } 148 | .owl-carousel .owl-video-wrapper { 149 | position: relative; 150 | height: 100%; 151 | background: #000; 152 | } 153 | .owl-carousel .owl-video-play-icon { 154 | position: absolute; 155 | height: 80px; 156 | width: 80px; 157 | left: 50%; 158 | top: 50%; 159 | margin-left: -40px; 160 | margin-top: -40px; 161 | background: url("owl.video.play.png") no-repeat; 162 | cursor: pointer; 163 | z-index: 1; 164 | -webkit-backface-visibility: hidden; 165 | @include transition(scale 100ms ease); 166 | } 167 | .owl-carousel .owl-video-play-icon:hover { 168 | @include transform( scale(1.3, 1.3) ); 169 | } 170 | .owl-carousel .owl-video-playing .owl-video-tn, 171 | .owl-carousel .owl-video-playing .owl-video-play-icon { 172 | display: none; 173 | } 174 | .owl-carousel .owl-video-tn { 175 | opacity: 0; 176 | height: 100%; 177 | background-position: center center; 178 | background-repeat: no-repeat; 179 | -webkit-background-size: contain; 180 | -moz-background-size: contain; 181 | -o-background-size: contain; 182 | background-size: contain; 183 | @include transition(opacity 400ms ease); 184 | } 185 | .owl-carousel .owl-video-frame { 186 | position: relative; 187 | z-index: 1; 188 | } 189 | 190 | //------------------------------------------------------ 191 | // OWL CONTROLS 192 | //------------------------------------------------------ 193 | 194 | .owl-dots{ 195 | margin-top: 20px; 196 | text-align: center; 197 | line-height: 12px; 198 | .owl-dot{ 199 | display: inline-block; 200 | width: 12px; 201 | height: 12px; 202 | line-height: 12px; 203 | text-align: center; 204 | background: #777; 205 | -webkit-border-radius: 50%; 206 | -moz-border-radius: 50%; 207 | border-radius: 50%; 208 | @include transition(.3s all ease); 209 | 210 | &:hover, &.active{ 211 | background: $color-1; 212 | } 213 | } 214 | 215 | .owl-dot + .owl-dot{ 216 | margin-left: 6px; 217 | } 218 | } -------------------------------------------------------------------------------- /documentation/sass/_select.scss: -------------------------------------------------------------------------------- 1 | /*==================== Navbar ====================*/ 2 | .select { 3 | display: inline-block; 4 | position: relative; 5 | font-size: 14px; 6 | line-height: 30px; 7 | text-align: left; 8 | 9 | select { display: none; } 10 | 11 | .pseudo-select { 12 | padding-left: 8px; 13 | padding-right: 20px; 14 | cursor: pointer; 15 | opacity: .9; 16 | 17 | &:before { 18 | content: "\f0d7"; 19 | font-family: FontAwesome; 20 | position: absolute; 21 | top: 1px; 22 | right: 6px; 23 | font-size: 14px; 24 | @include transition(.3s); 25 | } 26 | } 27 | 28 | .pseudo-dropdown { 29 | position: absolute; 30 | left: 0; 31 | right: 0; 32 | top: 100%; 33 | margin-top: -1px; 34 | overflow: hidden; 35 | color: #212121; 36 | background: #FFF; 37 | box-shadow: 0 4px 4px 0px rgba(0, 0, 0, 0.12); 38 | 39 | li { 40 | a { 41 | display: block; 42 | color: inherit; 43 | box-sizing: border-box; 44 | opacity: 0; 45 | height: 0; 46 | padding: 0px 8px; 47 | line-height: 26px; 48 | @include transition(.3s); 49 | } 50 | 51 | &.selected, &:hover a { 52 | color: $color-1; 53 | background: #EEE; 54 | } 55 | } 56 | } 57 | 58 | &.opened { 59 | box-shadow: 0 4px 4px 0px rgba(0, 0, 0, 0.12); 60 | 61 | .pseudo-select { 62 | color: #2D2D2D; 63 | background: #FFF; 64 | opacity: 1; 65 | &:before { 66 | transform: rotate(180deg); 67 | } 68 | } 69 | 70 | .pseudo-dropdown { 71 | padding: 10px 0 6px 0; 72 | border-top: 1px solid #D2D2D2; 73 | li a { 74 | opacity: 1; 75 | height: 26px; 76 | @include animation(open .3s 1 forwards); 77 | } 78 | } 79 | 80 | @include keyframes(open) { 81 | 0% { 82 | opacity: 0; 83 | height: 0; 84 | } 85 | 86 | 20% { 87 | opacity: 0; 88 | } 89 | 90 | 60% { 91 | opacity: 0.5; 92 | height: 26px; 93 | } 94 | 95 | 100% { 96 | opacity: 1; 97 | height: 26px; 98 | } 99 | } 100 | } 101 | } -------------------------------------------------------------------------------- /documentation/sass/_stuck.scss: -------------------------------------------------------------------------------- 1 | /*==================== Stuck ====================*/ 2 | .stuck { 3 | @include transition(transform .3s ease); 4 | padding-top: 123px; 5 | padding-bottom: 69px; 6 | background: $color-1; 7 | 8 | .container { 9 | position: relative; 10 | } 11 | 12 | .select_wrap { 13 | position: absolute; 14 | top: 19px; 15 | right: 0; 16 | } 17 | 18 | .title { 19 | padding-right: 200px; 20 | } 21 | 22 | .section-title { 23 | display: inline-block; 24 | 25 | &:after { 26 | content: "\f105"; 27 | font-family: FontAwesome; 28 | padding: 0 10px; 29 | } 30 | 31 | & + .chapter-title { 32 | display: inline-block; 33 | } 34 | } 35 | 36 | .section-title, .chapter-title { 37 | font-size: 54px; 38 | line-height: 64px; 39 | font-weight: 500; 40 | } 41 | 42 | @media (max-width: 1299px) { 43 | .container { 44 | width: 100%; 45 | padding: 0 0 0 64px; 46 | } 47 | 48 | .title { 49 | padding-right: 250px; 50 | } 51 | 52 | .select_wrap { 53 | right: 50px; 54 | } 55 | } 56 | 57 | @media (max-width: 1199px) { 58 | padding-top: 80px; 59 | padding-bottom: 60px; 60 | 61 | .section-title, .chapter-title { 62 | font-size: 46px; 63 | line-height: 46px; 64 | } 65 | 66 | .select_wrap { 67 | top: 0; 68 | } 69 | } 70 | 71 | @media (max-width: 979px) { 72 | padding-top: 60px; 73 | padding-bottom: 60px; 74 | 75 | .section-title, .chapter-title { 76 | font-size: 36px; 77 | line-height: 36px; 78 | } 79 | } 80 | 81 | @media (max-width: 767px) { 82 | padding-top: 40px; 83 | padding-bottom: 40px; 84 | 85 | .title { 86 | padding-right: 0; 87 | } 88 | 89 | .section-title, .chapter-title { 90 | font-size: 28px; 91 | line-height: 28px; 92 | } 93 | 94 | .select_wrap { 95 | position: static; 96 | margin-top: 20px; 97 | } 98 | 99 | .section-title { display: none; } 100 | } 101 | } 102 | 103 | .isStuck{ 104 | @include card(1); 105 | } 106 | 107 | .isStuck, .chapter { 108 | padding-top: 19px; 109 | padding-bottom: 20px; 110 | 111 | .section-title, .chapter-title { 112 | font-size: 26px; 113 | line-height: 26px; 114 | } 115 | 116 | .select_wrap { display: none; } 117 | 118 | @media (max-width: 767px) { 119 | .section-title, .chapter-title { 120 | font-size: 26px; 121 | line-height: 26px; 122 | } 123 | } 124 | } -------------------------------------------------------------------------------- /documentation/sass/_to-top.scss: -------------------------------------------------------------------------------- 1 | /*================== ToTop ======================*/ 2 | .toTop { 3 | width: 56px; 4 | height: 56px; 5 | font-size: 24px; 6 | line-height: 52px; 7 | color: #fff; 8 | background: $color-1; 9 | border-radius: 50%; 10 | @include box-shadow(0 6px 6px 0 rgba(#000, .15)); 11 | @include transform(translateY(100px)); 12 | @include transition(.3s all cubic-bezier(0.2, 1, 0.3, 1)); 13 | 14 | position: fixed; 15 | right: 40px; 16 | bottom: 40px; 17 | 18 | overflow: hidden; 19 | text-align: center; 20 | text-decoration: none; 21 | z-index: 9999999; 22 | 23 | &:hover { 24 | color: #fff; 25 | background: darken($color-1, 5%); 26 | text-decoration: none; 27 | } 28 | 29 | &.active{ 30 | @include transform(translateY(0px)); 31 | } 32 | } 33 | 34 | @media (max-width: 479px) { 35 | .toTop{ 36 | width: 48px; 37 | height: 48px; 38 | line-height: 44px; 39 | bottom: 11px; 40 | right: 11px; 41 | } 42 | } 43 | 44 | .mobile .toTop, 45 | .tablet .toTop{ 46 | display: none!important; 47 | } 48 | 49 | 50 | -------------------------------------------------------------------------------- /documentation/sass/_variables.scss: -------------------------------------------------------------------------------- 1 | //======================================================== 2 | // Variables 3 | //========================================================= 4 | $color-1: #f44336; 5 | 6 | $fnt-fam-1: 'Roboto', sans-serif; 7 | $body-font: 400 14px/26px $fnt-fam-1; 8 | -------------------------------------------------------------------------------- /documentation/sass/grid.scss: -------------------------------------------------------------------------------- 1 | @import "_normalize.scss"; 2 | @import "_mixins.scss"; 3 | 4 | // Core variables and mixins 5 | 6 | // ------------------------- 7 | $gridColumns: 12; 8 | 9 | //Default 1200px min 10 | $gridColumnWidth: 70px; 11 | $gridGutterWidth: 30px; 12 | 13 | //940px grid 14 | $gridColumnWidth980: 60px; 15 | $gridGutterWidth980: 20px; 16 | 17 | // 768px-979px 18 | $gridColumnWidth768: 44px; 19 | $gridGutterWidth768: 20px; 20 | 21 | // Fluid 22 | $fluidGridColumnWidth: 8.3333333333333333333%; 23 | 24 | @mixin buildGrid($gridColumnWidth, $gridGutterWidth) { 25 | 26 | .container { 27 | width: ($gridColumnWidth * $gridColumns) + ($gridGutterWidth * ($gridColumns - 1)); 28 | } 29 | 30 | .container { 31 | .row { 32 | margin-left: $gridGutterWidth * -1; 33 | } 34 | 35 | [class*="grid_"] { 36 | float: left; 37 | min-height: 1px; // prevent collapsing columns 38 | margin-left: $gridGutterWidth; 39 | } 40 | 41 | @for $i from 1 to $gridColumns + 1 { 42 | .grid_#{$i} { 43 | width: ($gridColumnWidth * $i) + ($gridGutterWidth * ($i - 1)); 44 | } 45 | } 46 | 47 | @for $i from 1 to $gridColumns + 1 { 48 | .preffix_#{$i} { 49 | margin-left: ($gridColumnWidth * $i) + ($gridGutterWidth * ($i + 1)); 50 | } 51 | } 52 | } 53 | } 54 | 55 | // Grid System 56 | // ----------- 57 | .container { 58 | margin-right: auto; 59 | margin-left: auto; 60 | @include box-sizing(border-box); 61 | @extend %clearfix; 62 | } 63 | 64 | .row { 65 | @extend %clearfix; 66 | } 67 | 68 | 69 | @include buildGrid($gridColumnWidth, $gridGutterWidth); 70 | 71 | .page { 72 | padding-left: 64px; 73 | padding-right: 300px; 74 | } 75 | 76 | @media (max-width: 1599px) { 77 | .page{ 78 | padding-left: 64px; 79 | padding-right: 64px; 80 | } 81 | } 82 | 83 | @media (min-width: 1068px) and (max-width: 1301px) { 84 | @include buildGrid($gridColumnWidth980, $gridGutterWidth980); 85 | } 86 | 87 | @media (min-width: 878px) and (max-width: 1067px) { 88 | @include buildGrid($gridColumnWidth768, $gridGutterWidth768); 89 | } 90 | 91 | @media (max-width: 877px) { 92 | .container { 93 | width: 100%; 94 | padding: 0; 95 | } 96 | .container .row { 97 | margin-left: 0; 98 | } 99 | 100 | .row + .row, 101 | [class*="grid_"] + [class*="grid_"] { 102 | margin-top: 30px; 103 | } 104 | 105 | .container, .container-fluid { 106 | [class*="grid_"] { 107 | float: none; 108 | display: block; 109 | width: 100%; 110 | margin-left: 0; 111 | } 112 | } 113 | } 114 | 115 | @media (max-width: 479px) { 116 | .page{ 117 | padding-left: 20px; 118 | padding-right: 20px; 119 | } 120 | } 121 | 122 | %clearfix { 123 | &:before, 124 | &:after { 125 | display: table; 126 | content: ""; 127 | line-height: 0; 128 | } 129 | 130 | &:after { 131 | clear: both; 132 | } 133 | } 134 | 135 | -------------------------------------------------------------------------------- /documentation/section.php: -------------------------------------------------------------------------------- 1 | Demo 2 | 3 |
      4 | This script work demonstration can be viewed in the section below. 5 |
      6 | 7 |

      8 | The demonstration is also available in a separate window: 9 | Open in a new tab 10 |

      11 | 12 | -------------------------------------------------------------------------------- /documentation/sections/demo/ru/__description.php: -------------------------------------------------------------------------------- 1 |

      Демо

      2 | 3 |
      4 | Демонстрацию работы скрипта можно увидеть в секции ниже. 5 |
      6 | 7 |

      8 | Также демонстрация доступна и в отдельном окне: 9 | Открыть в новой вкладке 10 |

      11 | 12 | -------------------------------------------------------------------------------- /documentation/sections/demo/section.json: -------------------------------------------------------------------------------- 1 | { 2 | "id":"demo", 3 | "translations": 4 | { 5 | "en":"Demo", 6 | "ru":"Демо" 7 | }, 8 | "articles": { 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /documentation/sections/example/section.json: -------------------------------------------------------------------------------- 1 | { 2 | "id":"example", 3 | "translations": 4 | { 5 | "en":"Connection example", 6 | "ru":"Пример подключения" 7 | }, 8 | "articles": { 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /documentation/sections/howtouse/en/__description.php: -------------------------------------------------------------------------------- 1 |

      How to exploit

      2 | 3 |
      4 | Below are the principles of working with the script 5 |
      6 | 7 |

      8 | Note: First of all, remember that RD Navbar is primarily a builder. There are practically no special rules in its layout or styling. The whole principle of working with RD Navbar is to stylize and adjust the corresponding navigation layouts, which also depend exclusively on the design and features of the product in which the script is implemented. 9 |

      10 | 11 |

      12 | Git repository 13 |

      14 | 15 |

      16 | Before becoming familiar with the information below, be sure to download the script itself and the demo from our public repository: 17 | Clickable 18 |

      -------------------------------------------------------------------------------- /documentation/sections/howtouse/en/classes.php: -------------------------------------------------------------------------------- 1 |

      2 | Class Map 3 |

      4 | 5 |

      6 | RD Navbar uses some CSS classes to display either changes in the navigation panel. The full list of available classes is as follows: 7 |

      8 | 9 |
        10 |
      • 11 | .rd-navbar - the main class for navbar creation 12 |
      • 13 |
      • 14 | .rd-navbar-dropdown - the class that is used to create a dropdown menu 15 |
      • 16 |
      • 17 | .rd-navbar-megamenu - the class that is used to create a megamenu 18 |
      • 19 |
      • 20 | [data-rd-navbar-toggle] - the data attribute used to create the switches 21 |
      • 22 |
      • 23 | .rd-navbar-submenu - the class that is added to the parent element .rd-navbar-dropdown, .rd-navbar-megamenu 24 |
      • 25 |
      • 26 | .rd-navbar-submenu-toggle - the class that is used to create the switch of the submenu. 27 |
      • 28 |
      • 29 | .rd-navbar--has-dropdown - the class that is added to the parent element .rd-navbar-dropdown 30 |
      • 31 |
      • 32 | .rd-navbar--has-megamenu - the class that is added to the parent element .rd-navbar-megamenu 33 |
      • 34 |
      • 35 | .focus - the class that is added to the .rd-navbar-submenu when the mouse is clicked on the hover 36 |
      • 37 |
      • 38 | .opened - the class that is added to the .rd-navbar-submenu when switching the display of the submenu 39 |
      • 40 |
      • 41 | .rd-navbar--is-clone - the class that is added to the clone-element of navbar 42 |
      • 43 |
      • 44 | .rd-navbar--is-stuck - the class that is added when sticking of the Navbar to the original element or clone-element, depending on the settings. 45 |
      • 46 |
      47 | 48 |

      49 | All classes that are not listed in the list above are exclusively optional and do not affect the operation of the RD Navbar. 50 |

      -------------------------------------------------------------------------------- /documentation/sections/howtouse/en/general.php: -------------------------------------------------------------------------------- 1 |

      2 | Principles of working with the script 3 |

      4 | 5 |

      6 | There may be absolutely any HTML layout for the creation of navigation. Everything depends solely on the template’s design and fantasy of the coder. However, all the navigation elements should be located inside the block with the class .rd-navbar 7 |

      8 | 9 | 10 |
      11 | <!-- RD Navbar -->
      12 | <nav class="rd-navbar">
      13 |     ...
      14 | </nav>
      15 | <!-- END RD Navbar-->
      16 | 
      17 |
      18 | 19 |

      20 | The principle of working with navbar is based on the usage of various layouts. The demo, for example, shows how one and the same markup looks on the mobile (.rd-navbar-fixed) and desktop (.rd-navbar-static) layouts. The titles of layouts can also be completely diverse, and up to the developer. 21 |

      22 | 23 |

      24 | In general, the realization of any navigation in the template using RD Navbar is reduced to using the following functional units of the script: 25 |

      26 | 27 |
        28 |
      • 29 | Adjustment of navbar’s layouts for the appropriate resolutions 30 |
      • 31 |
      • 32 | Sticky panel setting 33 |
      • 34 |
      • 35 | Navigation setting: dropdown and megamenus. 36 |
      • 37 |
      • 38 | Setting switches (toggles) 39 |
      • 40 |
      • 41 | Linker Adjustment 42 |
      • 43 |
      • 44 | Single page navigation adjustment 45 |
      • 46 |
      -------------------------------------------------------------------------------- /documentation/sections/howtouse/en/layouts.php: -------------------------------------------------------------------------------- 1 |

      2 | Adjustment of the navbar’s layouts 3 |

      4 | 5 |

      6 | RD Navbar is inherently responsive. While the vast majority of third-party solutions use the backup navigation to display desktop and mobile navigation versions, RD Navbar offers a radically different solution. 7 |

      8 | 9 |

      10 | The essence of working with Navbar layouts is to define specific layout classes (.rd-navbar-fixed, .rd-navbar-static, .rd-navbar-sidebar, etc.), which are hung on the main Navbar element with the class .rd- Navbar, depending on the current window size of the user’s browser. 11 |

      12 | 13 |

      14 | This approach allows you to quickly and without extra effort perform a complete restyling of navigation, depending on the specific resolution. 15 |

      16 | 17 |

      18 | To create a responsive navigation, navbar's layout classes are defined in a special responsive object when the script is initialized. 19 |

      20 | 21 | 22 |
      23 | ...
      24 |    o = $('.rd-navbar');
      25 | 
      26 |    o.RDNavbar({
      27 |       responsive: {
      28 |          0: {
      29 |             layout: 'rd-navbar-fixed'
      30 |          },
      31 |          768: {
      32 |             layout: 'rd-navbar-fullwidth'
      33 |          }
      34 |          1200: {
      35 |             layout: 'rd-navbar-static'
      36 |          }
      37 |       }
      38 |    })
      39 | ...
      40 | 
      41 |
      42 | 43 |

      44 | If necessary, you can also specify additional navbar's layouts that will be displayed exclusively on the Touch devices using the deviceLayout attribute. 45 |

      46 | 47 | 48 |
      49 | ...
      50 |    o = $('.rd-navbar');
      51 | 
      52 |    o.RDNavbar({
      53 |       responsive: {
      54 |          0: {
      55 |             layout: 'rd-navbar-fixed'
      56 |             deviceLayout: 'rd-navbar-fixed'
      57 |          },
      58 |          768: {
      59 |             layout: 'rd-navbar-fullwidth'
      60 |             deviceLayout: 'rd-navbar-fixed'
      61 |          }
      62 |          1200: {
      63 |             layout: 'rd-navbar-static'
      64 |             deviceLayout: 'rd-navbar-fixed'
      65 |          }
      66 |       }
      67 |    })
      68 | ...
      69 | 
      70 |
      71 | 72 |

      73 | Thus, you can achieve the effect of matching navigation styling, for example, to the Material Design standard on mobile devices. 74 |

      75 | 76 |

      77 | Also, if necessary, you can specify a responsive object using HTML. To do this, you should specify the following attributes 78 |

      79 | 80 | 81 |
      82 | <!-- RD Navbar -->
      83 | <nav class="rd-navbar" data-layout="rd-navbar-fixed" data-sm-layout="rd-navbar-fullwidth"
      84 |                         data-lg-layout="rd-navbar-static" data-deviceLayout="rd-navbar-fixed">
      85 | 
      86 |
      87 | 88 | 89 | 90 | 91 | -------------------------------------------------------------------------------- /documentation/sections/howtouse/en/links.php: -------------------------------------------------------------------------------- 1 |

      2 | Linker Adjustment 3 |

      4 | 5 |

      6 | RD Navbar also supports the ability to link the current layout to other elements. So, for example, in the demo, navbar's layout is linked to the html tag for the demonstration. Thus, when changing the Navbar's Layout, the Layout class changes not only on the Navbar itself but also on linked elements with the addition of the suffix -linked. 7 |

      8 | 9 |

      10 | So, with the active .rd-navbar-fixed, the .rd-navbar-fixed-linked class will be added to the html tag. 11 |

      12 | 13 |

      14 | This functional will be very useful for shops where a product filter is usually displayed outside the navigation bar in the form of a sidebar. Using the linker RD Navbar, it is very easy and convenient to visually place this sidebar on the navbar panel as a product filter switch. 15 |

      16 | 17 |

      18 | In order to link the corresponding elements of the page outside the navbar, you need to use the linkedElements attribute, where an array of target HTML elements or CSS selectors for their selection is passed as the value. 19 |

      20 | 21 | 22 |
      23 | ...
      24 |    o = $('.rd-navbar');
      25 | 
      26 |    o.RDNavbar({
      27 |       linkedElements: [".magento-sidebar", $('.something-else')[0]]
      28 |    })
      29 | ...
      30 | 
      31 |
      -------------------------------------------------------------------------------- /documentation/sections/howtouse/en/navigation.php: -------------------------------------------------------------------------------- 1 |

      2 | Navigation setting 3 |

      4 | 5 |

      6 | RD Navbar supports usual drop-down menus as well as megamenus. 7 |

      8 | 9 |

      10 | In order to define the appropriate element as a drop-down menu or a megamenu, you need to use the .rd-navbar-dropdown and .rd-navbar-megamenu classes. 11 |

      12 | 13 |

      14 | Besides, RD Navbar supports the setting of interaction rules with menu items that contain submenus. 15 |

      16 | 17 |

      18 | For example, all menu items from a submenu contain the appropriate switches for displaying the submenu, by default. But, if necessary, you can specify the submenu display no the hover using the mouse. To do this, you must use the attribute focusOnHover: true for the corresponding Navbar layout class. 19 |

      20 | 21 |

      22 | For example, it's very convenient to display the submenu on the Hover on the desktop layout, while on the mobile one it does not make any sense. Using, responsive object navbar, we can very easily manipulate the behavior of the submenu. 23 |

      24 | 25 | 26 |
      27 | ...
      28 |    o = $('.rd-navbar');
      29 | 
      30 |    o.RDNavbar({
      31 |       responsive: {
      32 |          0: {
      33 |             layout: 'rd-navbar-fixed',
      34 |             focusOnHover: false
      35 |          },
      36 |          992: {
      37 |             layout: 'rd-navbar-static',
      38 |             focusOnHover: true
      39 |          }
      40 |       }
      41 |    })
      42 | ...
      43 | 
      44 |
      45 | 46 |

      47 | Also, for the simplicity and convenience of the navigation creation, you need some service classes on the elements and additional switch elements for the submenu. You don’t need to create these service elements and classes manually. The script will do it itself, simply set the flag domAppend: true. 48 |

      49 | 50 | 51 |
      52 | ...
      53 |    o = $('.rd-navbar');
      54 | 
      55 |    o.RDNavbar({
      56 |       domAppend: true
      57 |    })
      58 | ...
      59 | 
      60 |
      -------------------------------------------------------------------------------- /documentation/sections/howtouse/en/onepage.php: -------------------------------------------------------------------------------- 1 |

      2 | Single page navigation adjustment 3 |

      4 | 5 |

      6 | RD Navbar supports the functional for creating single page anchor page navigation. 7 |

      8 | 9 |

      10 | To implement anchor navigation on the page, you need to specify the hash tag of the identifier of the target anchor section with the attribute data-type = "anchor" as the value of the href attribute in the navigation links. 11 |

      12 | 13 | 14 |
      15 | ...
      16 |    <a href="#about">About</a>
      17 | ...
      18 | 
      19 | ...
      20 |    <section id="about" data-type="anchor">
      21 |        ...
      22 |    </section>
      23 | ...
      24 | 
      25 |
      -------------------------------------------------------------------------------- /documentation/sections/howtouse/en/stickup.php: -------------------------------------------------------------------------------- 1 |

      2 | Sticky panel setting 3 |

      4 | 5 |

      6 | In order to enable navbar sticking while scrolling, you need to use the attribute stickUp: true 7 |

      8 | 9 | 10 |
      11 | ...
      12 |    o = $('.rd-navbar');
      13 | 
      14 |    o.RDNavbar({
      15 |       responsive: {
      16 |          0: {
      17 |             layout: 'rd-navbar-fixed',
      18 |             stickUp: false
      19 |          },
      20 |          768: {
      21 |             layout: 'rd-navbar-fullwidth',
      22 |             stickUp: true
      23 |          }
      24 |          1200: {
      25 |             layout: 'rd-navbar-static',
      26 |             stickUp: true
      27 |          }
      28 |       }
      29 |    })
      30 | ...
      31 | 
      32 |
      33 | 34 | 35 |

      36 | The sticky panel in the RD Navbar has two modes of operation: the original panel sticking and the clone-element sticking. To determine the sticking mode, you need to use the stickUpClone (true | false) attribute and specify the offset sticking from the top position of the navbar in the script settings. The stickUp attribute must be set in true. 37 |

      38 | 39 | 40 |
      41 | ...
      42 |    o = $('.rd-navbar');
      43 | 
      44 |    o.RDNavbar({
      45 |       responsive: {
      46 |          0: {
      47 |             layout: 'rd-navbar-fixed',
      48 |             stickUp: false
      49 |          },
      50 |          768: {
      51 |             layout: 'rd-navbar-fullwidth',
      52 |             stickUp: true,
      53 |             stickUpClone: true,
      54 |             stickUpOffset: '100%'
      55 |          }
      56 |          1200: {
      57 |             layout: 'rd-navbar-static',
      58 |             stickUp: true,
      59 |             stickUpClone: true,
      60 |             stickUpOffset: '100%'
      61 |          }
      62 |       }
      63 |    })
      64 | ...
      65 | 
      66 |
      67 | 68 |

      69 | So, in this example, to create the sticking effect of Navbar, its clone version will be used as soon as the Navbar is completely scrolled on the page. 70 |

      71 | 72 |

      73 | Also, if necessary, you can specify a responsive object using HTML. To do this, you must specify the following attributes 74 |

      75 | 76 | 77 |
      78 | <!-- RD Navbar -->
      79 | <nav class="rd-navbar" data-stick-up="true" data-md-stick-up="true" data-lg-stick-up="true">
      80 | 
      81 |
      82 | 83 | 84 | -------------------------------------------------------------------------------- /documentation/sections/howtouse/en/toggles.php: -------------------------------------------------------------------------------- 1 |

      2 | Setting switches (toggles) 3 |

      4 | 5 |

      6 | RD Navbar contains a very convenient system of toggles that can be used in various situations, for example, when you need to show / hide the navigation menu or search, or any other element of navbar. 7 |

      8 | 9 |

      10 | To create a switch, use the following markup 11 |

      12 | 13 | 14 |
      15 | ...
      16 |    <button data-rd-navbar-toggle=".element-1, #element-2, [data-type='element-3']."></button>
      17 | ...
      18 | 
      19 |
      20 | 21 |

      22 | , where data-rd-navbar-toggle contains the most common css selector of elements for which a toggle is needed. 23 |

      24 | 25 |

      26 | When the switch is activated, an .active class is hung on the element, which allows you to perform various manipulations with it: move, hide, display, zoom, etc. 27 |

      28 | 29 |

      30 | For example, in the demo, the toggles are used to display / hide menus, carts, search and dropdown with additional links. 31 |

      32 | -------------------------------------------------------------------------------- /documentation/sections/howtouse/ru/__description.php: -------------------------------------------------------------------------------- 1 |

      Как использовать

      2 | 3 |
      4 | Ниже описаны принципы работы со скриптом 5 |
      6 | 7 |

      8 | Обратите внимание: Прежде всего стоит запомнить, что RD Navbar - это прежде всего конструктор. 9 | В его разметке или стилизации нет практически никаких особенных правил. Весь принцип работы с RD Navbar сводится 10 | к стилизации и настройке соответствующих лейаутов навигации, которые также зависят исключительно от дизайна и особенностей 11 | продукта, в котором скрипт внедряется. 12 |

      13 | 14 |

      15 | Git репозиторий 16 |

      17 | 18 |

      19 | Прежде чем ознакомиться с информацией ниже, обязательно скачайте сам скрипт и демо из нашего публичного репозитория: 20 | Кликабельно 21 |

      -------------------------------------------------------------------------------- /documentation/sections/howtouse/ru/classes.php: -------------------------------------------------------------------------------- 1 |

      2 | Карта классов 3 |

      4 | 5 |

      6 | RD Navbar использует некоторые css классы для отображения тех или инных изменений в навигационной панели. 7 | Полный список доступных классов представлен ниже: 8 |

      9 | 10 |
        11 |
      • 12 | .rd-navbar - основной класс для создания навбара 13 |
      • 14 |
      • 15 | .rd-navbar-dropdown - класс, который используется для создания выпадающего меню 16 |
      • 17 |
      • 18 | .rd-navbar-megamenu - класс, который используется для создания мегаменю 19 |
      • 20 |
      • 21 | [data-rd-navbar-toggle] - дата-атрибут, который используется для создания переключателей 22 |
      • 23 |
      • 24 | .rd-navbar-submenu - класс, который добавляется на родительский элемент .rd-navbar-dropdown, .rd-navbar-megamenu 25 |
      • 26 |
      • 27 | .rd-navbar-submenu-toggle - класс, который используется для создания переключателя подменю. 28 |
      • 29 |
      • 30 | .rd-navbar--has-dropdown - класс, который добавляется на родительский элемент .rd-navbar-dropdown 31 |
      • 32 |
      • 33 | .rd-navbar--has-megamenu - класс, который добавляется на родительский элемент .rd-navbar-megamenu 34 |
      • 35 |
      • 36 | .focus - класс, который добавляется на .rd-navbar-submenu при ховере мышью 37 |
      • 38 |
      • 39 | .opened - класс, который добавляется на .rd-navbar-submenu при переключении отображения субменю 40 |
      • 41 |
      • 42 | .rd-navbar--is-clone - класс, который добавляется на клон-элемент навбара 43 |
      • 44 |
      • 45 | .rd-navbar--is-stuck - класс, который добавляется при прилипании навбара на оригинальный элемент или 46 | клон-элемент, в зависимости от настроек. 47 |
      • 48 |
      49 | 50 |

      51 | Все классы, которые не указаны в списке выше являются сугубо опциональными и никак не влияют на работу RD Navbar. 52 |

      -------------------------------------------------------------------------------- /documentation/sections/howtouse/ru/general.php: -------------------------------------------------------------------------------- 1 |

      2 | Принципы работы со скриптом 3 |

      4 | 5 |

      6 | HTML Разметка для создания навигации может быть совершенно любой. Все зависит исключительно от дизайна 7 | шаблона и фантазии кодера. Тем не менее, все элементы навигации должны располагаться внутри блока с классом .rd-navbar 8 |

      9 | 10 | 11 |
      12 | <!-- RD Navbar -->
      13 | <nav class="rd-navbar">
      14 |     ...
      15 | </nav>
      16 | <!-- END RD Navbar-->
      17 | 
      18 |
      19 | 20 |

      21 | Принцип работы с навбаром основан на использовании различных лейаутов. В демо, для примера, показано, как одна и также 22 | разметка выглядит в мобильном (.rd-navbar-fixed) и десктопном (.rd-navbar-static) лейаутах. Сами названия лейаутов также 23 | могут быть совершенно любыми, на усмотрение разработчика. 24 |

      25 | 26 |

      27 | В общем виде, реализация любой навигации в шаблоне с использованием RD Navbar сводится к использованию следующих функциональных 28 | единиц скрипта: 29 |

      30 | 31 |
        32 |
      • 33 | Настройка лейаутов навбара для соответствующих разрешений 34 |
      • 35 |
      • 36 | Настройка прилипающей панели 37 |
      • 38 |
      • 39 | Настройка навигации: выпадающие и мега- меню. 40 |
      • 41 |
      • 42 | Настройка переключатей (тоглов) 43 |
      • 44 |
      • 45 | Настройка линковщика 46 |
      • 47 |
      • 48 | Настройка одностраничной навигации 49 |
      • 50 |
      -------------------------------------------------------------------------------- /documentation/sections/howtouse/ru/layouts.php: -------------------------------------------------------------------------------- 1 |

      2 | Настройка лейаутов навбара 3 |

      4 | 5 |

      6 | RD Navbar по своей природе ориентирован на респонсивность. В то время, когда подавляющее количество сторонних 7 | решений использует дублирование навигации для отображения десктопной и мобильной версий навигации, RD Navbar 8 | предлагает кардинально другое решение. 9 |

      10 | 11 |

      12 | Суть работы с лейаутами навбара сводится к определению специфических классов лейаутов (.rd-navbar-fixed, 13 | .rd-navbar-static, .rd-navbar-sidebar и т.д.), которые навешиваются на основной элемент навбара с классом .rd-navbar, в зависимости 14 | от текущего размера окна браузера у пользователя. 15 |

      16 | 17 |

      18 | Такой подход позволяет быстро и без особых усилий выполнять полную рестилизацию навигации в зависимости от 19 | определенного разрешения. 20 |

      21 | 22 |

      23 | Для создания респонсивной навигации классы лейаутов навбара определяются в специальном объекте responsive при инициализации 24 | скрипта. 25 |

      26 | 27 | 28 |
      29 | ...
      30 |    o = $('.rd-navbar');
      31 | 
      32 |    o.RDNavbar({
      33 |       responsive: {
      34 |          0: {
      35 |             layout: 'rd-navbar-fixed'
      36 |          },
      37 |          768: {
      38 |             layout: 'rd-navbar-fullwidth'
      39 |          }
      40 |          1200: {
      41 |             layout: 'rd-navbar-static'
      42 |          }
      43 |       }
      44 |    })
      45 | ...
      46 | 
      47 |
      48 | 49 |

      50 | Также, в случае необходимости, можно указать дополнительные лейауты навбара, которые будут отображаться исключительно 51 | на Touch устройствах, воспользовавшись атрибутом deviceLayout. 52 |

      53 | 54 | 55 |
      56 | ...
      57 |    o = $('.rd-navbar');
      58 | 
      59 |    o.RDNavbar({
      60 |       responsive: {
      61 |          0: {
      62 |             layout: 'rd-navbar-fixed'
      63 |             deviceLayout: 'rd-navbar-fixed'
      64 |          },
      65 |          768: {
      66 |             layout: 'rd-navbar-fullwidth'
      67 |             deviceLayout: 'rd-navbar-fixed'
      68 |          }
      69 |          1200: {
      70 |             layout: 'rd-navbar-static'
      71 |             deviceLayout: 'rd-navbar-fixed'
      72 |          }
      73 |       }
      74 |    })
      75 | ...
      76 | 
      77 |
      78 | 79 |

      80 | Таким образом, можно добиться эффекта соответствия стилизации навигации, например, стандарту Material Design на мобильных устройствах. 81 |

      82 | 83 |

      84 | Также, в случае необходимости, можно указать responsive object с помощью HTML. Для этого необходимо указать следующие аттрибуты 85 |

      86 | 87 | 88 |
      89 | <!-- RD Navbar -->
      90 | <nav class="rd-navbar" data-layout="rd-navbar-fixed" data-sm-layout="rd-navbar-fullwidth"
      91 |                         data-lg-layout="rd-navbar-static" data-deviceLayout="rd-navbar-fixed">
      92 | 
      93 |
      94 | 95 | 96 | 97 | 98 | -------------------------------------------------------------------------------- /documentation/sections/howtouse/ru/links.php: -------------------------------------------------------------------------------- 1 |

      2 | Настройка линковщика 3 |

      4 | 5 |

      6 | RD Navbar также поддерживает возможность линкования текущего лейаута на другие элементы. Так, например, в демо, лейаут навбара 7 | залинкован на тег html для демонстрации. Таким образом, при смене лейаута навбара, класс лейаута изменяется не только на самом 8 | навбаре, но и на залинкованых элементах с добавлением посфикса -linked. 9 |

      10 | 11 |

      12 | Так, при активном лейауте .rd-navbar-fixed, на тег html будет добавлен класс .rd-navbar-fixed-linked 13 |

      14 | 15 |

      16 | Данный функционал будет очень полезен для магазинов, где вне панели навигации в виде сайдбара обычно отображается 17 | фильтр продуктов. Используя линковщик RD Navbar, можно очень легко и удобно визуально поместить данный сайдбар 18 | на панель навбара в виде переключателя фильтра продуктов. 19 |

      20 | 21 |

      22 | Для того, чтобы залинковать соответствующие элементы страницы вне навбара необходимо воспользоваться атрибутом linkedElements, 23 | где в качестве значения передается массив целевых HTML элементов или css селекторы для их выборки. 24 |

      25 | 26 | 27 |
      28 | ...
      29 |    o = $('.rd-navbar');
      30 | 
      31 |    o.RDNavbar({
      32 |       linkedElements: [".magento-sidebar", $('.something-else')[0]]
      33 |    })
      34 | ...
      35 | 
      36 |
      -------------------------------------------------------------------------------- /documentation/sections/howtouse/ru/navigation.php: -------------------------------------------------------------------------------- 1 |

      2 | Настройка навигации 3 |

      4 | 5 |

      6 | RD Navbar поддерживает, как и обычные выпадающие меню, так и мегаменю. 7 |

      8 | 9 |

      10 | Для того, чтобы определить соотвествующий элемент как выпадающее меню или мегаменю, необходимо воспользоваться классами 11 | .rd-navbar-dropdown и .rd-navbar-megamenu. 12 |

      13 | 14 |

      15 | По мимо это, RD Navbar поддерживает настройку правил взаимодествия с пунктами меню, которые содержат подменю. 16 |

      17 | 18 |

      19 | Так, например, все пункты меню с подменю, по умолчанию содержат соотвествующие переключатели для отображения подменю. 20 | Но, в случае необходимости можно указать отображение подменю и при ховере мышью. Для этого необходимо воспользоваться 21 | атрибутом focusOnHover: true для соответствующего класса лейаута навбара. 22 |

      23 | 24 |

      25 | Например, на десктопном лейауте очень удобно отображать подменю при ховере, в то время, когда на мобильном - это не имеет 26 | никакого смысла. Используя, responsive объект навбара, мы очень легко можем манипулировать поведением подменю. 27 |

      28 | 29 | 30 |
      31 | ...
      32 |    o = $('.rd-navbar');
      33 | 
      34 |    o.RDNavbar({
      35 |       responsive: {
      36 |          0: {
      37 |             layout: 'rd-navbar-fixed',
      38 |             focusOnHover: false
      39 |          },
      40 |          992: {
      41 |             layout: 'rd-navbar-static',
      42 |             focusOnHover: true
      43 |          }
      44 |       }
      45 |    })
      46 | ...
      47 | 
      48 |
      49 | 50 |

      51 | Также, для простоты и удобства создания навигации необходимые некоторые служебные классы на элементах и дополнительные 52 | элементы-переключатели для подменю. Данные служебные элементы и классы можно не создавать вручную. Скрипт сделает это сам, 53 | достаточно просто установить флаг domAppend: true. 54 |

      55 | 56 | 57 |
      58 | ...
      59 |    o = $('.rd-navbar');
      60 | 
      61 |    o.RDNavbar({
      62 |       domAppend: true
      63 |    })
      64 | ...
      65 | 
      66 |
      -------------------------------------------------------------------------------- /documentation/sections/howtouse/ru/onepage.php: -------------------------------------------------------------------------------- 1 |

      2 | Настройка одностраничной навигации 3 |

      4 | 5 |

      6 | RD Navbar поддерживает функционал для создания одностраничной якорной навигации по странице. 7 |

      8 | 9 |

      10 | Для реализации якорной навигации на странице необходимо в качестве значения атрибута href ссылки в навигации указать хеш тег 11 | идентификатора целевой якорной секции с атрибутом data-type="anchor". 12 |

      13 | 14 | 15 |
      16 | ...
      17 |    <a href="#about">About</a>
      18 | ...
      19 | 
      20 | ...
      21 |    <section id="about" data-type="anchor">
      22 |        ...
      23 |    </section>
      24 | ...
      25 | 
      26 |
      -------------------------------------------------------------------------------- /documentation/sections/howtouse/ru/stickup.php: -------------------------------------------------------------------------------- 1 |

      2 | Настройка прилипающей панели 3 |

      4 | 5 |

      6 | Для того, чтобы включить прилипание навбара при скролле, необходимо воспользоваться атрибутом stickUp: true. 7 |

      8 | 9 | 10 |
      11 | ...
      12 |    o = $('.rd-navbar');
      13 | 
      14 |    o.RDNavbar({
      15 |       responsive: {
      16 |          0: {
      17 |             layout: 'rd-navbar-fixed',
      18 |             stickUp: false
      19 |          },
      20 |          768: {
      21 |             layout: 'rd-navbar-fullwidth',
      22 |             stickUp: true
      23 |          }
      24 |          1200: {
      25 |             layout: 'rd-navbar-static',
      26 |             stickUp: true
      27 |          }
      28 |       }
      29 |    })
      30 | ...
      31 | 
      32 |
      33 | 34 | 35 |

      36 | Прилипающая панель в RD Navbar имеет два режима работы: прилипание оригинальной панели и прилипание клон-эелемента. Для 37 | определения 38 | режима прилипания необходимо воспользоваться атрибутом stickUpClone (true|false) и указать оффсет прилипания от верхней позиции навбара 39 | в настройках скрипта. При этом атрибут stickUp должен быть установлен в true. 40 |

      41 | 42 | 43 |
      44 | ...
      45 |    o = $('.rd-navbar');
      46 | 
      47 |    o.RDNavbar({
      48 |       responsive: {
      49 |          0: {
      50 |             layout: 'rd-navbar-fixed',
      51 |             stickUp: false
      52 |          },
      53 |          768: {
      54 |             layout: 'rd-navbar-fullwidth',
      55 |             stickUp: true,
      56 |             stickUpClone: true,
      57 |             stickUpOffset: '100%'
      58 |          }
      59 |          1200: {
      60 |             layout: 'rd-navbar-static',
      61 |             stickUp: true,
      62 |             stickUpClone: true,
      63 |             stickUpOffset: '100%'
      64 |          }
      65 |       }
      66 |    })
      67 | ...
      68 | 
      69 |
      70 | 71 |

      72 | Так, в данном примере, для создания эффекта прилипания навбара будет использоваться его клон-версия, 73 | как только навбар будет полностью проскролен на странице. 74 |

      75 | 76 |

      77 | Также, в случае необходимости, можно указать responsive object с помощью HTML. Для этого необходимо указать следующие аттрибуты 78 |

      79 | 80 | 81 |
      82 | <!-- RD Navbar -->
      83 | <nav class="rd-navbar" data-stick-up="true" data-md-stick-up="true" data-lg-stick-up="true">
      84 | 
      85 |
      86 | 87 | 88 | -------------------------------------------------------------------------------- /documentation/sections/howtouse/ru/toggles.php: -------------------------------------------------------------------------------- 1 |

      2 | Настройка переключателей (тоглов) 3 |

      4 | 5 |

      6 | RD Navbar содержит очень удобную систему переключателей, которые можно применять в различных ситуациях, например, в 7 | случае, когда необходимо показывать/скрывать меню навигации или поиск, или любой другой элемент навбара. 8 |

      9 | 10 |

      11 | Для создания переключателя необходимо воспользоваться следующей разметкой 12 |

      13 | 14 | 15 |
      16 | ...
      17 |    <button data-rd-navbar-toggle=".element-1, #element-2, [data-type='element-3']."></button>
      18 | ...
      19 | 
      20 |
      21 | 22 |

      23 | , где data-rd-navbar-toggle содержит самый обычный css селектор элементов, для которых необходим переключатель. 24 |

      25 | 26 |

      27 | При активации переключателя, на элемент навешивается класс .active, что позволяет выполнять различные манипуляции с ним: 28 | двигать, скрывать, отображать, увеличивать и т.д. 29 |

      30 | 31 |

      32 | Так, например, в демо, переключатели используются для отображения/скрытия меню, корзины, поиска и дропдауна с дополнительными 33 | ссылками. 34 |

      35 | -------------------------------------------------------------------------------- /documentation/sections/howtouse/section.json: -------------------------------------------------------------------------------- 1 | { 2 | "id":"howtouse", 3 | "translations": 4 | { 5 | "en": "How to use the script?", 6 | "ru":"Как использовать скрипт?" 7 | }, 8 | "articles": [ 9 | { 10 | "id": "general", 11 | "translations": { 12 | "en": "General principles", 13 | "ru": "Общие принципы" 14 | } 15 | }, 16 | { 17 | "id": "classes", 18 | "translations": { 19 | "en": "Class Map", 20 | "ru": "Карта классов" 21 | } 22 | }, 23 | { 24 | "id": "layouts", 25 | "translations": { 26 | "en": "Adjustment of the layouts", 27 | "ru": "Настройка лейаутов" 28 | } 29 | }, 30 | { 31 | "id": "stickup", 32 | "translations": { 33 | "en": "Sticky panel setting", 34 | "ru": "Настройка прилипающей панели" 35 | } 36 | }, 37 | { 38 | "id": "navigation", 39 | "translations": { 40 | "en": "Navigation setting", 41 | "ru": "Настройка навигации" 42 | } 43 | }, 44 | { 45 | "id": "toggles", 46 | "translations": { 47 | "en": "Setting switches (toggles)", 48 | "ru": "Настройка переключателей (тоглов)" 49 | } 50 | }, 51 | { 52 | "id": "links", 53 | "translations": { 54 | "en": "Linker Adjustment", 55 | "ru": "Настройка линковщика" 56 | } 57 | }, 58 | { 59 | "id": "onepage", 60 | "translations": { 61 | "en": "Single page navigation adjustment", 62 | "ru": "Настройка одностраничной навигации" 63 | } 64 | } 65 | ] 66 | } 67 | -------------------------------------------------------------------------------- /documentation/sections/introduction/en/__description.php: -------------------------------------------------------------------------------- 1 |

      Introduction

      2 | 3 |
      4 | Full-function, powerful and flexible navigation is easier now. 5 |
      6 | 7 |

      Where to start?

      8 | 9 |
        10 |
      • 11 | Click the following link to view the demonstration of this script work: 12 | Demo. 13 | . 14 |
      • 15 |
      • 16 | The script itself is available in our public repository: 17 | Git 18 |
      • 19 |
      20 | 21 |

      22 | Supported browsers 23 |

      24 | 25 |

      26 | The script was tested on Windows, Linux and MacOS systems and supports the following browsers: 27 |

      28 | 29 |
        30 |
      • 31 | 32 | 33 |
        9+
        34 |
      • 35 |
      • 36 | 37 | 38 |
        40+
        39 |
      • 40 |
      • 41 | 42 | 43 |
        35+
        44 |
      • 45 |
      • 46 | 47 | 48 |
        8+
        49 |
      • 50 |
      51 | 52 |

      53 | The test was not executed in other browsers. Write our author about all found bugs using the contact information provided below. 54 |

      55 | 56 |

      Requirements

      57 | 58 |

      59 | You need to satisfy the following requirements for the script work: 60 |

      61 | 62 |
        63 |
      • 64 | jQuery 1.11+ 65 |
      • 66 |
      • 67 | jQuery Easing 1.1+ (For One Page navigation) 68 |
      • 69 |
      70 | 71 |

      72 | About the author 73 |

      74 | 75 |

      76 | Gusarov Yevgeniy (Diversant | StMechanus) 77 |

      78 | 79 |
      80 |
      E-mail
      81 |
      stmechanus@gmail.com
      82 |
      83 |
      84 |
      Skype
      85 |
      stmechanus@gmail.com
      86 |
      87 |
      88 |
      Bitrix
      89 |
      Diversant
      90 |
      91 |
      92 |
      LinkedIn
      93 |
      94 | Gusarov Yevgeniy 95 |
      96 |
      97 | -------------------------------------------------------------------------------- /documentation/sections/introduction/ru/__description.php: -------------------------------------------------------------------------------- 1 |

      Введение

      2 | 3 |
      4 | Полнофункциональная, мощная и гибкая навигация - теперь проще простого. 5 |
      6 | 7 |

      С чего начать?

      8 | 9 |
        10 |
      • 11 | Демонстрацию работы данного скрипта можно посмотреть по следующей ссылке: 12 | Демо 13 | . 14 |
      • 15 |
      • 16 | Сам скрипт доступен в нашем публичном репозитории: 17 | Git 18 |
      • 19 |
      20 | 21 | 22 |

      23 | Поддерживаемые браузеры 24 |

      25 | 26 |

      27 | Скрипт тестировался в системах Windows, Linux и MacOS и поддерживает следующие браузеры: 28 |

      29 | 30 |
        31 |
      • 32 | 33 | 34 |
        9+
        35 |
      • 36 |
      • 37 | 38 | 39 |
        40+
        40 |
      • 41 |
      • 42 | 43 | 44 |
        35+
        45 |
      • 46 |
      • 47 | 48 | 49 |
        8+
        50 |
      • 51 |
      52 | 53 |

      54 | Тестирование в других браузерах не производилось. О всех найденых багах пишите автору используя контактную 55 | информацию, предоставленную ниже. 56 |

      57 | 58 |

      Зависимости

      59 | 60 |

      61 | Для работоспособности скрипта требуется удовлеворение следующих зависимостей: 62 |

      63 | 64 |
        65 |
      • 66 | jQuery 1.11+ 67 |
      • 68 |
      • 69 | jQuery Easing 1.1+ (Для работы One Page навигации) 70 |
      • 71 |
      72 | 73 |

      74 | Об авторе 75 |

      76 | 77 |

      78 | Евгений Гусаров (Diversant | StMechanus) 79 |

      80 | 81 |
      82 |
      E-mail
      83 |
      stmechanus@gmail.com
      84 |
      85 |
      86 |
      Skype
      87 |
      stmechanus@gmail.com
      88 |
      89 |
      90 |
      Bitrix
      91 |
      Diversant
      92 |
      93 |
      94 |
      LinkedIn
      95 |
      96 | Евгений Гусаров 97 |
      98 |
      99 | -------------------------------------------------------------------------------- /documentation/sections/introduction/section.json: -------------------------------------------------------------------------------- 1 | { 2 | "id":"introduction", 3 | "translations": 4 | { 5 | "en":"Introduction", 6 | "ru":"Введение" 7 | }, 8 | "articles": { 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /documentation/sections/requirejs/en/__description.php: -------------------------------------------------------------------------------- 1 |

      Integration with Require.js

      2 | 3 |
      4 | The script has built-in support of AMD export for integration with Require.js. The whole process of integration combines a few simple steps. 5 |
      6 | 7 |

      8 | Require.js configuration 9 |

      10 | 11 |

      12 | First of all, you need to make sure that the configuration of the paths in require.js is correct. It is necessary to define the aliases jquery and jquery.rd-navbar. In most cases, this configuration is defined in the main application script, the path to which is defined in the date data-main attribute when connecting require.js 13 |

      14 | 15 | 16 |
      17 | <script data-main="js/main" src="js/require.js"></script>
      18 | 
      19 |
      20 | 21 |

      22 | The configuration itself must contain the following aliases for paths 23 |

      24 | 25 | 26 |
      27 | requirejs.config({
      28 |   paths: {
      29 |     "jquery": "path/to/jquery.min.js"
      30 |     "jquery.rd-navbar": "path/to/jquery.rd-navbar.min.js"
      31 |   }
      32 | });
      33 | 
      34 |
      35 | 36 |

      37 | Script initialization 38 |

      39 | 40 |

      41 | It takes you only to use the following code to initialize the script: 42 |

      43 | 44 | 45 |
      46 | requirejs(["jquery", "jquery.rd-navbar"], function($, parallax) {
      47 |   var o = $(".rd-navbar");
      48 |   o.RDNavbar({});
      49 | });
      50 | 
      51 |
      52 | 53 | -------------------------------------------------------------------------------- /documentation/sections/requirejs/ru/__description.php: -------------------------------------------------------------------------------- 1 |

      Интеграция с Require.js

      2 | 3 |
      4 | Скрипт имеет встроенную поддержку AMD экспорта для интеграции с Require.js. Весь процесс интеграции все также 5 | сводится к нескольким простым шагам. 6 |
      7 | 8 |

      9 | Конфигурация require.js 10 |

      11 | 12 |

      13 | Прежде всего вам нобходимо убедиться в правильности настройки конфигурации путей в require.js. Обязательно необходимо 14 | определить алиасы jquery и jquery.rd-navbar. В большинстве случаев, данная конфигурация определяется в главном скрипте 15 | приложения, путь к которому определяется в дата атрибуте data-main при подключении require.js 16 |

      17 | 18 | 19 |
      20 | <script data-main="js/main" src="js/require.js"></script>
      21 | 
      22 |
      23 | 24 |

      25 | Сама конфигурация должна содержать следующие алиасы для путей 26 |

      27 | 28 | 29 |
      30 | requirejs.config({
      31 |   paths: {
      32 |     "jquery": "path/to/jquery.min.js"
      33 |     "jquery.rd-navbar": "path/to/jquery.rd-navbar.min.js"
      34 |   }
      35 | });
      36 | 
      37 |
      38 | 39 |

      40 | Инициализация скрипта 41 |

      42 | 43 |

      44 | Для инициализации скрипта достаточно воспользоваться следующим кодом. 45 |

      46 | 47 | 48 |
      49 | requirejs(["jquery", "jquery.rd-navbar"], function($, parallax) {
      50 |   var o = $(".rd-navbar");
      51 |   o.RDNavbar({});
      52 | });
      53 | 
      54 |
      55 | 56 | -------------------------------------------------------------------------------- /documentation/sections/requirejs/section.json: -------------------------------------------------------------------------------- 1 | { 2 | "id":"requirejs", 3 | "translations": 4 | { 5 | "en":"Integration with Require.js", 6 | "ru":"Интеграция с Require.js" 7 | }, 8 | "articles": { 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /documentation/sections/settings/section.json: -------------------------------------------------------------------------------- 1 | { 2 | "id":"settings", 3 | "translations": 4 | { 5 | "en":"Script settings", 6 | "ru":"Настройки скрипта" 7 | }, 8 | "articles": { 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /documentation/video/framework_install.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZemezPlugins/rd-navbar/d96902f1d24e2f9d142bbaaf963e96b5651c1336/documentation/video/framework_install.mp4 -------------------------------------------------------------------------------- /documentation/video/framework_install.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZemezPlugins/rd-navbar/d96902f1d24e2f9d142bbaaf963e96b5651c1336/documentation/video/framework_install.png -------------------------------------------------------------------------------- /documentation/video/static_editor.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZemezPlugins/rd-navbar/d96902f1d24e2f9d142bbaaf963e96b5651c1336/documentation/video/static_editor.mp4 -------------------------------------------------------------------------------- /documentation/video/static_editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZemezPlugins/rd-navbar/d96902f1d24e2f9d142bbaaf963e96b5651c1336/documentation/video/static_editor.png -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # RD Navbar 2 | 3 | Powerful navigation tool. Create your own unique navigations depending on screen resolutions. 4 | 5 | Check out this [Demo](http://cms.devoffice.com/coding-dev/rd-navbar/demo/) to see it in action! 6 | 7 | Extended documentation is available here: [Documentation](http://cms.devoffice.com/coding-dev/rd-navbar/documentation/) 8 | 9 | ## Concept 10 | First of all, you need to remember. RD Navbar - is a navigation builder. It provides all functionality that you need to 11 | create your own unique navigation. 12 | 13 | ## Map of classes 14 | There are several classes that you can use for your navigation creation: 15 | 16 | * .rd-navbar - Base class for nav creation. Wrap all your nav with ``