UNPKG

browser-simple-loader

Version:
186 lines (150 loc) 5.18 kB
# browser-simple-loader **browser-simple-loader** - it's a simple html5 (based on svg) loader in browser. ![Example](data/example.gif?raw=true) ## Install ``` npm install browser-simple-loader --save ``` ## Use (recommended) Create your es6 file: ``` js // my-file.js 'use strict'; import Loader from 'browser-simple-loader'; class Test { constructor() { let loader = new Loader(); loader.show(); } } export default new Test(); ``` and then build it with [webpack](https://webpack.github.io/). Add to html page you generated script and open your page: ``` html <script src='my-bundle.js'></script> ``` You will see a Loader. ## Use in html (without build) Of course you can just include on page compiled file and use it. - download browser-simple-loader.js from /build/ folder from [project page](https://github.com/alexander-usolcev/browser-simple-loader) - added script tag with browser-simple-loader.js on your page ```html <script src="/path-to/browser-simple-loader.js"></script> <script> var loader = new window.Loader(); // window.Loader is a global object if you choose this method. loader.show(); </script> ``` ## API ### constructor() ```js import Loader from 'browser-simple-loader'; let loader = new Loader({...}); ``` or just call in browser (if you choose 'Use in html (without build)') ```js let loader = new window.Loader({...}); ``` default configuration is: ```js { size: 120, // px duration: 1, // seconds radius: 8, // px colors: [ ['#c5523f', '#f2b736'], ['#f2b736', '#499255'], ['#499255', '#1875e5'], ['#1875e5', '#c5523f'], ], templates: { style: null, // <style>....</style> loader: null // <svg>....</svg> }, container: document.getElementsByTagName('body')[0], // DOM element className: 'browser-simple-loader' // String } ``` Default templates is: templates.style ```css <style type="text/css"> .browser-simple-loader { background: rgba(255, 255, 255, 0.5); bottom: 0; left: 0; position: fixed; right: 0; top: 0; z-index: 1000; display: none; } .browser-simple-loader svg { position: fixed; left: 50%; top: 50%; z-index: 1001; margin: -${size / 2}px 0 0 -${size / 2}px; } </style> ``` templates.loader ```html <svg width="${size}px" height="${size}px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid"> <rect x="0" y="0" width="100" height="100" fill="none"></rect> <g transform="rotate(0 50 50)"> <circle r="${radius}" cx="20" cy="50" transform="translate(23.4991 -23.4991)"> <animateTransform attributeName="transform" type="translate" begin="0s" repeatCount="indefinite" dur="${duration}s" values="0 0;30 -30" keyTimes="0;1"></animateTransform> <animate attributeName="fill" dur="${duration}s" begin="0s" repeatCount="indefinite" keyTimes="0;1" values="${colors[0][0]};${colors[0][1]}"></animate> </circle> </g> <g transform="rotate(90 50 50)"> <circle r="${radius}" cx="20" cy="50" transform="translate(23.4991 -23.4991)"> <animateTransform attributeName="transform" type="translate" begin="0s" repeatCount="indefinite" dur="${duration}s" values="0 0;30 -30" keyTimes="0;1"></animateTransform> <animate attributeName="fill" dur="${duration}s" begin="0s" repeatCount="indefinite" keyTimes="0;1" values="${colors[1][0]};${colors[1][1]}"></animate> </circle> </g> <g transform="rotate(180 50 50)"> <circle r="${radius}" cx="20" cy="50" transform="translate(23.4991 -23.4991)"> <animateTransform attributeName="transform" type="translate" begin="0s" repeatCount="indefinite" dur="${duration}s" values="0 0;30 -30" keyTimes="0;1"></animateTransform> <animate attributeName="fill" dur="${duration}s" begin="0s" repeatCount="indefinite" keyTimes="0;1" values="${colors[2][0]};${colors[2][1]}"></animate> </circle> </g> <g transform="rotate(270 50 50)"> <circle r="${radius}" cx="20" cy="50" transform="translate(23.4991 -23.4991)"> <animateTransform attributeName="transform" type="translate" begin="0s" repeatCount="indefinite" dur="${duration}s" values="0 0;30 -30" keyTimes="0;1"></animateTransform> <animate attributeName="fill" dur="${duration}s" begin="0s" repeatCount="indefinite" keyTimes="0;1" values="${colors[3][0]};${colors[3][1]}"></animate> </circle> </g> </svg> ``` Create loader with own config: ```js let loader = new Loader({ size: 400, duration: 0.8, radius: 10, container: document.getElementById('my-loader-container') }); loader.show(); ``` ### show() Method to show Loader. ```js loader.show(); ``` ### hide() Method to hide Loader. ```js loader.hide(); ``` ### _static_ getInstance() Static method to get instance of Loader. ```js import Loader from 'browser-simple-loader'; ... let loader = new Loader({...}); ... Loader.getInstance(); // return result of the first new Loader(); ```