From 2323dd311603289bd972f48778d395502f2dd6e1 Mon Sep 17 00:00:00 2001 From: Raphael Fabeni Date: Sat, 15 Oct 2016 23:35:49 -0300 Subject: [PATCH 01/19] First commit 18857 bytes dist/main.min.css | 1 + dist/main.min.js | 1 + examples/index.html | 41 ------- examples/loader-ball.html | 41 ------- examples/loader-bar.html | 41 ------- examples/loader-border.html | 41 ------- examples/loader-double.html | 41 ------- favicon.ico | Bin 0 -> 32988 bytes gulpfile.js | 54 --------- index.html | 145 +++++++++++++++++++++++ package.json | 27 +++-- src/css-loader.sass | 9 -- src/general/_animations.sass | 16 --- src/general/_base.sass | 21 ---- src/general/_utils.sass | 30 ----- src/loaders/_loader-ball.sass | 51 -------- src/loaders/_loader-bar.sass | 38 ------ src/loaders/_loader-border.sass | 49 -------- src/loaders/_loader-double.sass | 36 ------ src/loaders/_loader.sass | 35 ------ 25 files changed, 536 insertions(+), 725 deletions(-) delete mode 100644 LICENSE delete mode 100644 README.md create mode 100644 assets/css/main.css create mode 100644 assets/js/main.js create mode 100644 css-loader-share.png create mode 100644 dist/main.min.css create mode 100644 dist/main.min.js delete mode 100644 examples/index.html delete mode 100644 examples/loader-ball.html delete mode 100644 examples/loader-bar.html delete mode 100644 examples/loader-border.html delete mode 100644 examples/loader-double.html create mode 100644 favicon.ico delete mode 100644 gulpfile.js create mode 100644 index.html delete mode 100644 src/css-loader.sass delete mode 100644 src/general/_animations.sass delete mode 100644 src/general/_base.sass delete mode 100644 src/general/_utils.sass delete mode 100644 src/loaders/_loader-ball.sass delete mode 100644 src/loaders/_loader-bar.sass delete mode 100644 src/loaders/_loader-border.sass delete mode 100644 src/loaders/_loader-double.sass delete mode 100644 src/loaders/_loader.sass diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 0e8c7a8..0000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2016 Raphael Fabeni - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/README.md b/README.md deleted file mode 100644 index 776eaee..0000000 --- a/README.md +++ /dev/null @@ -1,150 +0,0 @@ -# CSS loader - -> A couple of simple examples of loaders using only one `div` and *CSS*. - -![loader-g](https://cloud.githubusercontent.com/assets/1345662/19414412/5e472d6c-9322-11e6-9407-5e3662072aee.gif) - -## Why - -Usually it's common to show a loader to the users when they must wait something in a web application (an _ajax_ request or a form submit, etc). _Gif_image loaders was great but using CSS we can avoid the image request, also it's easier for customise and maintain and it's more cool. - -## Examples - -### Default - -```html -
-``` - -![loader](https://cloud.githubusercontent.com/assets/1345662/19313531/2c715f18-906d-11e6-856a-17ca264112de.gif) - -#### Variations - -**data-text**: it's to add a _Loading_ text into the loader. Just add the `data-text` attribute. - -```html -
-``` - -![loader-data-text](https://cloud.githubusercontent.com/assets/1345662/19313794/1fdf0ce0-906e-11e6-8a9f-39d2421a41d6.gif) - -It's also possible to change the text, just passing a value to the attribute `data-text`. - -```html -
-``` - -![loader-data-text-custom](https://cloud.githubusercontent.com/assets/1345662/19313797/21e3fb22-906e-11e6-8f0a-11cc9c0fb8d2.gif) - -**blink**: passing the `blink` attribute, you can add a simple _fade_ animation to the text loader - -```html -
-``` - -![loader-blink](https://cloud.githubusercontent.com/assets/1345662/19313798/25fa2830-906e-11e6-88d2-2f165a68cb80.gif) - -### Double - -```html -
-``` - -![loader-double](https://cloud.githubusercontent.com/assets/1345662/19314508/c2279a06-9070-11e6-8079-4fa82b5f2610.gif) - -### Bar - -```html -
-``` - -![loader-bar](https://cloud.githubusercontent.com/assets/1345662/19314685/6d719056-9071-11e6-88c8-2c3750ca0198.gif) - -### Variations - -Like the `loader` example, it's also possible pass the `data-text` and `blink` attributes. - -```html -
- -
- -
-``` - -**rounded**: passing the `rounded` attribute, it's possible to add a simple `border-radius` to the loader. - -![loader-bar-rounded](https://cloud.githubusercontent.com/assets/1345662/19315031/ab850700-9072-11e6-9cd4-9fe899f05a10.gif) - -```html -
-``` - -### Corner - -![loader-corner](https://cloud.githubusercontent.com/assets/1345662/19314686/6d733622-9071-11e6-8167-a55e6c16a02f.gif) - -```html -
-``` - -### Variations - -Like the `loader` example, it's also possible pass the `data-text` and `blink` attributes. - -```html -
- -
- -
-``` - -### Ball - -```html -
-``` - -![loader-ball](https://cloud.githubusercontent.com/assets/1345662/19314687/6d771ff8-9071-11e6-8839-713066f11056.gif) - -## Using - -You can clone or download the repository and get main *CSS* file that it's located in: `dist/css-loaders.css`. Add in your project and link the file in HTML: - -```html - -``` - -Select the loader and add the HTML corresponding to it, To show the loader, you need to add the helper css class `is-active`. And to hide the loader, it's just follow the inverse, removing the css helper from the loader. You can do it with JavaScript. - -```html - -
- - -
-``` - -## Contributing - -1. Clone this repository. -2. `npm install` and `gulp` -3. Open => `http://localhost:300` -4. Make your magic contribution. -5. Open a _PR_ with a new branch describing your changes. Chrome logo | Firefox logo | Internet Explorer logo | Opera logo | Safari logo | Android Browser Logo -|:---:|:---:|:---:|:---:|:---:|:---:| -| 43+ ✔ | 16+ ✔ | 10+ ✔ | 30+ ✔ | 9+ ✔ | 5.2+ ✔ - -Based on _Can i Use_. One thing to note is the CSS file has no browsers prefixes, but you can easily add and increase the support of the browsers. - -## Licence - -[MIT License](https://raphaelfabeni.mit-license.org/) © Raphael Fabeni - diff --git a/assets/css/main.css b/assets/css/main.css new file mode 100644 index 0000000..f36e7c4 --- /dev/null +++ b/assets/css/main.css @@ -0,0 +1,199 @@ +*, +*:after, +*:before { + margin: 0; + padding: 0; + list-style: none; +} + +/* General */ +body { + font-family: 'Open Sans', sans-serif; + font-weight: 400; + background-color: #fff; + color: #444; + font-size: 16px; +} + +.container { + padding-left: 10px; + padding-right: 10px; +} + +/* Header and footer*/ +.footer { + background-color: #1abc9c; + color: #fff; + text-align: center; + padding: 20px; + border-top: solid 15px #16a085; + margin-top: 25px; +} + +.header { + background-color: #1abc9c; + color: #fff; + text-align: center; + padding: 50px 20px; + border-bottom: solid 15px #16a085; + margin-bottom: 25px; + position: relative; +} + +.header__title { + font-weight: 700; + text-shadow: 1px 1px 0 rgba(0,0,0,.2); + font-size: 54px; + letter-spacing: -2px; +} + +.header__title:before, +.header__title:after { + content: ''; + width: 10px; + height: 10px; + display: inline-block; + border: solid 5px #16a085; + border-right-color: transparent; + vertical-align: middle; + border-radius: 50%; + animation: rotation 1s infinite linear; +} + +.header__title:before { + margin-right: 10px; +} + +.header__title:after { + margin-left: 10px; + animation-duration: 1.5s; +} + +.header__subtitle { + font-weight: 300; + text-shadow: 1px 1px 0 rgba(0,0,0,.2); + font-size: 24px; +} + +@keyframes pulse { + to { transform: scale(1.2); } +} + +@keyframes rotation { + to { transform: rotate(359deg); } +} + +.heart { + color: #e74c3c; + display: inline-block; + vertical-align: bottom; + font-size: 22px; + animation: pulse .5s linear infinite alternate; +} + +.heart--small { + font-size: 16px; + vertical-align: middle; +} + +/* Grid */ +.row { + max-width: 850px; + width: 100%; + margin: 0 auto; +} + +.row--space { + margin-bottom: 25px; +} + +.row--flex { + display: flex; + flex-flow: row wrap; + justify-content: flex-start; +} + +/* Box */ +.box { + padding: 15px; + background-color: #f5f5f5; + border: solid 1px #dedede; + width: 25%; + margin: 10px 10px 10px 0; +} + +.box--full { + width: 100%; + margin-right: 0; +} + +.box__item { + display: inline-block; + margin: 4px 0; +} + +.box__title { + font-size: 18px; + color: #666; + margin-bottom: 15px; +} + +/* Buttons */ +.button { + display: inline-block; + border: none; + background-color: #1abc9c; + color: #fff; + font-size: 14px; + padding: 10px 20px; + border-radius: 5px; + text-shadow: 1px 1px 0 rgba(0,0,0,.25); + box-shadow: 0 5px 0 0 #16a085; + transition: background .3s ease; +} + +.button:hover, +.button:focus { + background-color: #049372; + outline: none; +} + +.button:active { + transform: translateY(5px); + box-shadow: none; +} + +/* Input */ +.input { + display: inline-block; + padding: 8px; + max-width: 90px; + transition: all .3s ease; + border: solid 1px #eee; +} + +.input:focus { + border-color: #ccc; +} + +/* Typography */ +.title, +p { + margin-bottom: 15px; +} + +a { + color: #16a085; +} + +a:hover { + text-decoration: none; +} + +.text-yellow { + color: #f1c40f; +} + +.text-white { + color: #fff; +} \ No newline at end of file diff --git a/assets/js/main.js b/assets/js/main.js new file mode 100644 index 0000000..48a22cd --- /dev/null +++ b/assets/js/main.js @@ -0,0 +1,173 @@ +(function() { + + var loader = document.getElementById('loader'); + + var config = [ + { + button: document.getElementById('loader-default'), + className: 'loader-default' + }, + { + button: document.getElementById('loader-default-half'), + className: 'loader-default', + attributes: [ + { attribute: 'half' } + ] + }, + { + button: document.getElementById('loader-default-blink'), + className: 'loader-default', + attributes: [ + { attribute: 'blink' }, + { attribute: 'data-text' } + ] + }, + { + button: document.getElementById('loader-default-inverse'), + className: 'loader-default', + attributes: [ + { attribute: 'inverse' } + ] + }, + { + button: document.getElementById('loader-default-text'), + className: 'loader-default', + attributes: [ + { attribute: 'data-text' } + ] + }, + { + button: document.getElementById('loader-default-custom-text'), + className: 'loader-default', + attributes: [ + { + attribute: 'data-text', + value: document.getElementById('custom-text') + } + ] + }, + { + button: document.getElementById('loader-double'), + className: 'loader-double' + }, + { + button: document.getElementById('loader-bar'), + className: 'loader-bar' + }, + { + button: document.getElementById('loader-bar-rounded'), + className: 'loader-bar', + attributes: [ + { attribute: 'rounded' } + ] + }, + { + button: document.getElementById('loader-bar-text'), + className: 'loader-bar', + attributes: [ + { attribute: 'data-text' } + ] + }, + { + button: document.getElementById('loader-bar-blink'), + className: 'loader-bar', + attributes: [ + { attribute: 'blink' }, + { attribute: 'data-text' } + ] + }, + { + button: document.getElementById('loader-bar-custom-text'), + className: 'loader-bar', + attributes: [ + { + attribute: 'data-text', + value: document.getElementById('bar-custom-text') + } + ] + }, + { + button: document.getElementById('loader-border'), + className: 'loader-border' + }, + { + button: document.getElementById('loader-border-text'), + className: 'loader-border', + attributes: [ + { attribute: 'data-text' } + ] + }, + { + button: document.getElementById('loader-border-custom-text'), + className: 'loader-border', + attributes: [ + { + attribute: 'data-text', + value: document.getElementById('border-custom-text') + } + ] + }, + { + button: document.getElementById('loader-border-blink'), + className: 'loader-border', + attributes: [ + { attribute: 'data-text' }, + { attribute: 'blink' } + ] + }, + { + button: document.getElementById('loader-ball'), + className: 'loader-ball' + } + ]; + + var timer; + + // Bindings + loader.addEventListener('click', function() { + for (var i = this.attributes.length - 1; i >= 0; i--){ + if(this.attributes[i].name !== 'id') { + this.removeAttribute(this.attributes[i].name); + } + } + clearTimeout(timer); + }); + + for(var i = 0; i < config.length; i++) { + + (function(i) { + + config[i]['button'].addEventListener('click', function() { + + // Attributes + if(config[i]['attributes']) { + for(var j = 0; j < config[i]['attributes'].length; j++ ) { + + var tempAttribute = config[i]['attributes'][j]; + var tempValue = tempAttribute['value'] ? tempAttribute['value'].value : ''; + + loader.setAttribute(tempAttribute['attribute'], tempValue); + } + } + + // Show loader + loader.classList.add('loader', config[i]['className'], 'is-active') + + // Hide loader after some time + hideLoader(config[i]['className'], config[i]['attributes'] ? config[i]['attributes'] : []); + }); + + })(i); + + } + + function hideLoader(param, attr) { + timer = setTimeout(function() { + loader.classList.remove('is-active', param, 'loader'); + for(var k = 0; k < attr.length; k++) { + loader.removeAttribute(attr[k]['attribute']); + } + }, 5000); + } + +})(); \ No newline at end of file diff --git a/css-loader-share.png b/css-loader-share.png new file mode 100644 index 0000000000000000000000000000000000000000..4e2a6154eb406b8c6a9f7e55d0da1edaa0bd6ee2 GIT binary patch literal 18857 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 N=|hdR-)Y)M{sVea5*Gjf literal 0 HcmV?d00001 diff --git a/dist/main.min.css b/dist/main.min.css new file mode 100644 index 0000000..00e2d62 --- /dev/null +++ b/dist/main.min.css @@ -0,0 +1 @@ +.header__subtitle,.header__title{text-shadow:1px 1px 0 rgba(0,0,0,.2)}*,:after,:before{margin:0;padding:0;list-style:none}body{font-family:'Open Sans',sans-serif;font-weight:400;background-color:#fff;color:#444;font-size:16px}.footer,.header{background-color:#1abc9c;color:#fff;text-align:center}.container{padding-left:10px;padding-right:10px}.footer{padding:20px;border-top:solid 15px #16a085;margin-top:25px}.header{padding:50px 20px;border-bottom:solid 15px #16a085;margin-bottom:25px;position:relative}.header__title{font-weight:700;font-size:54px;letter-spacing:-2px}.header__title:after,.header__title:before{content:'';width:10px;height:10px;display:inline-block;border:5px solid #16a085;border-right-color:transparent;vertical-align:middle;border-radius:50%;animation:rotation 1s infinite linear}.header__title:before{margin-right:10px}.header__title:after{margin-left:10px;animation-duration:1.5s}.header__subtitle{font-weight:300;font-size:24px}@keyframes pulse{to{transform:scale(1.2)}}@keyframes rotation{to{transform:rotate(359deg)}}.heart{color:#e74c3c;display:inline-block;vertical-align:bottom;font-size:22px;animation:pulse .5s linear infinite alternate}.heart--small{font-size:16px;vertical-align:middle}.row{max-width:850px;width:100%;margin:0 auto}.row--space{margin-bottom:25px}.row--flex{display:flex;flex-flow:row wrap;justify-content:flex-start}.box__item,.button,.input{display:inline-block}.box{padding:15px;background-color:#f5f5f5;border:1px solid #dedede;width:25%;margin:10px 10px 10px 0}.box--full{width:100%;margin-right:0}.box__item{margin:4px 0}.box__title,.title,p{margin-bottom:15px}.box__title{font-size:18px;color:#666}.button{border:none;background-color:#1abc9c;color:#fff;font-size:14px;padding:10px 20px;border-radius:5px;text-shadow:1px 1px 0 rgba(0,0,0,.25);box-shadow:0 5px 0 0 #16a085;transition:background .3s ease}.button:focus,.button:hover{background-color:#049372;outline:0}.button:active{transform:translateY(5px);box-shadow:none}.input{padding:8px;max-width:90px;transition:all .3s ease;border:1px solid #eee}.input:focus{border-color:#ccc}a{color:#16a085}a:hover{text-decoration:none}.text-yellow{color:#f1c40f}.text-white{color:#fff} \ No newline at end of file diff --git a/dist/main.min.js b/dist/main.min.js new file mode 100644 index 0000000..8be3dc8 --- /dev/null +++ b/dist/main.min.js @@ -0,0 +1 @@ +(function(){var loader=document.getElementById("loader");var config=[{button:document.getElementById("loader-default"),className:"loader-default"},{button:document.getElementById("loader-default-half"),className:"loader-default",attributes:[{attribute:"half"}]},{button:document.getElementById("loader-default-blink"),className:"loader-default",attributes:[{attribute:"blink"},{attribute:"data-text"}]},{button:document.getElementById("loader-default-inverse"),className:"loader-default",attributes:[{attribute:"inverse"}]},{button:document.getElementById("loader-default-text"),className:"loader-default",attributes:[{attribute:"data-text"}]},{button:document.getElementById("loader-default-custom-text"),className:"loader-default",attributes:[{attribute:"data-text",value:document.getElementById("custom-text")}]},{button:document.getElementById("loader-double"),className:"loader-double"},{button:document.getElementById("loader-bar"),className:"loader-bar"},{button:document.getElementById("loader-bar-rounded"),className:"loader-bar",attributes:[{attribute:"rounded"}]},{button:document.getElementById("loader-bar-text"),className:"loader-bar",attributes:[{attribute:"data-text"}]},{button:document.getElementById("loader-bar-blink"),className:"loader-bar",attributes:[{attribute:"blink"},{attribute:"data-text"}]},{button:document.getElementById("loader-bar-custom-text"),className:"loader-bar",attributes:[{attribute:"data-text",value:document.getElementById("bar-custom-text")}]},{button:document.getElementById("loader-border"),className:"loader-border"},{button:document.getElementById("loader-border-text"),className:"loader-border",attributes:[{attribute:"data-text"}]},{button:document.getElementById("loader-border-custom-text"),className:"loader-border",attributes:[{attribute:"data-text",value:document.getElementById("border-custom-text")}]},{button:document.getElementById("loader-border-blink"),className:"loader-border",attributes:[{attribute:"data-text"},{attribute:"blink"}]},{button:document.getElementById("loader-ball"),className:"loader-ball"}];var timer;loader.addEventListener("click",function(){for(var i=this.attributes.length-1;i>=0;i--){if(this.attributes[i].name!=="id"){this.removeAttribute(this.attributes[i].name)}}clearTimeout(timer)});for(var i=0;i - - - - Loader - - - - - - - - -
- - -
-

Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nesciunt, dolorem molestias accusamus doloribus culpa aliquid aliquam minima dignissimos esse reprehenderit, sed soluta earum iste amet accusantium. Dolorum facere rerum, omnis!

-

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nesciunt, dolorem molestias accusamus doloribus culpa aliquid aliquam minima dignissimos esse reprehenderit, sed soluta earum iste amet accusantium. Dolorum facere rerum, omnis!

-

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nesciunt, dolorem molestias accusamus doloribus culpa aliquid aliquam minima dignissimos esse reprehenderit, sed soluta earum iste amet accusantium. Dolorum facere rerum, omnis!

-
    -
  • Lorem ipsum dolor sit.
  • -
  • Lorem ipsum dolor sit.
  • -
  • Lorem ipsum dolor sit.
  • -
  • Lorem ipsum dolor sit.
  • -
-

Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quas perspiciatis id maxime placeat recusandae architecto, fuga dolorem molestiae tempora optio.

-

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quas perspiciatis id maxime placeat recusandae architecto, fuga dolorem molestiae tempora optio.

-

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quas perspiciatis id maxime placeat recusandae architecto, fuga dolorem molestiae tempora optio.

-
- - \ No newline at end of file diff --git a/examples/loader-ball.html b/examples/loader-ball.html deleted file mode 100644 index f661bfa..0000000 --- a/examples/loader-ball.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Loader Ball - - - - - - - - -
- - -
-

Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nesciunt, dolorem molestias accusamus doloribus culpa aliquid aliquam minima dignissimos esse reprehenderit, sed soluta earum iste amet accusantium. Dolorum facere rerum, omnis!

-

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nesciunt, dolorem molestias accusamus doloribus culpa aliquid aliquam minima dignissimos esse reprehenderit, sed soluta earum iste amet accusantium. Dolorum facere rerum, omnis!

-

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nesciunt, dolorem molestias accusamus doloribus culpa aliquid aliquam minima dignissimos esse reprehenderit, sed soluta earum iste amet accusantium. Dolorum facere rerum, omnis!

-
    -
  • Lorem ipsum dolor sit.
  • -
  • Lorem ipsum dolor sit.
  • -
  • Lorem ipsum dolor sit.
  • -
  • Lorem ipsum dolor sit.
  • -
-

Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quas perspiciatis id maxime placeat recusandae architecto, fuga dolorem molestiae tempora optio.

-

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quas perspiciatis id maxime placeat recusandae architecto, fuga dolorem molestiae tempora optio.

-

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quas perspiciatis id maxime placeat recusandae architecto, fuga dolorem molestiae tempora optio.

-
- - \ No newline at end of file diff --git a/examples/loader-bar.html b/examples/loader-bar.html deleted file mode 100644 index ed0f6bc..0000000 --- a/examples/loader-bar.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Loader Bar - - - - - - - - -
- - -
-

Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nesciunt, dolorem molestias accusamus doloribus culpa aliquid aliquam minima dignissimos esse reprehenderit, sed soluta earum iste amet accusantium. Dolorum facere rerum, omnis!

-

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nesciunt, dolorem molestias accusamus doloribus culpa aliquid aliquam minima dignissimos esse reprehenderit, sed soluta earum iste amet accusantium. Dolorum facere rerum, omnis!

-

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nesciunt, dolorem molestias accusamus doloribus culpa aliquid aliquam minima dignissimos esse reprehenderit, sed soluta earum iste amet accusantium. Dolorum facere rerum, omnis!

-
    -
  • Lorem ipsum dolor sit.
  • -
  • Lorem ipsum dolor sit.
  • -
  • Lorem ipsum dolor sit.
  • -
  • Lorem ipsum dolor sit.
  • -
-

Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quas perspiciatis id maxime placeat recusandae architecto, fuga dolorem molestiae tempora optio.

-

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quas perspiciatis id maxime placeat recusandae architecto, fuga dolorem molestiae tempora optio.

-

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quas perspiciatis id maxime placeat recusandae architecto, fuga dolorem molestiae tempora optio.

-
- - \ No newline at end of file diff --git a/examples/loader-border.html b/examples/loader-border.html deleted file mode 100644 index 9784dbd..0000000 --- a/examples/loader-border.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Loader Border - - - - - - - - -
- - -
-

Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nesciunt, dolorem molestias accusamus doloribus culpa aliquid aliquam minima dignissimos esse reprehenderit, sed soluta earum iste amet accusantium. Dolorum facere rerum, omnis!

-

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nesciunt, dolorem molestias accusamus doloribus culpa aliquid aliquam minima dignissimos esse reprehenderit, sed soluta earum iste amet accusantium. Dolorum facere rerum, omnis!

-

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nesciunt, dolorem molestias accusamus doloribus culpa aliquid aliquam minima dignissimos esse reprehenderit, sed soluta earum iste amet accusantium. Dolorum facere rerum, omnis!

-
    -
  • Lorem ipsum dolor sit.
  • -
  • Lorem ipsum dolor sit.
  • -
  • Lorem ipsum dolor sit.
  • -
  • Lorem ipsum dolor sit.
  • -
-

Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quas perspiciatis id maxime placeat recusandae architecto, fuga dolorem molestiae tempora optio.

-

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quas perspiciatis id maxime placeat recusandae architecto, fuga dolorem molestiae tempora optio.

-

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quas perspiciatis id maxime placeat recusandae architecto, fuga dolorem molestiae tempora optio.

-
- - \ No newline at end of file diff --git a/examples/loader-double.html b/examples/loader-double.html deleted file mode 100644 index 0cfa33c..0000000 --- a/examples/loader-double.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Loader Border - - - - - - - - -
- - -
-

Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nesciunt, dolorem molestias accusamus doloribus culpa aliquid aliquam minima dignissimos esse reprehenderit, sed soluta earum iste amet accusantium. Dolorum facere rerum, omnis!

-

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nesciunt, dolorem molestias accusamus doloribus culpa aliquid aliquam minima dignissimos esse reprehenderit, sed soluta earum iste amet accusantium. Dolorum facere rerum, omnis!

-

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nesciunt, dolorem molestias accusamus doloribus culpa aliquid aliquam minima dignissimos esse reprehenderit, sed soluta earum iste amet accusantium. Dolorum facere rerum, omnis!

-
    -
  • Lorem ipsum dolor sit.
  • -
  • Lorem ipsum dolor sit.
  • -
  • Lorem ipsum dolor sit.
  • -
  • Lorem ipsum dolor sit.
  • -
-

Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quas perspiciatis id maxime placeat recusandae architecto, fuga dolorem molestiae tempora optio.

-

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quas perspiciatis id maxime placeat recusandae architecto, fuga dolorem molestiae tempora optio.

-

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quas perspiciatis id maxime placeat recusandae architecto, fuga dolorem molestiae tempora optio.

-
- - \ No newline at end of file diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..b62e283ec1d80835b817123e29eb71d40ffed7af GIT binary patch literal 32988 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 dist/css-loader.css', - onLast: true - })) -}); - -gulp.task('default', ['serve']); \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..bfd5ad7 --- /dev/null +++ b/index.html @@ -0,0 +1,145 @@ + + + + + CSS Loader + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+

CSS Loader

+

Simple loaders for your web applications using only one div and pure CSS .

+
+
+ +
+
+

Why?

+

Usually it's common to show a loader to the users when they must wait something in a web application (an ajax request or a form submit, etc). Gif images were great but using CSS we can avoid the image request, also it's easier for customize/ maintain and it's more cool. Check it out in GitHub.

+
+
+ +
+
+ +
+

Default

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ + +
+
+ +
+

Bar

+
+ +
+
+ +
+
+ +
+
+ +
+
+ + +
+
+ +
+

Border

+
+ +
+
+ +
+
+ +
+
+ + +
+
+ +
+

Double

+
+ +
+
+ +
+

Ball

+ +
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/package.json b/package.json index a082456..18d28a4 100644 --- a/package.json +++ b/package.json @@ -1,21 +1,28 @@ { - "name": "css-loader", + "name": "css-loader-page", "version": "1.0.0", "repository": "raphaelfabeni/css-loader", "description": "Simple loaders for your web applications using only one div and pure CSS ♥.", - "main": "index.js", + "main": "index.html", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "test": "echo \"Error: no test specified\" && exit 1", + "server": "browser-sync start --server", + "build:css": "cleancss -o ./dist/main.min.css ./assets/css/main.css", + "build:js": "uglifyjs ./assets/js/main.js > ./dist/main.min.js", + "build": "npm run build:css && npm run build:js", + "watch:css": "watchy -w ./assets/css/main.css -- npm run build:css", + "watch:js": "watchy -w ./assets/js/main.js -- npm run build:js", + "reload:dist": "watchy -w ./dist -- browser-sync reload", + "reload:index": "watchy -w ./index.html -- browser-sync reload", + "reload:all": "npm run watch:css & npm run watch:js & npm run reload:dist & npm run reload:index", + "start": "npm run build && npm run reload:all & npm run server" }, "author": "Raphael Fabeni", "license": "MIT", "dependencies": { - "browser-sync": "^2.16.0", - "gulp": "^3.9.1", - "gulp-notify": "^2.2.0", - "gulp-sass": "^2.3.2", - "gulp-sass-lint": "^1.2.0", - "gulp-sourcemaps": "^1.6.0", - "gulp-util": "^3.0.7" + "browser-sync": "^2.17.3", + "clean-css": "^3.4.20", + "uglify-js": "^2.7.3", + "watchy": "^0.6.6" } } diff --git a/src/css-loader.sass b/src/css-loader.sass deleted file mode 100644 index 50b6437..0000000 --- a/src/css-loader.sass +++ /dev/null @@ -1,9 +0,0 @@ -@import './general/base' -@import './general/animations' -@import './general/utils' - -@import './loaders/loader' -@import './loaders/loader-double' -@import './loaders/loader-bar' -@import './loaders/loader-border' -@import './loaders/loader-ball' \ No newline at end of file diff --git a/src/general/_animations.sass b/src/general/_animations.sass deleted file mode 100644 index d2a3ba5..0000000 --- a/src/general/_animations.sass +++ /dev/null @@ -1,16 +0,0 @@ -// General animations -// ========================================================================== - -@keyframes rotation - from - transform: rotate(0) - - to - transform: rotate(359deg) - -@keyframes blink - from - opacity: .5 - - to - opacity: 1 \ No newline at end of file diff --git a/src/general/_base.sass b/src/general/_base.sass deleted file mode 100644 index 335c885..0000000 --- a/src/general/_base.sass +++ /dev/null @@ -1,21 +0,0 @@ -.loader - color: #fff - position: fixed - box-sizing: border-box - left: -9999px - top: -9999px - width: 0 - height: 0 - overflow: hidden - z-index: 999999 - - &:after, - &:before - box-sizing: border-box - - &.is-active - background-color: rgba(0, 0, 0, .85) - width: 100% - height: 100% - left: 0 - top: 0 \ No newline at end of file diff --git a/src/general/_utils.sass b/src/general/_utils.sass deleted file mode 100644 index f2e078f..0000000 --- a/src/general/_utils.sass +++ /dev/null @@ -1,30 +0,0 @@ -// Data text -// ========================================================================== -.loader - - &[data-text] - - &:before - position: fixed - left: 0 - top: 50% - color: currentColor - font-family: Helvetica, Arial, sans-serif - text-align: center - width: 100% - - // Default text - &[data-text = ''] - &:before - content: 'Loading' - - // Passing text as attribute - &:not([data-text = '']) - &:before - content: attr(data-text) - - // Blink animation - // ========================================================================== - &[blink] - &:before - animation: blink 1s linear infinite alternate \ No newline at end of file diff --git a/src/loaders/_loader-ball.sass b/src/loaders/_loader-ball.sass deleted file mode 100644 index 7591d9f..0000000 --- a/src/loaders/_loader-ball.sass +++ /dev/null @@ -1,51 +0,0 @@ -// Loader ball -// ========================================================================== -.loader-ball - - &:before - content: '' - position: absolute - width: 50px - height: 50px - top: 50% - left: 50% - margin: -25px 0 0 -25px - background-color: #fff - border-radius: 50% - z-index: 1 - animation: kick 1s infinite alternate ease-in both - - &:after - content: '' - position: absolute - background-color: rgba(0,0,0,.3) - border-radius: 50% - width: 45px - height: 20px - top: calc(50% + 10px) - left: 50% - margin: 0 0 0 -22.5px - z-index: 0 - animation: shadow 1s infinite alternate ease-out both - -@keyframes shadow - 0%, - 40% - background-color: rgba(0,0,0,0) - transform: scale(0) - - 95%, - 100% - background-color: rgba(0,0,0, .75) - transform: scale(1) - -@keyframes kick - 0% - transform: translateY(-80px) scaleX(.95) - - 90% - border-radius: 50% - - 100% - transform: translateY(0) scaleX(1) - border-radius: 50% 50% 35% 35% diff --git a/src/loaders/_loader-bar.sass b/src/loaders/_loader-bar.sass deleted file mode 100644 index 26c346b..0000000 --- a/src/loaders/_loader-bar.sass +++ /dev/null @@ -1,38 +0,0 @@ -// Loader bar -// ========================================================================== - -$loader-bar--color: #52b3d9 -$loader-bar--color-secondary: #4183d7 -$loader-bar--text-color: #fff - -.loader-bar - - // Before is used for data-text attribute - &[data-text]:before - top: calc(50% - 40px) - - &:after - content: '' - position: fixed - top: 50% - left: 50% - width: 200px - height: 20px - transform: translate(-50%, -50%) - background: linear-gradient( -45deg, $loader-bar--color-secondary 25%, $loader-bar--color 25%, $loader-bar--color 50%, $loader-bar--color-secondary 50%, $loader-bar--color-secondary 75%, $loader-bar--color 75%, $loader-bar--color) - background-size: 20px 20px - box-shadow: inset 0 10px 0 rgba(255, 255, 255, .2), 0 0 0 5px rgba(0, 0, 0, .2) - animation: moveBar 1.5s linear infinite - - // Rounded version - &[rounded] - &:after - border-radius: 15px - -// Animation for bars -@keyframes moveBar - from - background-position: 0 0 - - to - background-position: 20px 20px \ No newline at end of file diff --git a/src/loaders/_loader-border.sass b/src/loaders/_loader-border.sass deleted file mode 100644 index a3f808f..0000000 --- a/src/loaders/_loader-border.sass +++ /dev/null @@ -1,49 +0,0 @@ -// Loader border -// ========================================================================== - -$loader-border--width: 15px -$loader-border--height: 15px - -// Corners animation -@keyframes corners - 6% - width: $loader-border--width * 4 - height: $loader-border--height - - 25% - width: $loader-border--width - height: $loader-border--height - left: calc(100% - #{$loader-border--width}) - top: 0 - - 31% - height: $loader-border--height * 4 - - 50% - height: $loader-border--height - top: calc(100% - #{$loader-border--height}) - left: calc(100% - #{$loader-border--width}) - - 56% - width: $loader-border--width * 4 - - 75% - width: $loader-border--width - left: 0 - top: calc(100% - #{$loader-border--height}) - - 81% - height: $loader-border--width * 4 - - -.loader-border - - &:after - content: '' - position: absolute - top: 0 - left: 0 - width: $loader-border--width - height: $loader-border--height - background-color: #fff - animation: corners 3s ease both infinite diff --git a/src/loaders/_loader-double.sass b/src/loaders/_loader-double.sass deleted file mode 100644 index 91e677a..0000000 --- a/src/loaders/_loader-double.sass +++ /dev/null @@ -1,36 +0,0 @@ -// Loader double -// ========================================================================== - -// Config -$loader-double--size: 48px -$loader-double--border: 8px -$loader-double--color: #fff -$loader-double--color-external: #eb974e -$loader-double--size-external: $loader-double--size + ($loader-double--border * 2) - -.loader-double - - &:after, - &:before - content: '' - position: fixed - border-radius: 50% - border: solid $loader-double--border - animation: rotation 1s linear infinite - - &:after - width: $loader-double--size - height: $loader-double--size - border-color: $loader-double--color - border-left-color: transparent - top: calc(50% - #{$loader-double--size / 2}) - left: calc(50% - #{$loader-double--size / 2}) - - &:before - width: $loader-double--size-external - height: $loader-double--size-external - border-color: $loader-double--color-external - border-right-color: transparent - animation-duration: 2s - top: calc(50% - #{($loader-double--size / 2) + $loader-double--border}) - left: calc(50% - #{($loader-double--size / 2) + $loader-double--border}) \ No newline at end of file diff --git a/src/loaders/_loader.sass b/src/loaders/_loader.sass deleted file mode 100644 index 2607174..0000000 --- a/src/loaders/_loader.sass +++ /dev/null @@ -1,35 +0,0 @@ -// Loader (default) -// ========================================================================== - -// Config -$loader--size: 48px -$loader--color: #fff -$loader--text-color: #fff - -.loader-default - - // Before is used for data-text attribute - &[data-text]:before - top: calc(50% - #{($loader--size + 15)}) - - &:after - content: '' - position: fixed - width: $loader--size - height: $loader--size - border: solid 8px $loader--color - border-left-color: transparent - border-radius: 50% - top: calc(50% - #{$loader--size / 2}) - left: calc(50% - #{$loader--size / 2}) - animation: rotation 1s linear infinite - - // Half - &[half] - &:after - border-right-color: transparent - - // Inverse - &[inverse] - &:after - animation-direction: reverse From a0b324c4128923fc901ab2c449a881c38a94bab4 Mon Sep 17 00:00:00 2001 From: Raphael Fabeni Date: Sat, 15 Oct 2016 23:41:32 -0300 Subject: [PATCH 02/19] Change the share image --- css-loader-share.png | Bin 18857 -> 6875 bytes index.html | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/css-loader-share.png b/css-loader-share.png index 4e2a6154eb406b8c6a9f7e55d0da1edaa0bd6ee2..d07f841f7cee59d7b520e118977667c31a794de5 100644 GIT binary patch delta 6151 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 N)7LT9Mrl5d{Vx>fD{KG& delta 18175 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 diff --git a/index.html b/index.html index bfd5ad7..72d8ae3 100644 --- a/index.html +++ b/index.html @@ -20,7 +20,7 @@ - + From 4bd4aeef5b7c233e8751670f8a3771f69ed2e48d Mon Sep 17 00:00:00 2001 From: Raphael Fabeni Date: Sun, 16 Oct 2016 12:37:54 -0200 Subject: [PATCH 03/19] Add a first version of hash check --- assets/js/main.js | 11 +++++++++++ dist/main.min.js | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/assets/js/main.js b/assets/js/main.js index 48a22cd..8cb690b 100644 --- a/assets/js/main.js +++ b/assets/js/main.js @@ -162,6 +162,7 @@ } function hideLoader(param, attr) { + console.log('disparou'); timer = setTimeout(function() { loader.classList.remove('is-active', param, 'loader'); for(var k = 0; k < attr.length; k++) { @@ -170,4 +171,14 @@ }, 5000); } + // Hash + + if(window.location.hash) { + var loaderHash = window.location.hash.split('#/')[1]; + + var event = document.createEvent('HTMLEvents'); + event.initEvent('click', true, false); + document.getElementById(loaderHash).dispatchEvent(event); + } + })(); \ No newline at end of file diff --git a/dist/main.min.js b/dist/main.min.js index 8be3dc8..e4cf1c7 100644 --- a/dist/main.min.js +++ b/dist/main.min.js @@ -1 +1 @@ -(function(){var loader=document.getElementById("loader");var config=[{button:document.getElementById("loader-default"),className:"loader-default"},{button:document.getElementById("loader-default-half"),className:"loader-default",attributes:[{attribute:"half"}]},{button:document.getElementById("loader-default-blink"),className:"loader-default",attributes:[{attribute:"blink"},{attribute:"data-text"}]},{button:document.getElementById("loader-default-inverse"),className:"loader-default",attributes:[{attribute:"inverse"}]},{button:document.getElementById("loader-default-text"),className:"loader-default",attributes:[{attribute:"data-text"}]},{button:document.getElementById("loader-default-custom-text"),className:"loader-default",attributes:[{attribute:"data-text",value:document.getElementById("custom-text")}]},{button:document.getElementById("loader-double"),className:"loader-double"},{button:document.getElementById("loader-bar"),className:"loader-bar"},{button:document.getElementById("loader-bar-rounded"),className:"loader-bar",attributes:[{attribute:"rounded"}]},{button:document.getElementById("loader-bar-text"),className:"loader-bar",attributes:[{attribute:"data-text"}]},{button:document.getElementById("loader-bar-blink"),className:"loader-bar",attributes:[{attribute:"blink"},{attribute:"data-text"}]},{button:document.getElementById("loader-bar-custom-text"),className:"loader-bar",attributes:[{attribute:"data-text",value:document.getElementById("bar-custom-text")}]},{button:document.getElementById("loader-border"),className:"loader-border"},{button:document.getElementById("loader-border-text"),className:"loader-border",attributes:[{attribute:"data-text"}]},{button:document.getElementById("loader-border-custom-text"),className:"loader-border",attributes:[{attribute:"data-text",value:document.getElementById("border-custom-text")}]},{button:document.getElementById("loader-border-blink"),className:"loader-border",attributes:[{attribute:"data-text"},{attribute:"blink"}]},{button:document.getElementById("loader-ball"),className:"loader-ball"}];var timer;loader.addEventListener("click",function(){for(var i=this.attributes.length-1;i>=0;i--){if(this.attributes[i].name!=="id"){this.removeAttribute(this.attributes[i].name)}}clearTimeout(timer)});for(var i=0;i=0;i--){if(this.attributes[i].name!=="id"){this.removeAttribute(this.attributes[i].name)}}clearTimeout(timer)});for(var i=0;i Date: Sun, 16 Oct 2016 12:51:28 -0200 Subject: [PATCH 04/19] Remove the hash after loader --- assets/js/main.js | 7 +++++-- dist/main.min.js | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/assets/js/main.js b/assets/js/main.js index 8cb690b..0d6ab66 100644 --- a/assets/js/main.js +++ b/assets/js/main.js @@ -162,7 +162,6 @@ } function hideLoader(param, attr) { - console.log('disparou'); timer = setTimeout(function() { loader.classList.remove('is-active', param, 'loader'); for(var k = 0; k < attr.length; k++) { @@ -175,10 +174,14 @@ if(window.location.hash) { var loaderHash = window.location.hash.split('#/')[1]; - var event = document.createEvent('HTMLEvents'); + event.initEvent('click', true, false); document.getElementById(loaderHash).dispatchEvent(event); + setTimeout(function() { + history.pushState('', document.title, window.location.pathname); + }, 2000); + } })(); \ No newline at end of file diff --git a/dist/main.min.js b/dist/main.min.js index e4cf1c7..f1f1f78 100644 --- a/dist/main.min.js +++ b/dist/main.min.js @@ -1 +1 @@ -(function(){var loader=document.getElementById("loader");var config=[{button:document.getElementById("loader-default"),className:"loader-default"},{button:document.getElementById("loader-default-half"),className:"loader-default",attributes:[{attribute:"half"}]},{button:document.getElementById("loader-default-blink"),className:"loader-default",attributes:[{attribute:"blink"},{attribute:"data-text"}]},{button:document.getElementById("loader-default-inverse"),className:"loader-default",attributes:[{attribute:"inverse"}]},{button:document.getElementById("loader-default-text"),className:"loader-default",attributes:[{attribute:"data-text"}]},{button:document.getElementById("loader-default-custom-text"),className:"loader-default",attributes:[{attribute:"data-text",value:document.getElementById("custom-text")}]},{button:document.getElementById("loader-double"),className:"loader-double"},{button:document.getElementById("loader-bar"),className:"loader-bar"},{button:document.getElementById("loader-bar-rounded"),className:"loader-bar",attributes:[{attribute:"rounded"}]},{button:document.getElementById("loader-bar-text"),className:"loader-bar",attributes:[{attribute:"data-text"}]},{button:document.getElementById("loader-bar-blink"),className:"loader-bar",attributes:[{attribute:"blink"},{attribute:"data-text"}]},{button:document.getElementById("loader-bar-custom-text"),className:"loader-bar",attributes:[{attribute:"data-text",value:document.getElementById("bar-custom-text")}]},{button:document.getElementById("loader-border"),className:"loader-border"},{button:document.getElementById("loader-border-text"),className:"loader-border",attributes:[{attribute:"data-text"}]},{button:document.getElementById("loader-border-custom-text"),className:"loader-border",attributes:[{attribute:"data-text",value:document.getElementById("border-custom-text")}]},{button:document.getElementById("loader-border-blink"),className:"loader-border",attributes:[{attribute:"data-text"},{attribute:"blink"}]},{button:document.getElementById("loader-ball"),className:"loader-ball"}];var timer;loader.addEventListener("click",function(){for(var i=this.attributes.length-1;i>=0;i--){if(this.attributes[i].name!=="id"){this.removeAttribute(this.attributes[i].name)}}clearTimeout(timer)});for(var i=0;i=0;i--){if(this.attributes[i].name!=="id"){this.removeAttribute(this.attributes[i].name)}}clearTimeout(timer)});for(var i=0;i Date: Tue, 18 Oct 2016 15:02:03 -0200 Subject: [PATCH 05/19] Add a simple media querie for small resolutions --- assets/css/main.css | 22 +++++++++++++++++++++- dist/main.min.css | 2 +- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/assets/css/main.css b/assets/css/main.css index f36e7c4..04fc1a1 100644 --- a/assets/css/main.css +++ b/assets/css/main.css @@ -129,7 +129,7 @@ body { .box__item { display: inline-block; - margin: 4px 0; + margin: 8px 0; } .box__title { @@ -196,4 +196,24 @@ a:hover { .text-white { color: #fff; +} + +/* Media */ +@media screen and (max-width: 550px) { + + .header { + padding: 25px 10px; + } + + .header__title { + font-size: 32px; + letter-spacing: 0; + margin-bottom: 15px; + } + + .header__subtitle { + font-size: 20px; + line-height: 1.4; + } + } \ No newline at end of file diff --git a/dist/main.min.css b/dist/main.min.css index 00e2d62..e7956f6 100644 --- a/dist/main.min.css +++ b/dist/main.min.css @@ -1 +1 @@ -.header__subtitle,.header__title{text-shadow:1px 1px 0 rgba(0,0,0,.2)}*,:after,:before{margin:0;padding:0;list-style:none}body{font-family:'Open Sans',sans-serif;font-weight:400;background-color:#fff;color:#444;font-size:16px}.footer,.header{background-color:#1abc9c;color:#fff;text-align:center}.container{padding-left:10px;padding-right:10px}.footer{padding:20px;border-top:solid 15px #16a085;margin-top:25px}.header{padding:50px 20px;border-bottom:solid 15px #16a085;margin-bottom:25px;position:relative}.header__title{font-weight:700;font-size:54px;letter-spacing:-2px}.header__title:after,.header__title:before{content:'';width:10px;height:10px;display:inline-block;border:5px solid #16a085;border-right-color:transparent;vertical-align:middle;border-radius:50%;animation:rotation 1s infinite linear}.header__title:before{margin-right:10px}.header__title:after{margin-left:10px;animation-duration:1.5s}.header__subtitle{font-weight:300;font-size:24px}@keyframes pulse{to{transform:scale(1.2)}}@keyframes rotation{to{transform:rotate(359deg)}}.heart{color:#e74c3c;display:inline-block;vertical-align:bottom;font-size:22px;animation:pulse .5s linear infinite alternate}.heart--small{font-size:16px;vertical-align:middle}.row{max-width:850px;width:100%;margin:0 auto}.row--space{margin-bottom:25px}.row--flex{display:flex;flex-flow:row wrap;justify-content:flex-start}.box__item,.button,.input{display:inline-block}.box{padding:15px;background-color:#f5f5f5;border:1px solid #dedede;width:25%;margin:10px 10px 10px 0}.box--full{width:100%;margin-right:0}.box__item{margin:4px 0}.box__title,.title,p{margin-bottom:15px}.box__title{font-size:18px;color:#666}.button{border:none;background-color:#1abc9c;color:#fff;font-size:14px;padding:10px 20px;border-radius:5px;text-shadow:1px 1px 0 rgba(0,0,0,.25);box-shadow:0 5px 0 0 #16a085;transition:background .3s ease}.button:focus,.button:hover{background-color:#049372;outline:0}.button:active{transform:translateY(5px);box-shadow:none}.input{padding:8px;max-width:90px;transition:all .3s ease;border:1px solid #eee}.input:focus{border-color:#ccc}a{color:#16a085}a:hover{text-decoration:none}.text-yellow{color:#f1c40f}.text-white{color:#fff} \ No newline at end of file +.header__subtitle,.header__title{text-shadow:1px 1px 0 rgba(0,0,0,.2)}*,:after,:before{margin:0;padding:0;list-style:none}body{font-family:'Open Sans',sans-serif;font-weight:400;background-color:#fff;color:#444;font-size:16px}.footer,.header{background-color:#1abc9c;color:#fff;text-align:center}.container{padding-left:10px;padding-right:10px}.footer{padding:20px;border-top:solid 15px #16a085;margin-top:25px}.header{padding:50px 20px;border-bottom:solid 15px #16a085;margin-bottom:25px;position:relative}.header__title{font-weight:700;font-size:54px;letter-spacing:-2px}.header__title:after,.header__title:before{content:'';width:10px;height:10px;display:inline-block;border:5px solid #16a085;border-right-color:transparent;vertical-align:middle;border-radius:50%;animation:rotation 1s infinite linear}.header__title:before{margin-right:10px}.header__title:after{margin-left:10px;animation-duration:1.5s}.header__subtitle{font-weight:300;font-size:24px}@keyframes pulse{to{transform:scale(1.2)}}@keyframes rotation{to{transform:rotate(359deg)}}.heart{color:#e74c3c;display:inline-block;vertical-align:bottom;font-size:22px;animation:pulse .5s linear infinite alternate}.heart--small{font-size:16px;vertical-align:middle}.row{max-width:850px;width:100%;margin:0 auto}.row--space{margin-bottom:25px}.row--flex{display:flex;flex-flow:row wrap;justify-content:flex-start}.box__item,.button,.input{display:inline-block}.box{padding:15px;background-color:#f5f5f5;border:1px solid #dedede;width:25%;margin:10px 10px 10px 0}.box--full{width:100%;margin-right:0}.box__item{margin:8px 0}.box__title,.title,p{margin-bottom:15px}.box__title{font-size:18px;color:#666}.button{border:none;background-color:#1abc9c;color:#fff;font-size:14px;padding:10px 20px;border-radius:5px;text-shadow:1px 1px 0 rgba(0,0,0,.25);box-shadow:0 5px 0 0 #16a085;transition:background .3s ease}.button:focus,.button:hover{background-color:#049372;outline:0}.button:active{transform:translateY(5px);box-shadow:none}.input{padding:8px;max-width:90px;transition:all .3s ease;border:1px solid #eee}.input:focus{border-color:#ccc}a{color:#16a085}a:hover{text-decoration:none}.text-yellow{color:#f1c40f}.text-white{color:#fff}@media screen and (max-width:550px){.header{padding:25px 10px}.header__title{font-size:32px;letter-spacing:0;margin-bottom:15px}.header__subtitle{font-size:20px;line-height:1.4}} \ No newline at end of file From 10bd5f83af210f456c2b8a5a7170a38c0f6a7f64 Mon Sep 17 00:00:00 2001 From: Raphael Fabeni Date: Wed, 19 Oct 2016 09:19:43 -0200 Subject: [PATCH 06/19] Fix typo in description --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 72d8ae3..5c3c489 100644 --- a/index.html +++ b/index.html @@ -42,7 +42,7 @@

Simple loaders for your web applications using only

Why?

-

Usually it's common to show a loader to the users when they must wait something in a web application (an ajax request or a form submit, etc). Gif images were great but using CSS we can avoid the image request, also it's easier for customize/ maintain and it's more cool. Check it out in GitHub.

+

Usually it's common to show a loader to the users when they must wait something in a web application (an ajax request or a form submit, etc). Gif images were great but using CSS we can avoid the image request, also it's easier for customize/ maintain and it's more cool. Check it out on GitHub.

From d9a13f6d59417af0b929d245b518e045a78a119c Mon Sep 17 00:00:00 2001 From: Raphael Fabeni Date: Thu, 20 Oct 2016 12:46:44 -0200 Subject: [PATCH 07/19] Add the smartphone loader --- assets/css/main.css | 1 - assets/js/main.js | 28 ++++++++++++++++++++++++++++ dist/css-loader.css | 2 +- dist/main.min.css | 2 +- dist/main.min.js | 2 +- index.html | 21 ++++++++++++++++++++- 6 files changed, 51 insertions(+), 5 deletions(-) diff --git a/assets/css/main.css b/assets/css/main.css index 04fc1a1..9e5afb0 100644 --- a/assets/css/main.css +++ b/assets/css/main.css @@ -118,7 +118,6 @@ body { padding: 15px; background-color: #f5f5f5; border: solid 1px #dedede; - width: 25%; margin: 10px 10px 10px 0; } diff --git a/assets/js/main.js b/assets/js/main.js index 0d6ab66..cf847a0 100644 --- a/assets/js/main.js +++ b/assets/js/main.js @@ -118,6 +118,34 @@ { button: document.getElementById('loader-ball'), className: 'loader-ball' + }, + { + button: document.getElementById('loader-ball-shadow'), + className: 'loader-ball', + attributes: [ + { attribute: 'shadow' } + ] + }, + { + button: document.getElementById('loader-smartphone'), + className: 'loader-smartphone' + }, + { + button: document.getElementById('loader-smartphone-text'), + className: 'loader-smartphone', + attributes: [ + { attribute: 'data-screen' } + ] + }, + { + button: document.getElementById('loader-smartphone-custom-text'), + className: 'loader-smartphone', + attributes: [ + { + attribute: 'data-screen', + value: document.getElementById('smartphone-custom-text') + } + ] } ]; diff --git a/dist/css-loader.css b/dist/css-loader.css index bd6c573..45adf35 100644 --- a/dist/css-loader.css +++ b/dist/css-loader.css @@ -1 +1 @@ -.loader{color:#fff;position:fixed;box-sizing:border-box;left:-9999px;top:-9999px;width:0;height:0;overflow:hidden;z-index:999999}.loader:after,.loader:before{box-sizing:border-box}.loader.is-active{background-color:rgba(0,0,0,0.85);width:100%;height:100%;left:0;top:0}@keyframes rotation{from{transform:rotate(0)}to{transform:rotate(359deg)}}@keyframes blink{from{opacity:.5}to{opacity:1}}.loader[data-text]:before{position:fixed;left:0;top:50%;color:currentColor;font-family:Helvetica, Arial, sans-serif;text-align:center;width:100%}.loader[data-text='']:before{content:'Loading'}.loader:not([data-text='']):before{content:attr(data-text)}.loader[blink]:before{animation:blink 1s linear infinite alternate}.loader-default[data-text]:before{top:calc(50% - 63px)}.loader-default:after{content:'';position:fixed;width:48px;height:48px;border:solid 8px #fff;border-left-color:transparent;border-radius:50%;top:calc(50% - 24px);left:calc(50% - 24px);animation:rotation 1s linear infinite}.loader-default[half]:after{border-right-color:transparent}.loader-default[inverse]:after{animation-direction:reverse}.loader-double:after,.loader-double:before{content:'';position:fixed;border-radius:50%;border:solid 8px;animation:rotation 1s linear infinite}.loader-double:after{width:48px;height:48px;border-color:#fff;border-left-color:transparent;top:calc(50% - 24px);left:calc(50% - 24px)}.loader-double:before{width:64px;height:64px;border-color:#eb974e;border-right-color:transparent;animation-duration:2s;top:calc(50% - 32px);left:calc(50% - 32px)}.loader-bar[data-text]:before{top:calc(50% - 40px)}.loader-bar:after{content:'';position:fixed;top:50%;left:50%;width:200px;height:20px;transform:translate(-50%, -50%);background:linear-gradient(-45deg, #4183d7 25%, #52b3d9 25%, #52b3d9 50%, #4183d7 50%, #4183d7 75%, #52b3d9 75%, #52b3d9);background-size:20px 20px;box-shadow:inset 0 10px 0 rgba(255,255,255,0.2),0 0 0 5px rgba(0,0,0,0.2);animation:moveBar 1.5s linear infinite}.loader-bar[rounded]:after{border-radius:15px}@keyframes moveBar{from{background-position:0 0}to{background-position:20px 20px}}@keyframes corners{6%{width:60px;height:15px}25%{width:15px;height:15px;left:calc(100% - 15px);top:0}31%{height:60px}50%{height:15px;top:calc(100% - 15px);left:calc(100% - 15px)}56%{width:60px}75%{width:15px;left:0;top:calc(100% - 15px)}81%{height:60px}}.loader-border:after{content:'';position:absolute;top:0;left:0;width:15px;height:15px;background-color:#fff;animation:corners 3s ease both infinite}.loader-ball:before{content:'';position:absolute;width:50px;height:50px;top:50%;left:50%;margin:-25px 0 0 -25px;background-color:#fff;border-radius:50%;z-index:1;animation:kick 1s infinite alternate ease-in both}.loader-ball:after{content:'';position:absolute;background-color:rgba(0,0,0,0.3);border-radius:50%;width:45px;height:20px;top:calc(50% + 10px);left:50%;margin:0 0 0 -22.5px;z-index:0;animation:shadow 1s infinite alternate ease-out both}@keyframes shadow{0%,40%{background-color:transparent;transform:scale(0)}95%,100%{background-color:rgba(0,0,0,0.75);transform:scale(1)}}@keyframes kick{0%{transform:translateY(-80px) scaleX(0.95)}90%{border-radius:50%}100%{transform:translateY(0) scaleX(1);border-radius:50% 50% 35% 35%}} +.loader{color:#fff;position:fixed;box-sizing:border-box;left:-9999px;top:-9999px;width:0;height:0;overflow:hidden;z-index:999999}.loader:after,.loader:before{box-sizing:border-box}.loader.is-active{background-color:rgba(0,0,0,0.85);width:100%;height:100%;left:0;top:0}@keyframes rotation{from{transform:rotate(0)}to{transform:rotate(359deg)}}@keyframes blink{from{opacity:.5}to{opacity:1}}.loader[data-text]:before{position:fixed;left:0;top:50%;color:currentColor;font-family:Helvetica,Arial,sans-serif;text-align:center;width:100%;font-size:14px}.loader[data-text='']:before{content:'Loading'}.loader:not([data-text='']):before{content:attr(data-text)}.loader[blink]:before{animation:blink 1s linear infinite alternate}.loader-default[data-text]:before{top:calc(50% - 63px)}.loader-default:after{content:'';position:fixed;width:48px;height:48px;border:solid 8px #fff;border-left-color:transparent;border-radius:50%;top:calc(50% - 24px);left:calc(50% - 24px);animation:rotation 1s linear infinite}.loader-default[half]:after{border-right-color:transparent}.loader-default[inverse]:after{animation-direction:reverse}.loader-double:after,.loader-double:before{content:'';position:fixed;border-radius:50%;border:solid 8px;animation:rotation 1s linear infinite}.loader-double:after{width:48px;height:48px;border-color:#fff;border-left-color:transparent;top:calc(50% - 24px);left:calc(50% - 24px)}.loader-double:before{width:64px;height:64px;border-color:#eb974e;border-right-color:transparent;animation-duration:2s;top:calc(50% - 32px);left:calc(50% - 32px)}.loader-bar[data-text]:before{top:calc(50% - 40px);color:#fff}.loader-bar:after{content:'';position:fixed;top:50%;left:50%;width:200px;height:20px;transform:translate(-50%, -50%);background:linear-gradient(-45deg, #4183d7 25%, #52b3d9 25%, #52b3d9 50%, #4183d7 50%, #4183d7 75%, #52b3d9 75%, #52b3d9);background-size:20px 20px;box-shadow:inset 0 10px 0 rgba(255,255,255,0.2),0 0 0 5px rgba(0,0,0,0.2);animation:moveBar 1.5s linear infinite}.loader-bar[rounded]:after{border-radius:15px}@keyframes moveBar{from{background-position:0 0}to{background-position:20px 20px}}@keyframes corners{6%{width:60px;height:15px}25%{width:15px;height:15px;left:calc(100% - 15px);top:0}31%{height:60px}50%{height:15px;top:calc(100% - 15px);left:calc(100% - 15px)}56%{width:60px}75%{width:15px;left:0;top:calc(100% - 15px)}81%{height:60px}}.loader-border[data-text]:before{color:#fff}.loader-border:after{content:'';position:absolute;top:0;left:0;width:15px;height:15px;background-color:#ff0;animation:corners 3s ease both infinite}.loader-ball:before{content:'';position:absolute;width:50px;height:50px;top:50%;left:50%;margin:-25px 0 0 -25px;background-color:#fff;border-radius:50%;z-index:1;animation:kick 1s infinite alternate ease-in both}.loader-ball[shadow]:before{box-shadow:-5px -5px 10px 0 rgba(0,0,0,0.5) inset}.loader-ball:after{content:'';position:absolute;background-color:rgba(0,0,0,0.3);border-radius:50%;width:45px;height:20px;top:calc(50% + 10px);left:50%;margin:0 0 0 -22.5px;z-index:0;animation:shadow 1s infinite alternate ease-out both}@keyframes shadow{0%,40%{background-color:transparent;transform:scale(0)}95%,100%{background-color:rgba(0,0,0,0.75);transform:scale(1)}}@keyframes kick{0%{transform:translateY(-80px) scaleX(0.95)}90%{border-radius:50%}100%{transform:translateY(0) scaleX(1);border-radius:50% 50% 20% 20%}}.loader-smartphone:after{content:'';color:#fff;font-size:12px;font-family:Helvetica,Arial,sans-serif;text-align:center;line-height:120px;position:fixed;left:50%;top:50%;width:70px;height:130px;margin:-65px 0 0 -35px;border:solid 5px gold;border-radius:10px;box-shadow:0 5px 0 0 gold inset;background:radial-gradient(circle at 50% 90%, rgba(0,0,0,0.5) 6px, transparent 6px),linear-gradient(to top, gold 22px, transparent 22px),linear-gradient(to top, rgba(0,0,0,0.5) 22px, rgba(0,0,0,0.5) 100%);animation:shake 2s cubic-bezier(0.36, 0.07, 0.19, 0.97) both infinite}.loader-smartphone[data-screen='']:after{content:'Loading'}.loader-smartphone:not([data-screen='']):after{content:attr(data-screen)}@keyframes shake{5%,15%,25%,35%,45%,55%{transform:translate3d(-1px, 0, 0)}10%,20%,30%,40%,50%{transform:translate3d(1px, 0, 0)}} diff --git a/dist/main.min.css b/dist/main.min.css index e7956f6..2a91e14 100644 --- a/dist/main.min.css +++ b/dist/main.min.css @@ -1 +1 @@ -.header__subtitle,.header__title{text-shadow:1px 1px 0 rgba(0,0,0,.2)}*,:after,:before{margin:0;padding:0;list-style:none}body{font-family:'Open Sans',sans-serif;font-weight:400;background-color:#fff;color:#444;font-size:16px}.footer,.header{background-color:#1abc9c;color:#fff;text-align:center}.container{padding-left:10px;padding-right:10px}.footer{padding:20px;border-top:solid 15px #16a085;margin-top:25px}.header{padding:50px 20px;border-bottom:solid 15px #16a085;margin-bottom:25px;position:relative}.header__title{font-weight:700;font-size:54px;letter-spacing:-2px}.header__title:after,.header__title:before{content:'';width:10px;height:10px;display:inline-block;border:5px solid #16a085;border-right-color:transparent;vertical-align:middle;border-radius:50%;animation:rotation 1s infinite linear}.header__title:before{margin-right:10px}.header__title:after{margin-left:10px;animation-duration:1.5s}.header__subtitle{font-weight:300;font-size:24px}@keyframes pulse{to{transform:scale(1.2)}}@keyframes rotation{to{transform:rotate(359deg)}}.heart{color:#e74c3c;display:inline-block;vertical-align:bottom;font-size:22px;animation:pulse .5s linear infinite alternate}.heart--small{font-size:16px;vertical-align:middle}.row{max-width:850px;width:100%;margin:0 auto}.row--space{margin-bottom:25px}.row--flex{display:flex;flex-flow:row wrap;justify-content:flex-start}.box__item,.button,.input{display:inline-block}.box{padding:15px;background-color:#f5f5f5;border:1px solid #dedede;width:25%;margin:10px 10px 10px 0}.box--full{width:100%;margin-right:0}.box__item{margin:8px 0}.box__title,.title,p{margin-bottom:15px}.box__title{font-size:18px;color:#666}.button{border:none;background-color:#1abc9c;color:#fff;font-size:14px;padding:10px 20px;border-radius:5px;text-shadow:1px 1px 0 rgba(0,0,0,.25);box-shadow:0 5px 0 0 #16a085;transition:background .3s ease}.button:focus,.button:hover{background-color:#049372;outline:0}.button:active{transform:translateY(5px);box-shadow:none}.input{padding:8px;max-width:90px;transition:all .3s ease;border:1px solid #eee}.input:focus{border-color:#ccc}a{color:#16a085}a:hover{text-decoration:none}.text-yellow{color:#f1c40f}.text-white{color:#fff}@media screen and (max-width:550px){.header{padding:25px 10px}.header__title{font-size:32px;letter-spacing:0;margin-bottom:15px}.header__subtitle{font-size:20px;line-height:1.4}} \ No newline at end of file +.header__subtitle,.header__title{text-shadow:1px 1px 0 rgba(0,0,0,.2)}*,:after,:before{margin:0;padding:0;list-style:none}body{font-family:'Open Sans',sans-serif;font-weight:400;background-color:#fff;color:#444;font-size:16px}.footer,.header{background-color:#1abc9c;color:#fff;text-align:center}.container{padding-left:10px;padding-right:10px}.footer{padding:20px;border-top:solid 15px #16a085;margin-top:25px}.header{padding:50px 20px;border-bottom:solid 15px #16a085;margin-bottom:25px;position:relative}.header__title{font-weight:700;font-size:54px;letter-spacing:-2px}.header__title:after,.header__title:before{content:'';width:10px;height:10px;display:inline-block;border:5px solid #16a085;border-right-color:transparent;vertical-align:middle;border-radius:50%;animation:rotation 1s infinite linear}.header__title:before{margin-right:10px}.header__title:after{margin-left:10px;animation-duration:1.5s}.header__subtitle{font-weight:300;font-size:24px}@keyframes pulse{to{transform:scale(1.2)}}@keyframes rotation{to{transform:rotate(359deg)}}.heart{color:#e74c3c;display:inline-block;vertical-align:bottom;font-size:22px;animation:pulse .5s linear infinite alternate}.heart--small{font-size:16px;vertical-align:middle}.row{max-width:850px;width:100%;margin:0 auto}.row--space{margin-bottom:25px}.row--flex{display:flex;flex-flow:row wrap;justify-content:flex-start}.box__item,.button,.input{display:inline-block}.box{padding:15px;background-color:#f5f5f5;border:1px solid #dedede;margin:10px 10px 10px 0}.box--full{width:100%;margin-right:0}.box__item{margin:8px 0}.box__title,.title,p{margin-bottom:15px}.box__title{font-size:18px;color:#666}.button{border:none;background-color:#1abc9c;color:#fff;font-size:14px;padding:10px 20px;border-radius:5px;text-shadow:1px 1px 0 rgba(0,0,0,.25);box-shadow:0 5px 0 0 #16a085;transition:background .3s ease}.button:focus,.button:hover{background-color:#049372;outline:0}.button:active{transform:translateY(5px);box-shadow:none}.input{padding:8px;max-width:90px;transition:all .3s ease;border:1px solid #eee}.input:focus{border-color:#ccc}a{color:#16a085}a:hover{text-decoration:none}.text-yellow{color:#f1c40f}.text-white{color:#fff}@media screen and (max-width:550px){.header{padding:25px 10px}.header__title{font-size:32px;letter-spacing:0;margin-bottom:15px}.header__subtitle{font-size:20px;line-height:1.4}} \ No newline at end of file diff --git a/dist/main.min.js b/dist/main.min.js index f1f1f78..b922d38 100644 --- a/dist/main.min.js +++ b/dist/main.min.js @@ -1 +1 @@ -(function(){var loader=document.getElementById("loader");var config=[{button:document.getElementById("loader-default"),className:"loader-default"},{button:document.getElementById("loader-default-half"),className:"loader-default",attributes:[{attribute:"half"}]},{button:document.getElementById("loader-default-blink"),className:"loader-default",attributes:[{attribute:"blink"},{attribute:"data-text"}]},{button:document.getElementById("loader-default-inverse"),className:"loader-default",attributes:[{attribute:"inverse"}]},{button:document.getElementById("loader-default-text"),className:"loader-default",attributes:[{attribute:"data-text"}]},{button:document.getElementById("loader-default-custom-text"),className:"loader-default",attributes:[{attribute:"data-text",value:document.getElementById("custom-text")}]},{button:document.getElementById("loader-double"),className:"loader-double"},{button:document.getElementById("loader-bar"),className:"loader-bar"},{button:document.getElementById("loader-bar-rounded"),className:"loader-bar",attributes:[{attribute:"rounded"}]},{button:document.getElementById("loader-bar-text"),className:"loader-bar",attributes:[{attribute:"data-text"}]},{button:document.getElementById("loader-bar-blink"),className:"loader-bar",attributes:[{attribute:"blink"},{attribute:"data-text"}]},{button:document.getElementById("loader-bar-custom-text"),className:"loader-bar",attributes:[{attribute:"data-text",value:document.getElementById("bar-custom-text")}]},{button:document.getElementById("loader-border"),className:"loader-border"},{button:document.getElementById("loader-border-text"),className:"loader-border",attributes:[{attribute:"data-text"}]},{button:document.getElementById("loader-border-custom-text"),className:"loader-border",attributes:[{attribute:"data-text",value:document.getElementById("border-custom-text")}]},{button:document.getElementById("loader-border-blink"),className:"loader-border",attributes:[{attribute:"data-text"},{attribute:"blink"}]},{button:document.getElementById("loader-ball"),className:"loader-ball"}];var timer;loader.addEventListener("click",function(){for(var i=this.attributes.length-1;i>=0;i--){if(this.attributes[i].name!=="id"){this.removeAttribute(this.attributes[i].name)}}clearTimeout(timer)});for(var i=0;i=0;i--){if(this.attributes[i].name!=="id"){this.removeAttribute(this.attributes[i].name)}}clearTimeout(timer)});for(var i=0;i

Double

Ball

- +
+ +
+
+ +
+
+ +
+

Smartphone

+
+ +
+
+ +
+
+ + +
From 8ccbffce59f394d10a2c4d197c102ef698217725 Mon Sep 17 00:00:00 2001 From: Raphael Fabeni Date: Wed, 26 Oct 2016 23:47:19 -0200 Subject: [PATCH 08/19] Add the loader clock box --- assets/js/main.js | 4 ++++ dist/main.min.js | 2 +- index.html | 11 +++++++++-- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/assets/js/main.js b/assets/js/main.js index cf847a0..5c12ade 100644 --- a/assets/js/main.js +++ b/assets/js/main.js @@ -146,6 +146,10 @@ value: document.getElementById('smartphone-custom-text') } ] + }, + { + button: document.getElementById('loader-clock'), + className: 'loader-clock' } ]; diff --git a/dist/main.min.js b/dist/main.min.js index b922d38..fa784c9 100644 --- a/dist/main.min.js +++ b/dist/main.min.js @@ -1 +1 @@ -(function(){var loader=document.getElementById("loader");var config=[{button:document.getElementById("loader-default"),className:"loader-default"},{button:document.getElementById("loader-default-half"),className:"loader-default",attributes:[{attribute:"half"}]},{button:document.getElementById("loader-default-blink"),className:"loader-default",attributes:[{attribute:"blink"},{attribute:"data-text"}]},{button:document.getElementById("loader-default-inverse"),className:"loader-default",attributes:[{attribute:"inverse"}]},{button:document.getElementById("loader-default-text"),className:"loader-default",attributes:[{attribute:"data-text"}]},{button:document.getElementById("loader-default-custom-text"),className:"loader-default",attributes:[{attribute:"data-text",value:document.getElementById("custom-text")}]},{button:document.getElementById("loader-double"),className:"loader-double"},{button:document.getElementById("loader-bar"),className:"loader-bar"},{button:document.getElementById("loader-bar-rounded"),className:"loader-bar",attributes:[{attribute:"rounded"}]},{button:document.getElementById("loader-bar-text"),className:"loader-bar",attributes:[{attribute:"data-text"}]},{button:document.getElementById("loader-bar-blink"),className:"loader-bar",attributes:[{attribute:"blink"},{attribute:"data-text"}]},{button:document.getElementById("loader-bar-custom-text"),className:"loader-bar",attributes:[{attribute:"data-text",value:document.getElementById("bar-custom-text")}]},{button:document.getElementById("loader-border"),className:"loader-border"},{button:document.getElementById("loader-border-text"),className:"loader-border",attributes:[{attribute:"data-text"}]},{button:document.getElementById("loader-border-custom-text"),className:"loader-border",attributes:[{attribute:"data-text",value:document.getElementById("border-custom-text")}]},{button:document.getElementById("loader-border-blink"),className:"loader-border",attributes:[{attribute:"data-text"},{attribute:"blink"}]},{button:document.getElementById("loader-ball"),className:"loader-ball"},{button:document.getElementById("loader-ball-shadow"),className:"loader-ball",attributes:[{attribute:"shadow"}]},{button:document.getElementById("loader-smartphone"),className:"loader-smartphone"},{button:document.getElementById("loader-smartphone-text"),className:"loader-smartphone",attributes:[{attribute:"data-screen"}]},{button:document.getElementById("loader-smartphone-custom-text"),className:"loader-smartphone",attributes:[{attribute:"data-screen",value:document.getElementById("smartphone-custom-text")}]}];var timer;loader.addEventListener("click",function(){for(var i=this.attributes.length-1;i>=0;i--){if(this.attributes[i].name!=="id"){this.removeAttribute(this.attributes[i].name)}}clearTimeout(timer)});for(var i=0;i=0;i--){if(this.attributes[i].name!=="id"){this.removeAttribute(this.attributes[i].name)}}clearTimeout(timer)});for(var i=0;i - + @@ -92,7 +92,7 @@

Bar

-
+

Border

@@ -116,6 +116,13 @@

Double

+
+

clock

+
+ +
+
+

Ball

From 5c0772c02ff19c75f82ddb4daa048405dcfb30b3 Mon Sep 17 00:00:00 2001 From: Raphael Fabeni Date: Wed, 26 Oct 2016 23:47:48 -0200 Subject: [PATCH 09/19] Remove the loader css file and use the CDN instead --- dist/css-loader.css | 1 - 1 file changed, 1 deletion(-) delete mode 100644 dist/css-loader.css diff --git a/dist/css-loader.css b/dist/css-loader.css deleted file mode 100644 index 45adf35..0000000 --- a/dist/css-loader.css +++ /dev/null @@ -1 +0,0 @@ -.loader{color:#fff;position:fixed;box-sizing:border-box;left:-9999px;top:-9999px;width:0;height:0;overflow:hidden;z-index:999999}.loader:after,.loader:before{box-sizing:border-box}.loader.is-active{background-color:rgba(0,0,0,0.85);width:100%;height:100%;left:0;top:0}@keyframes rotation{from{transform:rotate(0)}to{transform:rotate(359deg)}}@keyframes blink{from{opacity:.5}to{opacity:1}}.loader[data-text]:before{position:fixed;left:0;top:50%;color:currentColor;font-family:Helvetica,Arial,sans-serif;text-align:center;width:100%;font-size:14px}.loader[data-text='']:before{content:'Loading'}.loader:not([data-text='']):before{content:attr(data-text)}.loader[blink]:before{animation:blink 1s linear infinite alternate}.loader-default[data-text]:before{top:calc(50% - 63px)}.loader-default:after{content:'';position:fixed;width:48px;height:48px;border:solid 8px #fff;border-left-color:transparent;border-radius:50%;top:calc(50% - 24px);left:calc(50% - 24px);animation:rotation 1s linear infinite}.loader-default[half]:after{border-right-color:transparent}.loader-default[inverse]:after{animation-direction:reverse}.loader-double:after,.loader-double:before{content:'';position:fixed;border-radius:50%;border:solid 8px;animation:rotation 1s linear infinite}.loader-double:after{width:48px;height:48px;border-color:#fff;border-left-color:transparent;top:calc(50% - 24px);left:calc(50% - 24px)}.loader-double:before{width:64px;height:64px;border-color:#eb974e;border-right-color:transparent;animation-duration:2s;top:calc(50% - 32px);left:calc(50% - 32px)}.loader-bar[data-text]:before{top:calc(50% - 40px);color:#fff}.loader-bar:after{content:'';position:fixed;top:50%;left:50%;width:200px;height:20px;transform:translate(-50%, -50%);background:linear-gradient(-45deg, #4183d7 25%, #52b3d9 25%, #52b3d9 50%, #4183d7 50%, #4183d7 75%, #52b3d9 75%, #52b3d9);background-size:20px 20px;box-shadow:inset 0 10px 0 rgba(255,255,255,0.2),0 0 0 5px rgba(0,0,0,0.2);animation:moveBar 1.5s linear infinite}.loader-bar[rounded]:after{border-radius:15px}@keyframes moveBar{from{background-position:0 0}to{background-position:20px 20px}}@keyframes corners{6%{width:60px;height:15px}25%{width:15px;height:15px;left:calc(100% - 15px);top:0}31%{height:60px}50%{height:15px;top:calc(100% - 15px);left:calc(100% - 15px)}56%{width:60px}75%{width:15px;left:0;top:calc(100% - 15px)}81%{height:60px}}.loader-border[data-text]:before{color:#fff}.loader-border:after{content:'';position:absolute;top:0;left:0;width:15px;height:15px;background-color:#ff0;animation:corners 3s ease both infinite}.loader-ball:before{content:'';position:absolute;width:50px;height:50px;top:50%;left:50%;margin:-25px 0 0 -25px;background-color:#fff;border-radius:50%;z-index:1;animation:kick 1s infinite alternate ease-in both}.loader-ball[shadow]:before{box-shadow:-5px -5px 10px 0 rgba(0,0,0,0.5) inset}.loader-ball:after{content:'';position:absolute;background-color:rgba(0,0,0,0.3);border-radius:50%;width:45px;height:20px;top:calc(50% + 10px);left:50%;margin:0 0 0 -22.5px;z-index:0;animation:shadow 1s infinite alternate ease-out both}@keyframes shadow{0%,40%{background-color:transparent;transform:scale(0)}95%,100%{background-color:rgba(0,0,0,0.75);transform:scale(1)}}@keyframes kick{0%{transform:translateY(-80px) scaleX(0.95)}90%{border-radius:50%}100%{transform:translateY(0) scaleX(1);border-radius:50% 50% 20% 20%}}.loader-smartphone:after{content:'';color:#fff;font-size:12px;font-family:Helvetica,Arial,sans-serif;text-align:center;line-height:120px;position:fixed;left:50%;top:50%;width:70px;height:130px;margin:-65px 0 0 -35px;border:solid 5px gold;border-radius:10px;box-shadow:0 5px 0 0 gold inset;background:radial-gradient(circle at 50% 90%, rgba(0,0,0,0.5) 6px, transparent 6px),linear-gradient(to top, gold 22px, transparent 22px),linear-gradient(to top, rgba(0,0,0,0.5) 22px, rgba(0,0,0,0.5) 100%);animation:shake 2s cubic-bezier(0.36, 0.07, 0.19, 0.97) both infinite}.loader-smartphone[data-screen='']:after{content:'Loading'}.loader-smartphone:not([data-screen='']):after{content:attr(data-screen)}@keyframes shake{5%,15%,25%,35%,45%,55%{transform:translate3d(-1px, 0, 0)}10%,20%,30%,40%,50%{transform:translate3d(1px, 0, 0)}} From f2653dd799f108a5d7631a608e5c4e2f147bbde6 Mon Sep 17 00:00:00 2001 From: Raphael Fabeni Date: Mon, 7 Nov 2016 17:16:51 -0200 Subject: [PATCH 10/19] Update meta description --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index aa4d4fa..a023ae8 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ CSS Loader - + From 97c96adf1a69b272787ea3d30543cbb89e6b592d Mon Sep 17 00:00:00 2001 From: Raphael Fabeni Date: Tue, 8 Nov 2016 00:03:57 -0200 Subject: [PATCH 11/19] Add the examples for loader curtain --- assets/js/main.js | 28 ++++++++++++++++++++++++++++ dist/main.min.js | 2 +- index.html | 21 +++++++++++++++++++-- 3 files changed, 48 insertions(+), 3 deletions(-) diff --git a/assets/js/main.js b/assets/js/main.js index 5c12ade..f87cda4 100644 --- a/assets/js/main.js +++ b/assets/js/main.js @@ -150,6 +150,34 @@ { button: document.getElementById('loader-clock'), className: 'loader-clock' + }, + { + button: document.getElementById('loader-curtain'), + className: 'loader-curtain' + }, + { + button: document.getElementById('loader-curtain-brazilian'), + className: 'loader-curtain', + attributes: [ + { attribute: 'brazilian' } + ] + }, + { + button: document.getElementById('loader-curtain-colorful'), + className: 'loader-curtain', + attributes: [ + { attribute: 'colorful' } + ] + }, + { + button: document.getElementById('loader-curtain-custom-text'), + className: 'loader-curtain', + attributes: [ + { + attribute: 'curtain-text', + value: document.getElementById('curtain-custom-text') + } + ] } ]; diff --git a/dist/main.min.js b/dist/main.min.js index fa784c9..3c131c0 100644 --- a/dist/main.min.js +++ b/dist/main.min.js @@ -1 +1 @@ -(function(){var loader=document.getElementById("loader");var config=[{button:document.getElementById("loader-default"),className:"loader-default"},{button:document.getElementById("loader-default-half"),className:"loader-default",attributes:[{attribute:"half"}]},{button:document.getElementById("loader-default-blink"),className:"loader-default",attributes:[{attribute:"blink"},{attribute:"data-text"}]},{button:document.getElementById("loader-default-inverse"),className:"loader-default",attributes:[{attribute:"inverse"}]},{button:document.getElementById("loader-default-text"),className:"loader-default",attributes:[{attribute:"data-text"}]},{button:document.getElementById("loader-default-custom-text"),className:"loader-default",attributes:[{attribute:"data-text",value:document.getElementById("custom-text")}]},{button:document.getElementById("loader-double"),className:"loader-double"},{button:document.getElementById("loader-bar"),className:"loader-bar"},{button:document.getElementById("loader-bar-rounded"),className:"loader-bar",attributes:[{attribute:"rounded"}]},{button:document.getElementById("loader-bar-text"),className:"loader-bar",attributes:[{attribute:"data-text"}]},{button:document.getElementById("loader-bar-blink"),className:"loader-bar",attributes:[{attribute:"blink"},{attribute:"data-text"}]},{button:document.getElementById("loader-bar-custom-text"),className:"loader-bar",attributes:[{attribute:"data-text",value:document.getElementById("bar-custom-text")}]},{button:document.getElementById("loader-border"),className:"loader-border"},{button:document.getElementById("loader-border-text"),className:"loader-border",attributes:[{attribute:"data-text"}]},{button:document.getElementById("loader-border-custom-text"),className:"loader-border",attributes:[{attribute:"data-text",value:document.getElementById("border-custom-text")}]},{button:document.getElementById("loader-border-blink"),className:"loader-border",attributes:[{attribute:"data-text"},{attribute:"blink"}]},{button:document.getElementById("loader-ball"),className:"loader-ball"},{button:document.getElementById("loader-ball-shadow"),className:"loader-ball",attributes:[{attribute:"shadow"}]},{button:document.getElementById("loader-smartphone"),className:"loader-smartphone"},{button:document.getElementById("loader-smartphone-text"),className:"loader-smartphone",attributes:[{attribute:"data-screen"}]},{button:document.getElementById("loader-smartphone-custom-text"),className:"loader-smartphone",attributes:[{attribute:"data-screen",value:document.getElementById("smartphone-custom-text")}]},{button:document.getElementById("loader-clock"),className:"loader-clock"}];var timer;loader.addEventListener("click",function(){for(var i=this.attributes.length-1;i>=0;i--){if(this.attributes[i].name!=="id"){this.removeAttribute(this.attributes[i].name)}}clearTimeout(timer)});for(var i=0;i=0;i--){if(this.attributes[i].name!=="id"){this.removeAttribute(this.attributes[i].name)}}clearTimeout(timer)});for(var i=0;i - + @@ -117,12 +117,29 @@

Double

-

clock

+

Clock

+
+

Curtain

+
+ +
+
+ +
+
+ +
+
+ + +
+
+

Ball

From 24ddc38260ff8a56b32ae4afc63cefe8857ba346 Mon Sep 17 00:00:00 2001 From: Raphael Fabeni Date: Tue, 15 Nov 2016 10:35:55 -0200 Subject: [PATCH 12/19] Add the music loaders examples --- assets/js/main.js | 28 ++++++++++++++++++++++++++++ dist/main.min.js | 2 +- index.html | 18 +++++++++++++++++- 3 files changed, 46 insertions(+), 2 deletions(-) diff --git a/assets/js/main.js b/assets/js/main.js index f87cda4..4fc935a 100644 --- a/assets/js/main.js +++ b/assets/js/main.js @@ -178,6 +178,34 @@ value: document.getElementById('curtain-custom-text') } ] + }, + { + button: document.getElementById('loader-music-hey-oh'), + className: 'loader-music', + attributes: [ + { attribute: 'hey-oh' } + ] + }, + { + button: document.getElementById('loader-music-no-cry'), + className: 'loader-music', + attributes: [ + { attribute: 'no-cry' } + ] + }, + { + button: document.getElementById('loader-music-we-are'), + className: 'loader-music', + attributes: [ + { attribute: 'we-are' } + ] + }, + { + button: document.getElementById('loader-music-rock-you'), + className: 'loader-music', + attributes: [ + { attribute: 'rock-you' } + ] } ]; diff --git a/dist/main.min.js b/dist/main.min.js index 3c131c0..a103b61 100644 --- a/dist/main.min.js +++ b/dist/main.min.js @@ -1 +1 @@ -(function(){var loader=document.getElementById("loader");var config=[{button:document.getElementById("loader-default"),className:"loader-default"},{button:document.getElementById("loader-default-half"),className:"loader-default",attributes:[{attribute:"half"}]},{button:document.getElementById("loader-default-blink"),className:"loader-default",attributes:[{attribute:"blink"},{attribute:"data-text"}]},{button:document.getElementById("loader-default-inverse"),className:"loader-default",attributes:[{attribute:"inverse"}]},{button:document.getElementById("loader-default-text"),className:"loader-default",attributes:[{attribute:"data-text"}]},{button:document.getElementById("loader-default-custom-text"),className:"loader-default",attributes:[{attribute:"data-text",value:document.getElementById("custom-text")}]},{button:document.getElementById("loader-double"),className:"loader-double"},{button:document.getElementById("loader-bar"),className:"loader-bar"},{button:document.getElementById("loader-bar-rounded"),className:"loader-bar",attributes:[{attribute:"rounded"}]},{button:document.getElementById("loader-bar-text"),className:"loader-bar",attributes:[{attribute:"data-text"}]},{button:document.getElementById("loader-bar-blink"),className:"loader-bar",attributes:[{attribute:"blink"},{attribute:"data-text"}]},{button:document.getElementById("loader-bar-custom-text"),className:"loader-bar",attributes:[{attribute:"data-text",value:document.getElementById("bar-custom-text")}]},{button:document.getElementById("loader-border"),className:"loader-border"},{button:document.getElementById("loader-border-text"),className:"loader-border",attributes:[{attribute:"data-text"}]},{button:document.getElementById("loader-border-custom-text"),className:"loader-border",attributes:[{attribute:"data-text",value:document.getElementById("border-custom-text")}]},{button:document.getElementById("loader-border-blink"),className:"loader-border",attributes:[{attribute:"data-text"},{attribute:"blink"}]},{button:document.getElementById("loader-ball"),className:"loader-ball"},{button:document.getElementById("loader-ball-shadow"),className:"loader-ball",attributes:[{attribute:"shadow"}]},{button:document.getElementById("loader-smartphone"),className:"loader-smartphone"},{button:document.getElementById("loader-smartphone-text"),className:"loader-smartphone",attributes:[{attribute:"data-screen"}]},{button:document.getElementById("loader-smartphone-custom-text"),className:"loader-smartphone",attributes:[{attribute:"data-screen",value:document.getElementById("smartphone-custom-text")}]},{button:document.getElementById("loader-clock"),className:"loader-clock"},{button:document.getElementById("loader-curtain"),className:"loader-curtain"},{button:document.getElementById("loader-curtain-brazilian"),className:"loader-curtain",attributes:[{attribute:"brazilian"}]},{button:document.getElementById("loader-curtain-colorful"),className:"loader-curtain",attributes:[{attribute:"colorful"}]},{button:document.getElementById("loader-curtain-custom-text"),className:"loader-curtain",attributes:[{attribute:"curtain-text",value:document.getElementById("curtain-custom-text")}]}];var timer;loader.addEventListener("click",function(){for(var i=this.attributes.length-1;i>=0;i--){if(this.attributes[i].name!=="id"){this.removeAttribute(this.attributes[i].name)}}clearTimeout(timer)});for(var i=0;i=0;i--){if(this.attributes[i].name!=="id"){this.removeAttribute(this.attributes[i].name)}}clearTimeout(timer)});for(var i=0;i - + @@ -164,6 +164,22 @@

Smartphone

+
+

Music

+
+ +
+
+ +
+
+ +
+
+ +
+
+
From 15f9853ab8b1cac487d1d058a62c11127c9a24d9 Mon Sep 17 00:00:00 2001 From: Raphael Fabeni Date: Sat, 19 Nov 2016 20:26:43 -0200 Subject: [PATCH 13/19] Change all the attributes according to the new pattern --- assets/js/main.js | 28 ++++++++++++++-------------- dist/main.min.js | 2 +- index.html | 2 +- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/assets/js/main.js b/assets/js/main.js index 4fc935a..3407df9 100644 --- a/assets/js/main.js +++ b/assets/js/main.js @@ -11,14 +11,14 @@ button: document.getElementById('loader-default-half'), className: 'loader-default', attributes: [ - { attribute: 'half' } + { attribute: 'data-half' } ] }, { button: document.getElementById('loader-default-blink'), className: 'loader-default', attributes: [ - { attribute: 'blink' }, + { attribute: 'data-blink' }, { attribute: 'data-text' } ] }, @@ -26,7 +26,7 @@ button: document.getElementById('loader-default-inverse'), className: 'loader-default', attributes: [ - { attribute: 'inverse' } + { attribute: 'data-inverse' } ] }, { @@ -58,7 +58,7 @@ button: document.getElementById('loader-bar-rounded'), className: 'loader-bar', attributes: [ - { attribute: 'rounded' } + { attribute: 'data-rounded' } ] }, { @@ -72,7 +72,7 @@ button: document.getElementById('loader-bar-blink'), className: 'loader-bar', attributes: [ - { attribute: 'blink' }, + { attribute: 'data-blink' }, { attribute: 'data-text' } ] }, @@ -112,7 +112,7 @@ className: 'loader-border', attributes: [ { attribute: 'data-text' }, - { attribute: 'blink' } + { attribute: 'data-blink' } ] }, { @@ -123,7 +123,7 @@ button: document.getElementById('loader-ball-shadow'), className: 'loader-ball', attributes: [ - { attribute: 'shadow' } + { attribute: 'data-shadow' } ] }, { @@ -159,14 +159,14 @@ button: document.getElementById('loader-curtain-brazilian'), className: 'loader-curtain', attributes: [ - { attribute: 'brazilian' } + { attribute: 'data-brazilian' } ] }, { button: document.getElementById('loader-curtain-colorful'), className: 'loader-curtain', attributes: [ - { attribute: 'colorful' } + { attribute: 'data-colorful' } ] }, { @@ -174,7 +174,7 @@ className: 'loader-curtain', attributes: [ { - attribute: 'curtain-text', + attribute: 'data-curtain-text', value: document.getElementById('curtain-custom-text') } ] @@ -183,28 +183,28 @@ button: document.getElementById('loader-music-hey-oh'), className: 'loader-music', attributes: [ - { attribute: 'hey-oh' } + { attribute: 'data-hey-oh' } ] }, { button: document.getElementById('loader-music-no-cry'), className: 'loader-music', attributes: [ - { attribute: 'no-cry' } + { attribute: 'data-no-cry' } ] }, { button: document.getElementById('loader-music-we-are'), className: 'loader-music', attributes: [ - { attribute: 'we-are' } + { attribute: 'data-we-are' } ] }, { button: document.getElementById('loader-music-rock-you'), className: 'loader-music', attributes: [ - { attribute: 'rock-you' } + { attribute: 'data-rock-you' } ] } ]; diff --git a/dist/main.min.js b/dist/main.min.js index a103b61..b46a9c4 100644 --- a/dist/main.min.js +++ b/dist/main.min.js @@ -1 +1 @@ -(function(){var loader=document.getElementById("loader");var config=[{button:document.getElementById("loader-default"),className:"loader-default"},{button:document.getElementById("loader-default-half"),className:"loader-default",attributes:[{attribute:"half"}]},{button:document.getElementById("loader-default-blink"),className:"loader-default",attributes:[{attribute:"blink"},{attribute:"data-text"}]},{button:document.getElementById("loader-default-inverse"),className:"loader-default",attributes:[{attribute:"inverse"}]},{button:document.getElementById("loader-default-text"),className:"loader-default",attributes:[{attribute:"data-text"}]},{button:document.getElementById("loader-default-custom-text"),className:"loader-default",attributes:[{attribute:"data-text",value:document.getElementById("custom-text")}]},{button:document.getElementById("loader-double"),className:"loader-double"},{button:document.getElementById("loader-bar"),className:"loader-bar"},{button:document.getElementById("loader-bar-rounded"),className:"loader-bar",attributes:[{attribute:"rounded"}]},{button:document.getElementById("loader-bar-text"),className:"loader-bar",attributes:[{attribute:"data-text"}]},{button:document.getElementById("loader-bar-blink"),className:"loader-bar",attributes:[{attribute:"blink"},{attribute:"data-text"}]},{button:document.getElementById("loader-bar-custom-text"),className:"loader-bar",attributes:[{attribute:"data-text",value:document.getElementById("bar-custom-text")}]},{button:document.getElementById("loader-border"),className:"loader-border"},{button:document.getElementById("loader-border-text"),className:"loader-border",attributes:[{attribute:"data-text"}]},{button:document.getElementById("loader-border-custom-text"),className:"loader-border",attributes:[{attribute:"data-text",value:document.getElementById("border-custom-text")}]},{button:document.getElementById("loader-border-blink"),className:"loader-border",attributes:[{attribute:"data-text"},{attribute:"blink"}]},{button:document.getElementById("loader-ball"),className:"loader-ball"},{button:document.getElementById("loader-ball-shadow"),className:"loader-ball",attributes:[{attribute:"shadow"}]},{button:document.getElementById("loader-smartphone"),className:"loader-smartphone"},{button:document.getElementById("loader-smartphone-text"),className:"loader-smartphone",attributes:[{attribute:"data-screen"}]},{button:document.getElementById("loader-smartphone-custom-text"),className:"loader-smartphone",attributes:[{attribute:"data-screen",value:document.getElementById("smartphone-custom-text")}]},{button:document.getElementById("loader-clock"),className:"loader-clock"},{button:document.getElementById("loader-curtain"),className:"loader-curtain"},{button:document.getElementById("loader-curtain-brazilian"),className:"loader-curtain",attributes:[{attribute:"brazilian"}]},{button:document.getElementById("loader-curtain-colorful"),className:"loader-curtain",attributes:[{attribute:"colorful"}]},{button:document.getElementById("loader-curtain-custom-text"),className:"loader-curtain",attributes:[{attribute:"curtain-text",value:document.getElementById("curtain-custom-text")}]},{button:document.getElementById("loader-music-hey-oh"),className:"loader-music",attributes:[{attribute:"hey-oh"}]},{button:document.getElementById("loader-music-no-cry"),className:"loader-music",attributes:[{attribute:"no-cry"}]},{button:document.getElementById("loader-music-we-are"),className:"loader-music",attributes:[{attribute:"we-are"}]},{button:document.getElementById("loader-music-rock-you"),className:"loader-music",attributes:[{attribute:"rock-you"}]}];var timer;loader.addEventListener("click",function(){for(var i=this.attributes.length-1;i>=0;i--){if(this.attributes[i].name!=="id"){this.removeAttribute(this.attributes[i].name)}}clearTimeout(timer)});for(var i=0;i=0;i--){if(this.attributes[i].name!=="id"){this.removeAttribute(this.attributes[i].name)}}clearTimeout(timer)});for(var i=0;i - + From 9b10958ac523d5c1d3c69e8f205c93b617f41a7e Mon Sep 17 00:00:00 2001 From: Raphael Fabeni Date: Wed, 8 Feb 2017 19:40:49 -0200 Subject: [PATCH 14/19] Add the pokeball loader --- assets/js/main.js | 4 ++++ dist/main.min.js | 2 +- index.html | 9 ++++++++- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/assets/js/main.js b/assets/js/main.js index 3407df9..0c67084 100644 --- a/assets/js/main.js +++ b/assets/js/main.js @@ -206,6 +206,10 @@ attributes: [ { attribute: 'data-rock-you' } ] + }, + { + button: document.getElementById('loader-pokeball'), + className: 'loader-pokeball' } ]; diff --git a/dist/main.min.js b/dist/main.min.js index b46a9c4..5661e84 100644 --- a/dist/main.min.js +++ b/dist/main.min.js @@ -1 +1 @@ -(function(){var loader=document.getElementById("loader");var config=[{button:document.getElementById("loader-default"),className:"loader-default"},{button:document.getElementById("loader-default-half"),className:"loader-default",attributes:[{attribute:"data-half"}]},{button:document.getElementById("loader-default-blink"),className:"loader-default",attributes:[{attribute:"data-blink"},{attribute:"data-text"}]},{button:document.getElementById("loader-default-inverse"),className:"loader-default",attributes:[{attribute:"data-inverse"}]},{button:document.getElementById("loader-default-text"),className:"loader-default",attributes:[{attribute:"data-text"}]},{button:document.getElementById("loader-default-custom-text"),className:"loader-default",attributes:[{attribute:"data-text",value:document.getElementById("custom-text")}]},{button:document.getElementById("loader-double"),className:"loader-double"},{button:document.getElementById("loader-bar"),className:"loader-bar"},{button:document.getElementById("loader-bar-rounded"),className:"loader-bar",attributes:[{attribute:"data-rounded"}]},{button:document.getElementById("loader-bar-text"),className:"loader-bar",attributes:[{attribute:"data-text"}]},{button:document.getElementById("loader-bar-blink"),className:"loader-bar",attributes:[{attribute:"data-blink"},{attribute:"data-text"}]},{button:document.getElementById("loader-bar-custom-text"),className:"loader-bar",attributes:[{attribute:"data-text",value:document.getElementById("bar-custom-text")}]},{button:document.getElementById("loader-border"),className:"loader-border"},{button:document.getElementById("loader-border-text"),className:"loader-border",attributes:[{attribute:"data-text"}]},{button:document.getElementById("loader-border-custom-text"),className:"loader-border",attributes:[{attribute:"data-text",value:document.getElementById("border-custom-text")}]},{button:document.getElementById("loader-border-blink"),className:"loader-border",attributes:[{attribute:"data-text"},{attribute:"data-blink"}]},{button:document.getElementById("loader-ball"),className:"loader-ball"},{button:document.getElementById("loader-ball-shadow"),className:"loader-ball",attributes:[{attribute:"data-shadow"}]},{button:document.getElementById("loader-smartphone"),className:"loader-smartphone"},{button:document.getElementById("loader-smartphone-text"),className:"loader-smartphone",attributes:[{attribute:"data-screen"}]},{button:document.getElementById("loader-smartphone-custom-text"),className:"loader-smartphone",attributes:[{attribute:"data-screen",value:document.getElementById("smartphone-custom-text")}]},{button:document.getElementById("loader-clock"),className:"loader-clock"},{button:document.getElementById("loader-curtain"),className:"loader-curtain"},{button:document.getElementById("loader-curtain-brazilian"),className:"loader-curtain",attributes:[{attribute:"data-brazilian"}]},{button:document.getElementById("loader-curtain-colorful"),className:"loader-curtain",attributes:[{attribute:"data-colorful"}]},{button:document.getElementById("loader-curtain-custom-text"),className:"loader-curtain",attributes:[{attribute:"data-curtain-text",value:document.getElementById("curtain-custom-text")}]},{button:document.getElementById("loader-music-hey-oh"),className:"loader-music",attributes:[{attribute:"data-hey-oh"}]},{button:document.getElementById("loader-music-no-cry"),className:"loader-music",attributes:[{attribute:"data-no-cry"}]},{button:document.getElementById("loader-music-we-are"),className:"loader-music",attributes:[{attribute:"data-we-are"}]},{button:document.getElementById("loader-music-rock-you"),className:"loader-music",attributes:[{attribute:"data-rock-you"}]}];var timer;loader.addEventListener("click",function(){for(var i=this.attributes.length-1;i>=0;i--){if(this.attributes[i].name!=="id"){this.removeAttribute(this.attributes[i].name)}}clearTimeout(timer)});for(var i=0;i=0;i--){if(this.attributes[i].name!=="id"){this.removeAttribute(this.attributes[i].name)}}clearTimeout(timer)});for(var i=0;i - + @@ -140,6 +140,13 @@

Curtain

+
+

Pokeball

+
+ +
+
+

Ball

From 9cdee956fa76afca70ff7955a63198a351d94541 Mon Sep 17 00:00:00 2001 From: Raphael Fabeni Date: Tue, 21 Feb 2017 19:45:45 -0300 Subject: [PATCH 15/19] Update the css URL --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index e0034c3..8dbc8b2 100644 --- a/index.html +++ b/index.html @@ -26,7 +26,7 @@ - + From 93aa7a4dbda68e22718ecf598693b2ee47e9db01 Mon Sep 17 00:00:00 2001 From: Raphael Fabeni Date: Thu, 23 Feb 2017 23:20:50 -0300 Subject: [PATCH 16/19] Add the new css for data-inverse in the loader bar --- assets/js/main.js | 7 +++++++ dist/main.min.js | 2 +- index.html | 5 ++++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/assets/js/main.js b/assets/js/main.js index 0c67084..3a4916d 100644 --- a/assets/js/main.js +++ b/assets/js/main.js @@ -61,6 +61,13 @@ { attribute: 'data-rounded' } ] }, + { + button: document.getElementById('loader-bar-inverse'), + className: 'loader-bar', + attributes: [ + { attribute: 'data-inverse' } + ] + }, { button: document.getElementById('loader-bar-text'), className: 'loader-bar', diff --git a/dist/main.min.js b/dist/main.min.js index 5661e84..3865735 100644 --- a/dist/main.min.js +++ b/dist/main.min.js @@ -1 +1 @@ -(function(){var loader=document.getElementById("loader");var config=[{button:document.getElementById("loader-default"),className:"loader-default"},{button:document.getElementById("loader-default-half"),className:"loader-default",attributes:[{attribute:"data-half"}]},{button:document.getElementById("loader-default-blink"),className:"loader-default",attributes:[{attribute:"data-blink"},{attribute:"data-text"}]},{button:document.getElementById("loader-default-inverse"),className:"loader-default",attributes:[{attribute:"data-inverse"}]},{button:document.getElementById("loader-default-text"),className:"loader-default",attributes:[{attribute:"data-text"}]},{button:document.getElementById("loader-default-custom-text"),className:"loader-default",attributes:[{attribute:"data-text",value:document.getElementById("custom-text")}]},{button:document.getElementById("loader-double"),className:"loader-double"},{button:document.getElementById("loader-bar"),className:"loader-bar"},{button:document.getElementById("loader-bar-rounded"),className:"loader-bar",attributes:[{attribute:"data-rounded"}]},{button:document.getElementById("loader-bar-text"),className:"loader-bar",attributes:[{attribute:"data-text"}]},{button:document.getElementById("loader-bar-blink"),className:"loader-bar",attributes:[{attribute:"data-blink"},{attribute:"data-text"}]},{button:document.getElementById("loader-bar-custom-text"),className:"loader-bar",attributes:[{attribute:"data-text",value:document.getElementById("bar-custom-text")}]},{button:document.getElementById("loader-border"),className:"loader-border"},{button:document.getElementById("loader-border-text"),className:"loader-border",attributes:[{attribute:"data-text"}]},{button:document.getElementById("loader-border-custom-text"),className:"loader-border",attributes:[{attribute:"data-text",value:document.getElementById("border-custom-text")}]},{button:document.getElementById("loader-border-blink"),className:"loader-border",attributes:[{attribute:"data-text"},{attribute:"data-blink"}]},{button:document.getElementById("loader-ball"),className:"loader-ball"},{button:document.getElementById("loader-ball-shadow"),className:"loader-ball",attributes:[{attribute:"data-shadow"}]},{button:document.getElementById("loader-smartphone"),className:"loader-smartphone"},{button:document.getElementById("loader-smartphone-text"),className:"loader-smartphone",attributes:[{attribute:"data-screen"}]},{button:document.getElementById("loader-smartphone-custom-text"),className:"loader-smartphone",attributes:[{attribute:"data-screen",value:document.getElementById("smartphone-custom-text")}]},{button:document.getElementById("loader-clock"),className:"loader-clock"},{button:document.getElementById("loader-curtain"),className:"loader-curtain"},{button:document.getElementById("loader-curtain-brazilian"),className:"loader-curtain",attributes:[{attribute:"data-brazilian"}]},{button:document.getElementById("loader-curtain-colorful"),className:"loader-curtain",attributes:[{attribute:"data-colorful"}]},{button:document.getElementById("loader-curtain-custom-text"),className:"loader-curtain",attributes:[{attribute:"data-curtain-text",value:document.getElementById("curtain-custom-text")}]},{button:document.getElementById("loader-music-hey-oh"),className:"loader-music",attributes:[{attribute:"data-hey-oh"}]},{button:document.getElementById("loader-music-no-cry"),className:"loader-music",attributes:[{attribute:"data-no-cry"}]},{button:document.getElementById("loader-music-we-are"),className:"loader-music",attributes:[{attribute:"data-we-are"}]},{button:document.getElementById("loader-music-rock-you"),className:"loader-music",attributes:[{attribute:"data-rock-you"}]},{button:document.getElementById("loader-pokeball"),className:"loader-pokeball"}];var timer;loader.addEventListener("click",function(){for(var i=this.attributes.length-1;i>=0;i--){if(this.attributes[i].name!=="id"){this.removeAttribute(this.attributes[i].name)}}clearTimeout(timer)});for(var i=0;i=0;i--){if(this.attributes[i].name!=="id"){this.removeAttribute(this.attributes[i].name)}}clearTimeout(timer)});for(var i=0;i - + @@ -83,6 +83,9 @@

Bar

+
+ +
From f326fc6d76559dda3e908b7104337ae64da4cdfe Mon Sep 17 00:00:00 2001 From: Raphael Fabeni Date: Sun, 5 Mar 2017 18:02:07 -0300 Subject: [PATCH 17/19] Add the example for loader bar ping pong --- assets/js/main.js | 11 +++++++++++ dist/main.min.js | 2 +- index.html | 12 +++++++++++- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/assets/js/main.js b/assets/js/main.js index 3a4916d..2ec07d5 100644 --- a/assets/js/main.js +++ b/assets/js/main.js @@ -93,6 +93,17 @@ } ] }, + { + button: document.getElementById('loader-bar-ping-pong'), + className: 'loader-bar-ping-pong' + }, + { + button: document.getElementById('loader-bar-ping-pong-rounded'), + className: 'loader-bar-ping-pong', + attributes: [ + { attribute: 'data-rounded' } + ] + }, { button: document.getElementById('loader-border'), className: 'loader-border' diff --git a/dist/main.min.js b/dist/main.min.js index 3865735..8d1c45f 100644 --- a/dist/main.min.js +++ b/dist/main.min.js @@ -1 +1 @@ -(function(){var loader=document.getElementById("loader");var config=[{button:document.getElementById("loader-default"),className:"loader-default"},{button:document.getElementById("loader-default-half"),className:"loader-default",attributes:[{attribute:"data-half"}]},{button:document.getElementById("loader-default-blink"),className:"loader-default",attributes:[{attribute:"data-blink"},{attribute:"data-text"}]},{button:document.getElementById("loader-default-inverse"),className:"loader-default",attributes:[{attribute:"data-inverse"}]},{button:document.getElementById("loader-default-text"),className:"loader-default",attributes:[{attribute:"data-text"}]},{button:document.getElementById("loader-default-custom-text"),className:"loader-default",attributes:[{attribute:"data-text",value:document.getElementById("custom-text")}]},{button:document.getElementById("loader-double"),className:"loader-double"},{button:document.getElementById("loader-bar"),className:"loader-bar"},{button:document.getElementById("loader-bar-rounded"),className:"loader-bar",attributes:[{attribute:"data-rounded"}]},{button:document.getElementById("loader-bar-inverse"),className:"loader-bar",attributes:[{attribute:"data-inverse"}]},{button:document.getElementById("loader-bar-text"),className:"loader-bar",attributes:[{attribute:"data-text"}]},{button:document.getElementById("loader-bar-blink"),className:"loader-bar",attributes:[{attribute:"data-blink"},{attribute:"data-text"}]},{button:document.getElementById("loader-bar-custom-text"),className:"loader-bar",attributes:[{attribute:"data-text",value:document.getElementById("bar-custom-text")}]},{button:document.getElementById("loader-border"),className:"loader-border"},{button:document.getElementById("loader-border-text"),className:"loader-border",attributes:[{attribute:"data-text"}]},{button:document.getElementById("loader-border-custom-text"),className:"loader-border",attributes:[{attribute:"data-text",value:document.getElementById("border-custom-text")}]},{button:document.getElementById("loader-border-blink"),className:"loader-border",attributes:[{attribute:"data-text"},{attribute:"data-blink"}]},{button:document.getElementById("loader-ball"),className:"loader-ball"},{button:document.getElementById("loader-ball-shadow"),className:"loader-ball",attributes:[{attribute:"data-shadow"}]},{button:document.getElementById("loader-smartphone"),className:"loader-smartphone"},{button:document.getElementById("loader-smartphone-text"),className:"loader-smartphone",attributes:[{attribute:"data-screen"}]},{button:document.getElementById("loader-smartphone-custom-text"),className:"loader-smartphone",attributes:[{attribute:"data-screen",value:document.getElementById("smartphone-custom-text")}]},{button:document.getElementById("loader-clock"),className:"loader-clock"},{button:document.getElementById("loader-curtain"),className:"loader-curtain"},{button:document.getElementById("loader-curtain-brazilian"),className:"loader-curtain",attributes:[{attribute:"data-brazilian"}]},{button:document.getElementById("loader-curtain-colorful"),className:"loader-curtain",attributes:[{attribute:"data-colorful"}]},{button:document.getElementById("loader-curtain-custom-text"),className:"loader-curtain",attributes:[{attribute:"data-curtain-text",value:document.getElementById("curtain-custom-text")}]},{button:document.getElementById("loader-music-hey-oh"),className:"loader-music",attributes:[{attribute:"data-hey-oh"}]},{button:document.getElementById("loader-music-no-cry"),className:"loader-music",attributes:[{attribute:"data-no-cry"}]},{button:document.getElementById("loader-music-we-are"),className:"loader-music",attributes:[{attribute:"data-we-are"}]},{button:document.getElementById("loader-music-rock-you"),className:"loader-music",attributes:[{attribute:"data-rock-you"}]},{button:document.getElementById("loader-pokeball"),className:"loader-pokeball"}];var timer;loader.addEventListener("click",function(){for(var i=this.attributes.length-1;i>=0;i--){if(this.attributes[i].name!=="id"){this.removeAttribute(this.attributes[i].name)}}clearTimeout(timer)});for(var i=0;i=0;i--){if(this.attributes[i].name!=="id"){this.removeAttribute(this.attributes[i].name)}}clearTimeout(timer)});for(var i=0;i - + @@ -95,6 +95,16 @@

Bar

+
+

Bar ping pong

+
+ +
+
+ +
+
+

Border

From 1ede2289108ebedf0b5771e58f02f497ac2fd912 Mon Sep 17 00:00:00 2001 From: Raphael Fabeni Date: Thu, 22 Mar 2018 23:50:34 -0300 Subject: [PATCH 18/19] Adds bouncing example --- assets/css/main.css | 1 + assets/js/main.js | 4 ++++ dist/main.min.css | 2 +- dist/main.min.js | 2 +- index.html | 9 ++++++++- package.json | 5 ++++- 6 files changed, 19 insertions(+), 4 deletions(-) diff --git a/assets/css/main.css b/assets/css/main.css index 9e5afb0..27e10c3 100644 --- a/assets/css/main.css +++ b/assets/css/main.css @@ -139,6 +139,7 @@ body { /* Buttons */ .button { + cursor: pointer; display: inline-block; border: none; background-color: #1abc9c; diff --git a/assets/js/main.js b/assets/js/main.js index 2ec07d5..3cb0d64 100644 --- a/assets/js/main.js +++ b/assets/js/main.js @@ -144,6 +144,10 @@ { attribute: 'data-shadow' } ] }, + { + button: document.getElementById('loader-bouncing'), + className: 'loader-bouncing' + }, { button: document.getElementById('loader-smartphone'), className: 'loader-smartphone' diff --git a/dist/main.min.css b/dist/main.min.css index 2a91e14..9536b3f 100644 --- a/dist/main.min.css +++ b/dist/main.min.css @@ -1 +1 @@ -.header__subtitle,.header__title{text-shadow:1px 1px 0 rgba(0,0,0,.2)}*,:after,:before{margin:0;padding:0;list-style:none}body{font-family:'Open Sans',sans-serif;font-weight:400;background-color:#fff;color:#444;font-size:16px}.footer,.header{background-color:#1abc9c;color:#fff;text-align:center}.container{padding-left:10px;padding-right:10px}.footer{padding:20px;border-top:solid 15px #16a085;margin-top:25px}.header{padding:50px 20px;border-bottom:solid 15px #16a085;margin-bottom:25px;position:relative}.header__title{font-weight:700;font-size:54px;letter-spacing:-2px}.header__title:after,.header__title:before{content:'';width:10px;height:10px;display:inline-block;border:5px solid #16a085;border-right-color:transparent;vertical-align:middle;border-radius:50%;animation:rotation 1s infinite linear}.header__title:before{margin-right:10px}.header__title:after{margin-left:10px;animation-duration:1.5s}.header__subtitle{font-weight:300;font-size:24px}@keyframes pulse{to{transform:scale(1.2)}}@keyframes rotation{to{transform:rotate(359deg)}}.heart{color:#e74c3c;display:inline-block;vertical-align:bottom;font-size:22px;animation:pulse .5s linear infinite alternate}.heart--small{font-size:16px;vertical-align:middle}.row{max-width:850px;width:100%;margin:0 auto}.row--space{margin-bottom:25px}.row--flex{display:flex;flex-flow:row wrap;justify-content:flex-start}.box__item,.button,.input{display:inline-block}.box{padding:15px;background-color:#f5f5f5;border:1px solid #dedede;margin:10px 10px 10px 0}.box--full{width:100%;margin-right:0}.box__item{margin:8px 0}.box__title,.title,p{margin-bottom:15px}.box__title{font-size:18px;color:#666}.button{border:none;background-color:#1abc9c;color:#fff;font-size:14px;padding:10px 20px;border-radius:5px;text-shadow:1px 1px 0 rgba(0,0,0,.25);box-shadow:0 5px 0 0 #16a085;transition:background .3s ease}.button:focus,.button:hover{background-color:#049372;outline:0}.button:active{transform:translateY(5px);box-shadow:none}.input{padding:8px;max-width:90px;transition:all .3s ease;border:1px solid #eee}.input:focus{border-color:#ccc}a{color:#16a085}a:hover{text-decoration:none}.text-yellow{color:#f1c40f}.text-white{color:#fff}@media screen and (max-width:550px){.header{padding:25px 10px}.header__title{font-size:32px;letter-spacing:0;margin-bottom:15px}.header__subtitle{font-size:20px;line-height:1.4}} \ No newline at end of file +.header__subtitle,.header__title{text-shadow:1px 1px 0 rgba(0,0,0,.2)}*,:after,:before{margin:0;padding:0;list-style:none}body{font-family:'Open Sans',sans-serif;font-weight:400;background-color:#fff;color:#444;font-size:16px}.footer,.header{background-color:#1abc9c;color:#fff;text-align:center}.container{padding-left:10px;padding-right:10px}.footer{padding:20px;border-top:solid 15px #16a085;margin-top:25px}.header{padding:50px 20px;border-bottom:solid 15px #16a085;margin-bottom:25px;position:relative}.header__title{font-weight:700;font-size:54px;letter-spacing:-2px}.header__title:after,.header__title:before{content:'';width:10px;height:10px;display:inline-block;border:5px solid #16a085;border-right-color:transparent;vertical-align:middle;border-radius:50%;animation:rotation 1s infinite linear}.header__title:before{margin-right:10px}.header__title:after{margin-left:10px;animation-duration:1.5s}.header__subtitle{font-weight:300;font-size:24px}@keyframes pulse{to{transform:scale(1.2)}}@keyframes rotation{to{transform:rotate(359deg)}}.heart{color:#e74c3c;display:inline-block;vertical-align:bottom;font-size:22px;animation:pulse .5s linear infinite alternate}.heart--small{font-size:16px;vertical-align:middle}.row{max-width:850px;width:100%;margin:0 auto}.row--space{margin-bottom:25px}.row--flex{display:flex;flex-flow:row wrap;justify-content:flex-start}.box__item,.button,.input{display:inline-block}.box{padding:15px;background-color:#f5f5f5;border:1px solid #dedede;margin:10px 10px 10px 0}.box--full{width:100%;margin-right:0}.box__item{margin:8px 0}.box__title,.title,p{margin-bottom:15px}.box__title{font-size:18px;color:#666}.button{cursor:pointer;border:none;background-color:#1abc9c;color:#fff;font-size:14px;padding:10px 20px;border-radius:5px;text-shadow:1px 1px 0 rgba(0,0,0,.25);box-shadow:0 5px 0 0 #16a085;transition:background .3s ease}.button:focus,.button:hover{background-color:#049372;outline:0}.button:active{transform:translateY(5px);box-shadow:none}.input{padding:8px;max-width:90px;transition:all .3s ease;border:1px solid #eee}.input:focus{border-color:#ccc}a{color:#16a085}a:hover{text-decoration:none}.text-yellow{color:#f1c40f}.text-white{color:#fff}@media screen and (max-width:550px){.header{padding:25px 10px}.header__title{font-size:32px;letter-spacing:0;margin-bottom:15px}.header__subtitle{font-size:20px;line-height:1.4}} \ No newline at end of file diff --git a/dist/main.min.js b/dist/main.min.js index 8d1c45f..398b115 100644 --- a/dist/main.min.js +++ b/dist/main.min.js @@ -1 +1 @@ -(function(){var loader=document.getElementById("loader");var config=[{button:document.getElementById("loader-default"),className:"loader-default"},{button:document.getElementById("loader-default-half"),className:"loader-default",attributes:[{attribute:"data-half"}]},{button:document.getElementById("loader-default-blink"),className:"loader-default",attributes:[{attribute:"data-blink"},{attribute:"data-text"}]},{button:document.getElementById("loader-default-inverse"),className:"loader-default",attributes:[{attribute:"data-inverse"}]},{button:document.getElementById("loader-default-text"),className:"loader-default",attributes:[{attribute:"data-text"}]},{button:document.getElementById("loader-default-custom-text"),className:"loader-default",attributes:[{attribute:"data-text",value:document.getElementById("custom-text")}]},{button:document.getElementById("loader-double"),className:"loader-double"},{button:document.getElementById("loader-bar"),className:"loader-bar"},{button:document.getElementById("loader-bar-rounded"),className:"loader-bar",attributes:[{attribute:"data-rounded"}]},{button:document.getElementById("loader-bar-inverse"),className:"loader-bar",attributes:[{attribute:"data-inverse"}]},{button:document.getElementById("loader-bar-text"),className:"loader-bar",attributes:[{attribute:"data-text"}]},{button:document.getElementById("loader-bar-blink"),className:"loader-bar",attributes:[{attribute:"data-blink"},{attribute:"data-text"}]},{button:document.getElementById("loader-bar-custom-text"),className:"loader-bar",attributes:[{attribute:"data-text",value:document.getElementById("bar-custom-text")}]},{button:document.getElementById("loader-bar-ping-pong"),className:"loader-bar-ping-pong"},{button:document.getElementById("loader-bar-ping-pong-rounded"),className:"loader-bar-ping-pong",attributes:[{attribute:"data-rounded"}]},{button:document.getElementById("loader-border"),className:"loader-border"},{button:document.getElementById("loader-border-text"),className:"loader-border",attributes:[{attribute:"data-text"}]},{button:document.getElementById("loader-border-custom-text"),className:"loader-border",attributes:[{attribute:"data-text",value:document.getElementById("border-custom-text")}]},{button:document.getElementById("loader-border-blink"),className:"loader-border",attributes:[{attribute:"data-text"},{attribute:"data-blink"}]},{button:document.getElementById("loader-ball"),className:"loader-ball"},{button:document.getElementById("loader-ball-shadow"),className:"loader-ball",attributes:[{attribute:"data-shadow"}]},{button:document.getElementById("loader-smartphone"),className:"loader-smartphone"},{button:document.getElementById("loader-smartphone-text"),className:"loader-smartphone",attributes:[{attribute:"data-screen"}]},{button:document.getElementById("loader-smartphone-custom-text"),className:"loader-smartphone",attributes:[{attribute:"data-screen",value:document.getElementById("smartphone-custom-text")}]},{button:document.getElementById("loader-clock"),className:"loader-clock"},{button:document.getElementById("loader-curtain"),className:"loader-curtain"},{button:document.getElementById("loader-curtain-brazilian"),className:"loader-curtain",attributes:[{attribute:"data-brazilian"}]},{button:document.getElementById("loader-curtain-colorful"),className:"loader-curtain",attributes:[{attribute:"data-colorful"}]},{button:document.getElementById("loader-curtain-custom-text"),className:"loader-curtain",attributes:[{attribute:"data-curtain-text",value:document.getElementById("curtain-custom-text")}]},{button:document.getElementById("loader-music-hey-oh"),className:"loader-music",attributes:[{attribute:"data-hey-oh"}]},{button:document.getElementById("loader-music-no-cry"),className:"loader-music",attributes:[{attribute:"data-no-cry"}]},{button:document.getElementById("loader-music-we-are"),className:"loader-music",attributes:[{attribute:"data-we-are"}]},{button:document.getElementById("loader-music-rock-you"),className:"loader-music",attributes:[{attribute:"data-rock-you"}]},{button:document.getElementById("loader-pokeball"),className:"loader-pokeball"}];var timer;loader.addEventListener("click",function(){for(var i=this.attributes.length-1;i>=0;i--){if(this.attributes[i].name!=="id"){this.removeAttribute(this.attributes[i].name)}}clearTimeout(timer)});for(var i=0;i=0;i--){if(this.attributes[i].name!=="id"){this.removeAttribute(this.attributes[i].name)}}clearTimeout(timer)});for(var i=0;i - + @@ -184,6 +184,13 @@

Smartphone

+
+

Bouncing

+
+ +
+
+

Music

diff --git a/package.json b/package.json index 18d28a4..96f7cc8 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "test": "echo \"Error: no test specified\" && exit 1", "server": "browser-sync start --server", "build:css": "cleancss -o ./dist/main.min.css ./assets/css/main.css", - "build:js": "uglifyjs ./assets/js/main.js > ./dist/main.min.js", + "build:js": "./node_modules/uglify-js/bin/uglifyjs ./assets/js/main.js > ./dist/main.min.js", "build": "npm run build:css && npm run build:js", "watch:css": "watchy -w ./assets/css/main.css -- npm run build:css", "watch:js": "watchy -w ./assets/js/main.js -- npm run build:js", @@ -24,5 +24,8 @@ "clean-css": "^3.4.20", "uglify-js": "^2.7.3", "watchy": "^0.6.6" + }, + "devDependencies": { + "uglify-js": "^2.8.29" } } From fd2ddf3f88bb93b78ebee112f4b37fa06801d866 Mon Sep 17 00:00:00 2001 From: Raphael Fabeni Date: Wed, 7 Oct 2020 21:08:53 -0400 Subject: [PATCH 19/19] Update ga --- index.html | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/index.html b/index.html index e9636ae..64a9f7a 100644 --- a/index.html +++ b/index.html @@ -218,14 +218,13 @@

Music

- - + + - \ No newline at end of file +