├── src ├── sass │ ├── aos.scss │ ├── _core.scss │ ├── _easing.scss │ └── _animations.scss └── js │ ├── helpers │ ├── prepare.js │ ├── elements.js │ ├── handleScroll.js │ ├── calculateOffset.js │ └── detector.js │ ├── libs │ ├── offset.js │ └── observer.js │ └── aos.js ├── .babelrc ├── postcss.config.js ├── test ├── index.js ├── aos.spec.js ├── fixtures │ ├── aos.fixture.html │ └── aos-offset.fixture.html ├── elements.spec.js └── calculateOffset.spec.js ├── .gitattributes ├── .editorconfig ├── .travis.yml ├── .gitignore ├── demo ├── css │ └── styles.css ├── async.html └── simple.html ├── bower.json ├── webpack.config.js ├── LICENSE ├── CONTRIBUTING.md ├── karma.conf.js ├── package.json ├── CHANGELOG.md ├── README.md └── dist ├── aos.js ├── aos.css └── aos.css.map /src/sass/aos.scss: -------------------------------------------------------------------------------- 1 | @import 'core'; 2 | @import 'easing'; 3 | @import 'animations'; 4 | -------------------------------------------------------------------------------- /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["es2015"], 3 | "plugins": ["transform-object-assign"] 4 | } 5 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: [ 3 | require('autoprefixer') 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /test/index.js: -------------------------------------------------------------------------------- 1 | import './aos.spec.js'; 2 | import './elements.spec.js'; 3 | import './calculateOffset.spec.js'; 4 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Enforce Unix newlines 2 | *.css text eol=lf 3 | *.scss text eol=lf 4 | *.html text eol=lf 5 | *.js text eol=lf 6 | *.md text eol=lf 7 | *.svg text eol=lf 8 | *.yml text eol=lf 9 | # Don't diff or textually merge source maps 10 | *.map binary -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | end_of_line = lf 8 | indent_size = 2 9 | indent_style = space 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | trim_trailing_whitespace = false 15 | -------------------------------------------------------------------------------- /src/js/helpers/prepare.js: -------------------------------------------------------------------------------- 1 | /* Clearing variables */ 2 | 3 | import calculateOffset from './calculateOffset'; 4 | 5 | const prepare = function ($elements, options) { 6 | $elements.forEach((el, i) => { 7 | el.node.classList.add('aos-init'); 8 | el.position = calculateOffset(el.node, options.offset); 9 | }); 10 | return $elements; 11 | }; 12 | 13 | export default prepare; 14 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | sudo: false 3 | node_js: 4 | - '4.1' 5 | 6 | env: 7 | global: 8 | 9 | before_install: 10 | - export CHROME_BIN=chromium-browser 11 | - export DISPLAY=:99.0 12 | - sh -e /etc/init.d/xvfb start 13 | 14 | install: 15 | - npm config set registry http://registry.npmjs.org/ 16 | - npm install -g karma 17 | - npm install 18 | 19 | cache: 20 | directories: 21 | - "$HOME/.nvm" 22 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Numerous always-ignore extensions 2 | *.diff 3 | *.err 4 | *.log 5 | *.orig 6 | *.rej 7 | *.swo 8 | *.swp 9 | *.vi 10 | *.zip 11 | *~ 12 | 13 | # OS or Editor folders 14 | ._* 15 | .cache 16 | .DS_Store 17 | .idea 18 | .project 19 | .settings 20 | .tmproj 21 | *.esproj 22 | *.sublime-project 23 | *.sublime-workspace 24 | nbproject 25 | Thumbs.db 26 | 27 | # Folders to ignore 28 | bower_components 29 | node_modules 30 | -------------------------------------------------------------------------------- /src/js/helpers/elements.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Generate initial array with elements as objects 3 | * This array will be extended later with elements attributes values 4 | * like 'position' 5 | */ 6 | const createArrayWithElements = function (elements) { 7 | elements = elements || document.querySelectorAll('[data-aos]'); 8 | return Array.prototype.map.call(elements, node => ({ node })); 9 | }; 10 | 11 | export default createArrayWithElements; 12 | -------------------------------------------------------------------------------- /src/sass/_core.scss: -------------------------------------------------------------------------------- 1 | // Generate Duration && Delay 2 | [data-aos] { 3 | @for $i from 1 through 60 { 4 | body[data-aos-duration='#{$i * 50}'] &, 5 | &[data-aos][data-aos-duration='#{$i * 50}'] { 6 | transition-duration: #{$i * 50}ms; 7 | } 8 | 9 | body[data-aos-delay='#{$i * 50}'] &, 10 | &[data-aos][data-aos-delay='#{$i * 50}'] { 11 | transition-delay: 0; 12 | 13 | &.aos-animate { 14 | transition-delay: #{$i * 50}ms; 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/js/libs/offset.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Get offset of DOM element Helper 3 | * including these with translation 4 | * 5 | * @param {Node} el [DOM element] 6 | * @return {Object} [top and left offset] 7 | */ 8 | const offset = function (el) { 9 | let _x = 0; 10 | let _y = 0; 11 | 12 | while (el && !isNaN(el.offsetLeft) && !isNaN(el.offsetTop)) { 13 | _x += el.offsetLeft - (el.tagName != 'BODY' ? el.scrollLeft : 0); 14 | _y += el.offsetTop - (el.tagName != 'BODY' ? el.scrollTop : 0); 15 | el = el.offsetParent; 16 | } 17 | 18 | return { 19 | top: _y, 20 | left: _x 21 | }; 22 | }; 23 | 24 | export default offset; 25 | -------------------------------------------------------------------------------- /demo/css/styles.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-family: Helvetica,Tahoma; 3 | } 4 | 5 | *, 6 | *:before, 7 | *:after { 8 | box-sizing: border-box; 9 | } 10 | 11 | .aos-all { 12 | width: 1000px; 13 | max-width: 98%; 14 | margin: 10vh auto 0 auto; 15 | } 16 | 17 | .aos-item { 18 | display: inline-block; 19 | float: left; 20 | width: 33.3333%; 21 | height: 300px; 22 | padding: 20px; 23 | } 24 | 25 | .aos-item__inner { 26 | position: relative; 27 | width: 100%; 28 | height: 100%; 29 | float: left; 30 | background: #1da4e2; 31 | line-height: 260px; 32 | text-align: center; 33 | color: #fff; 34 | } 35 | 36 | @media screen and (max-width: 800px) { 37 | .aos-item { 38 | width: 50%; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "aos", 3 | "version": "2.1.1", 4 | "homepage": "git://github.com/michalsnik/aos.git", 5 | "authors": [ 6 | "Michał Sajnóg " 7 | ], 8 | "main": [ 9 | "dist/aos.js", 10 | "dist/aos.css" 11 | ], 12 | "moduleType": [ 13 | "amd", 14 | "globals", 15 | "node", 16 | "es6" 17 | ], 18 | "keywords": [ 19 | "scroll", 20 | "css3", 21 | "transition", 22 | "transform", 23 | "mousewheel", 24 | "smooth", 25 | "wow", 26 | "animate" 27 | ], 28 | "license": "MIT", 29 | "ignore": [ 30 | "**/.*", 31 | "node_modules", 32 | "bower_components", 33 | "test", 34 | "tests", 35 | ".gitignore", 36 | "gulpfile.js", 37 | "package.json" 38 | ], 39 | "dependencies": {} 40 | } 41 | -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | var webpack = require('webpack'); 2 | var ExtractTextPlugin = require('extract-text-webpack-plugin'); 3 | var autoprefixer = require('autoprefixer'); 4 | 5 | module.exports = { 6 | entry: './src/js/aos.js', 7 | output: { 8 | path: './dist', 9 | publicPath: 'dist/', 10 | filename: 'aos.js', 11 | library: 'AOS', 12 | libraryTarget: 'umd', 13 | }, 14 | devServer: { 15 | contentBase: 'demo/' 16 | }, 17 | module: { 18 | loaders: [ 19 | { 20 | test: /\.js$/, 21 | loader: 'babel-loader' 22 | }, 23 | { 24 | test: /\.scss$/, 25 | loader: ExtractTextPlugin.extract("style-loader", "css-loader?sourceMap!sass-loader!postcss-loader") 26 | } 27 | ] 28 | }, 29 | plugins: [ 30 | new ExtractTextPlugin('aos.css'), 31 | new webpack.optimize.UglifyJsPlugin() 32 | ] 33 | } 34 | -------------------------------------------------------------------------------- /src/js/libs/observer.js: -------------------------------------------------------------------------------- 1 | const doc = window.document; 2 | const MutationObserver = 3 | window.MutationObserver || 4 | window.WebKitMutationObserver || 5 | window.MozMutationObserver; 6 | 7 | let callback = () => {}; 8 | 9 | function ready(selector, fn) { 10 | const observer = new MutationObserver(check); 11 | callback = fn; 12 | 13 | observer.observe(doc.documentElement, { 14 | childList: true, 15 | subtree: true, 16 | removedNodes: true 17 | }); 18 | } 19 | 20 | function check(mutations) { 21 | if (!mutations) return; 22 | 23 | mutations.forEach(mutation => { 24 | const addedNodes = Array.prototype.slice.call(mutation.addedNodes); 25 | const removedNodes = Array.prototype.slice.call(mutation.removedNodes); 26 | 27 | const anyAOSElementAdded = addedNodes 28 | .concat(removedNodes) 29 | .filter(el => el.hasAttribute && el.hasAttribute('data-aos')) 30 | .length; 31 | 32 | if (anyAOSElementAdded) { 33 | callback(); 34 | } 35 | }); 36 | } 37 | 38 | export default ready; 39 | -------------------------------------------------------------------------------- /demo/async.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | AOS - Animate on scroll library 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Michał Sajnóg 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /src/js/helpers/handleScroll.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Set or remove aos-animate class 3 | * @param {node} el element 4 | * @param {int} top scrolled distance 5 | * @param {void} once 6 | */ 7 | const setState = function (el, top, once) { 8 | const attrOnce = el.node.getAttribute('data-aos-once'); 9 | 10 | if (top > el.position) { 11 | el.node.classList.add('aos-animate'); 12 | } else if (typeof attrOnce !== 'undefined') { 13 | if (attrOnce === 'false' || (!once && attrOnce !== 'true')) { 14 | el.node.classList.remove('aos-animate'); 15 | } 16 | } 17 | }; 18 | 19 | 20 | /** 21 | * Scroll logic - add or remove 'aos-animate' class on scroll 22 | * 23 | * @param {array} $elements array of elements nodes 24 | * @param {bool} once plugin option 25 | * @return {void} 26 | */ 27 | const handleScroll = function ($elements, once) { 28 | const scrollTop = window.pageYOffset; 29 | const windowHeight = window.innerHeight; 30 | /** 31 | * Check all registered elements positions 32 | * and animate them on scroll 33 | */ 34 | $elements.forEach((el, i) => { 35 | setState(el, windowHeight + scrollTop, once); 36 | }); 37 | }; 38 | 39 | export default handleScroll; 40 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to AOS 2 | 3 | ## Bugs 4 | 5 | Found a bug? Have a problem with AOS? Please check past issues, maybe someone already had that problem. If you don't find similar issue create new, but remember to add accurate informations so that I can dig into it straight away. If it's possible add CodePen example that presents called issue. 6 | 7 | ## Development process 8 | 9 | AOS is built using webpack. 10 | 11 | ### Setup 12 | 13 | - Install all dependencies: 14 | 15 | ``` 16 | npm install 17 | ``` 18 | 19 | - Run dev server: 20 | 21 | ``` 22 | npm run dev 23 | ``` 24 | 25 | This will run local webpack-dev-server and build AOS automatically. 26 | 27 | - Open browser and head to: 28 | [http://localhost:8080/webpack-dev-server/](http://localhost:8080/webpack-dev-server/) 29 | Server loads content from `demo` folder. 30 | 31 | Now you are ready to play with AOS. Browser should reload automatically as you change code in `src` folder. 32 | 33 | ### Testing 34 | 35 | Before you create Pull Request make sure all tests are passing. 36 | 37 | In order to do so run: 38 | ``` 39 | npm test 40 | ``` 41 | 42 | ### Commiting changes 43 | 44 | If all tests are passing then you're good to go. Commit your changes, but remember to **not commit `dist` folder**. 45 | Create well described Pull Request with as many informations as possible and wait for my answer :) I'd be happy to make a code review and put some thougths. 46 | -------------------------------------------------------------------------------- /src/sass/_easing.scss: -------------------------------------------------------------------------------- 1 | $aos-easing: ( 2 | linear: cubic-bezier(.250, .250, .750, .750), 3 | 4 | ease: cubic-bezier(.250, .100, .250, 1), 5 | ease-in: cubic-bezier(.420, 0, 1, 1), 6 | ease-out: cubic-bezier(.000, 0, .580, 1), 7 | ease-in-out: cubic-bezier(.420, 0, .580, 1), 8 | 9 | ease-in-back: cubic-bezier(.6, -.28, .735, .045), 10 | ease-out-back: cubic-bezier(.175, .885, .32, 1.275), 11 | ease-in-out-back: cubic-bezier(.68, -.55, .265, 1.55), 12 | 13 | ease-in-sine: cubic-bezier(.47, 0, .745, .715), 14 | ease-out-sine: cubic-bezier(.39, .575, .565, 1), 15 | ease-in-out-sine: cubic-bezier(.445, .05, .55, .95), 16 | 17 | ease-in-quad: cubic-bezier(.55, .085, .68, .53), 18 | ease-out-quad: cubic-bezier(.25, .46, .45, .94), 19 | ease-in-out-quad: cubic-bezier(.455, .03, .515, .955), 20 | 21 | ease-in-cubic: cubic-bezier(.55, .085, .68, .53), 22 | ease-out-cubic: cubic-bezier(.25, .46, .45, .94), 23 | ease-in-out-cubic: cubic-bezier(.455, .03, .515, .955), 24 | 25 | ease-in-quart: cubic-bezier(.55, .085, .68, .53), 26 | ease-out-quart: cubic-bezier(.25, .46, .45, .94), 27 | ease-in-out-quart: cubic-bezier(.455, .03, .515, .955) 28 | ); 29 | 30 | // Easings implementations 31 | // Default timing function: 'ease' 32 | 33 | [data-aos] { 34 | @each $key, $val in $aos-easing { 35 | body[data-aos-easing="#{$key}"] &, 36 | &[data-aos][data-aos-easing="#{$key}"] { 37 | transition-timing-function: $val; 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /karma.conf.js: -------------------------------------------------------------------------------- 1 | // Karma configuration 2 | // Generated on Mon Oct 19 2015 01:12:15 GMT+0200 (CEST) 3 | var isTravis = process.env.TRAVIS || false; 4 | var browsers = isTravis ? ['Chrome_travis_ci'] : ['Chrome']; 5 | var singleRun = isTravis; 6 | 7 | module.exports = function(config) { 8 | config.set({ 9 | basePath: '', 10 | browsers: browsers, 11 | frameworks: ['jasmine-jquery', 'jasmine'], 12 | 13 | files: [ 14 | 'node_modules/babel-polyfill/dist/polyfill.js', 15 | 'test/index.js', 16 | { 17 | pattern: 'test/fixtures/**/*.html', 18 | watched: true, 19 | included: false, 20 | served: true 21 | } 22 | ], 23 | 24 | preprocessors: { 25 | 'test/index.js': ['webpack'] 26 | }, 27 | 28 | webpack: { 29 | devtool: 'inline-source-map', 30 | module: { 31 | loaders: [{ 32 | test: /\.js?$/, 33 | exclude: [/bower_components/, /node_modules/], 34 | loader: 'babel' 35 | }, { 36 | test: /\.scss$/, 37 | loader: "css-loader?sourceMap!sass-loader" 38 | }] 39 | } 40 | }, 41 | 42 | plugins: [ 43 | 'karma-chrome-launcher', 44 | 'karma-jasmine-jquery', 45 | 'karma-jasmine', 46 | 'karma-webpack' 47 | ], 48 | 49 | reporters: ['dots'], 50 | 51 | customLaunchers: { 52 | Chrome_travis_ci: { 53 | base: 'Chrome', 54 | flags: ['--no-sandbox'] 55 | } 56 | }, 57 | 58 | port: 9876, 59 | singleRun: singleRun, 60 | colors: true, 61 | logLevel: config.LOG_WARN 62 | }) 63 | } 64 | -------------------------------------------------------------------------------- /test/aos.spec.js: -------------------------------------------------------------------------------- 1 | import $ from 'jquery'; 2 | import AOS from '../src/js/aos'; 3 | 4 | jasmine.getStyleFixtures().fixturesPath = 'base/dist'; 5 | jasmine.getFixtures().fixturesPath = 'base/test/fixtures'; 6 | 7 | describe('AOS -> ', function() { 8 | 9 | beforeEach(function() { 10 | jasmine.getStyleFixtures().load = 'aos.css'; 11 | jasmine.getFixtures().load('aos.fixture.html'); 12 | }); 13 | 14 | afterEach(function() { 15 | jasmine.getStyleFixtures().cleanUp(); 16 | jasmine.getFixtures().cleanUp(); 17 | }); 18 | 19 | it('Should be defined', function() { 20 | expect(AOS).toBeDefined(); 21 | }); 22 | 23 | it('Should have init method', function() { 24 | expect(AOS.init).toBeDefined(); 25 | }); 26 | 27 | it('Should have refresh method', function() { 28 | expect(AOS.refresh).toBeDefined(); 29 | }); 30 | 31 | it('Should have same number of elements after init', function() { 32 | var elementsCount = $('.aos-item').length; 33 | var elements = AOS.init(); 34 | expect(elementsCount).toEqual(elements.length); 35 | }); 36 | 37 | it('Should have same number of elements after refresh', function() { 38 | var elementsCount = $('.aos-item').length; 39 | var elements = AOS.init(); 40 | elements = AOS.refresh(true); 41 | expect(elements.length).toEqual(elementsCount); 42 | }); 43 | 44 | it('Should add aos-init class on all elements', function() { 45 | var elementsCount = $('.aos-item').length; 46 | AOS.init(); 47 | var elementsWithClass = $('.aos-init'); 48 | expect(elementsCount).toEqual(elementsWithClass.length); 49 | }); 50 | 51 | }); 52 | -------------------------------------------------------------------------------- /test/fixtures/aos.fixture.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 14 | 15 | 16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 | 35 | 36 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "aos", 3 | "version": "2.3.0", 4 | "description": "Animate on scroll library", 5 | "homepage": "http://michalsnik.github.io/aos/", 6 | "author": "Michał Sajnóg ", 7 | "license": "MIT", 8 | "main": "dist/aos.js", 9 | "repository": { 10 | "type": "git", 11 | "url": "https://github.com/michalsnik/aos.git" 12 | }, 13 | "bugs": { 14 | "url": "https://github.com/michalsnik/aos/issues" 15 | }, 16 | "devDependencies": { 17 | "autoprefixer": "^7.1.2", 18 | "babel-core": "^6.9.1", 19 | "babel-loader": "^6.2.4", 20 | "babel-plugin-transform-object-assign": "^6.8.0", 21 | "babel-polyfill": "^6.9.1", 22 | "babel-preset-es2015": "^6.9.0", 23 | "css-loader": "^0.28.0", 24 | "extract-text-webpack-plugin": "^1.0.1", 25 | "jasmine-core": "^2.3.4", 26 | "jasmine-fixture": "^2.0.0", 27 | "jasmine-jquery": "^2.1.1", 28 | "jquery": "^3.1.1", 29 | "karma": "^1.4.0", 30 | "karma-chrome-launcher": "^2.0.0", 31 | "karma-jasmine": "^1.1.0", 32 | "karma-jasmine-jquery": "^0.1.1", 33 | "karma-webpack": "^2.0.1", 34 | "node-sass": "^4.3.0", 35 | "phantomjs": "^2.1.7", 36 | "postcss-loader": "^2.0.6", 37 | "sass-loader": "^4.1.1", 38 | "style-loader": "^0.18.2", 39 | "webpack": "^1.13.1", 40 | "webpack-dev-server": "^1.14.1" 41 | }, 42 | "dependencies": { 43 | "classlist-polyfill": "^1.0.3", 44 | "lodash.debounce": "^4.0.6", 45 | "lodash.throttle": "^4.0.1" 46 | }, 47 | "scripts": { 48 | "test": "node ./node_modules/karma/bin/karma start karma.conf.js", 49 | "build": "webpack", 50 | "dev": "node ./node_modules/webpack-dev-server/bin/webpack-dev-server.js" 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | ## [2.1.1] 4 | - Clean styles, prefix variables, use !default, separate files for core and animations 5 | 6 | ## [2.1.0] 7 | - Attach event listener to window instead of document for event `load` 8 | 9 | ## [2.0.4] 10 | 11 | ### Fixed 12 | - Fix device detector (tablet setting) 13 | 14 | ### Changed 15 | - Disable AOS on not supported browsers (<= IE9) 16 | - Clean code around `disable` option 17 | - Rewrite device detector using ES6 Class 18 | 19 | ## [2.0.3] 20 | 21 | ### Added 22 | - Add `transform-object-assign` plugin for babel, so Object.assign works in IE 23 | 24 | ## [2.0.2] 25 | 26 | ### Fixed 27 | - Fix include in arrays, so it works in IE 28 | 29 | ## [2.0.1] 30 | 31 | ### Fixed 32 | - Add easings, after they were accidentaly ignored 33 | 34 | ## [2.0.0] 35 | 36 | ### Added 37 | - Add new CHANGELOG 38 | - Add contribution guide 39 | - Add emojis in README 40 | - Add map file for styles 41 | 42 | ### Changed 43 | - Make `data-aos` attributes the default and only proper ones 44 | - Use maps and loops in Sass 45 | - Replace gulp with webpack 46 | - Rewrite Karma config and use webpack to bundle tests 47 | - Upgrade to ES6 48 | - Update documentation 49 | - Update demos 50 | 51 | ### Removed 52 | - Remove `aos` attributes 53 | - Remove gulp from build tools 54 | 55 | ### Fixed 56 | - Improve animations performance 57 | - Fix styles loading in tests 58 | 59 | ## [1.2.2] 60 | ### Fixed 61 | - Fix AOS refreshing on asynchronously loaded elements 62 | 63 | ## [1.2.1] 64 | ### Fixed 65 | - Fix problem with using AOS as node package by setting main file in package.json 66 | 67 | ## [1.2.0] 68 | ### Added 69 | - Add compatibility with module systems 70 | 71 | ### Fixed 72 | - Fix AOS initializing when DOM is already loaded 73 | -------------------------------------------------------------------------------- /test/elements.spec.js: -------------------------------------------------------------------------------- 1 | import $ from 'jquery'; 2 | import elements from '../src/js/helpers/elements'; 3 | 4 | jasmine.getStyleFixtures().fixturesPath = 'base/dist'; 5 | jasmine.getFixtures().fixturesPath = 'base/test/fixtures'; 6 | 7 | describe('Elements helper (elements.js) -> ', function() { 8 | 9 | beforeEach(function() { 10 | jasmine.getStyleFixtures().load = 'aos.css'; 11 | jasmine.getFixtures().load('aos.fixture.html'); 12 | }); 13 | 14 | afterEach(function() { 15 | jasmine.getStyleFixtures().cleanUp(); 16 | jasmine.getFixtures().cleanUp(); 17 | }); 18 | 19 | it('Should return array with objects that coresponds to elements in aos.fixture.html', function() { 20 | var aosElements = elements(); 21 | expect(aosElements.length).toBe($('[data-aos]').length); 22 | }); 23 | 24 | it('Should return array of objects', function() { 25 | var aosElements = elements(); 26 | 27 | for (var i = 0; i < aosElements.length; i++) { 28 | if (aosElements[i].node) { 29 | expect(typeof aosElements[i]).toEqual('object'); 30 | } 31 | } 32 | }); 33 | 34 | it('Each object in returned array should have "node" attribute', function() { 35 | var aosElements = elements(); 36 | 37 | for (var i = 0; i < aosElements.length; i++) { 38 | expect(aosElements[i].hasOwnProperty('node')).toBe(true); 39 | } 40 | }); 41 | 42 | it('Each objects node in returned array should be a DOMNode', function() { 43 | var aosElements = elements(); 44 | 45 | function isNode(obj) { 46 | return (typeof obj === "object") && (obj.nodeType === 1) && (typeof obj.style === "object") && (typeof obj.ownerDocument === "object"); 47 | } 48 | 49 | for (var i = 0; i < aosElements.length; i++) { 50 | if (aosElements[i].node) { 51 | expect(isNode(aosElements[i].node)).toBe(true); 52 | } 53 | } 54 | }); 55 | 56 | }); 57 | -------------------------------------------------------------------------------- /test/fixtures/aos-offset.fixture.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 14 | 15 | 16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 | 35 | 36 | -------------------------------------------------------------------------------- /src/js/helpers/calculateOffset.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Calculate offset 3 | * basing on element's settings like: 4 | * - anchor 5 | * - offset 6 | * 7 | * @param {Node} el [Dom element] 8 | * @return {Integer} [Final offset that will be used to trigger animation in good position] 9 | */ 10 | 11 | import getOffset from './../libs/offset'; 12 | 13 | const calculateOffset = function (el, optionalOffset) { 14 | let elementOffsetTop = 0; 15 | let additionalOffset = 0; 16 | const windowHeight = window.innerHeight; 17 | const attrs = { 18 | offset: el.getAttribute('data-aos-offset'), 19 | anchor: el.getAttribute('data-aos-anchor'), 20 | anchorPlacement: el.getAttribute('data-aos-anchor-placement') 21 | }; 22 | 23 | if (attrs.offset && !isNaN(attrs.offset)) { 24 | additionalOffset = parseInt(attrs.offset); 25 | } 26 | 27 | if (attrs.anchor && document.querySelectorAll(attrs.anchor)) { 28 | el = document.querySelectorAll(attrs.anchor)[0]; 29 | } 30 | 31 | elementOffsetTop = getOffset(el).top; 32 | 33 | switch (attrs.anchorPlacement) { 34 | case 'top-bottom': 35 | // Default offset 36 | break; 37 | case 'center-bottom': 38 | elementOffsetTop += el.offsetHeight / 2; 39 | break; 40 | case 'bottom-bottom': 41 | elementOffsetTop += el.offsetHeight; 42 | break; 43 | case 'top-center': 44 | elementOffsetTop += windowHeight / 2; 45 | break; 46 | case 'bottom-center': 47 | elementOffsetTop += windowHeight / 2 + el.offsetHeight; 48 | break; 49 | case 'center-center': 50 | elementOffsetTop += windowHeight / 2 + el.offsetHeight / 2; 51 | break; 52 | case 'top-top': 53 | elementOffsetTop += windowHeight; 54 | break; 55 | case 'bottom-top': 56 | elementOffsetTop += el.offsetHeight + windowHeight; 57 | break; 58 | case 'center-top': 59 | elementOffsetTop += el.offsetHeight / 2 + windowHeight; 60 | break; 61 | } 62 | 63 | if (!attrs.anchorPlacement && !attrs.offset && !isNaN(optionalOffset)) { 64 | additionalOffset = optionalOffset; 65 | } 66 | 67 | return elementOffsetTop + additionalOffset; 68 | }; 69 | 70 | export default calculateOffset; 71 | -------------------------------------------------------------------------------- /src/sass/_animations.scss: -------------------------------------------------------------------------------- 1 | // Animations variables 2 | $aos-distance: 100px !default; 3 | 4 | 5 | 6 | 7 | /** 8 | * Fade animations: 9 | * fade 10 | * fade-up, fade-down, fade-left, fade-right 11 | * fade-up-right, fade-up-left, fade-down-right, fade-down-left 12 | */ 13 | 14 | [data-aos^='fade'][data-aos^='fade'] { 15 | opacity: 0; 16 | transition-property: opacity, transform; 17 | 18 | &.aos-animate { 19 | opacity: 1; 20 | transform: translate3d(0, 0, 0); 21 | } 22 | } 23 | 24 | [data-aos='fade-up'] { 25 | transform: translate3d(0, $aos-distance, 0); 26 | } 27 | 28 | [data-aos='fade-down'] { 29 | transform: translate3d(0, -$aos-distance, 0); 30 | } 31 | 32 | [data-aos='fade-right'] { 33 | transform: translate3d(-$aos-distance, 0, 0); 34 | } 35 | 36 | [data-aos='fade-left'] { 37 | transform: translate3d($aos-distance, 0, 0); 38 | } 39 | 40 | [data-aos='fade-up-right'] { 41 | transform: translate3d(-$aos-distance, $aos-distance, 0); 42 | } 43 | 44 | [data-aos='fade-up-left'] { 45 | transform: translate3d($aos-distance, $aos-distance, 0); 46 | } 47 | 48 | [data-aos='fade-down-right'] { 49 | transform: translate3d(-$aos-distance, -$aos-distance, 0); 50 | } 51 | 52 | [data-aos='fade-down-left'] { 53 | transform: translate3d($aos-distance, -$aos-distance, 0); 54 | } 55 | 56 | 57 | 58 | 59 | /** 60 | * Zoom animations: 61 | * zoom-in, zoom-in-up, zoom-in-down, zoom-in-left, zoom-in-right 62 | * zoom-out, zoom-out-up, zoom-out-down, zoom-out-left, zoom-out-right 63 | */ 64 | 65 | [data-aos^='zoom'][data-aos^='zoom'] { 66 | opacity: 0; 67 | transition-property: opacity, transform; 68 | 69 | &.aos-animate { 70 | opacity: 1; 71 | transform: translate3d(0, 0, 0) scale(1); 72 | } 73 | } 74 | 75 | [data-aos='zoom-in'] { 76 | transform: scale(.6); 77 | } 78 | 79 | [data-aos='zoom-in-up'] { 80 | transform: translate3d(0, $aos-distance, 0) scale(.6); 81 | } 82 | 83 | [data-aos='zoom-in-down'] { 84 | transform: translate3d(0, -$aos-distance, 0) scale(.6); 85 | } 86 | 87 | [data-aos='zoom-in-right'] { 88 | transform: translate3d(-$aos-distance, 0, 0) scale(.6); 89 | } 90 | 91 | [data-aos='zoom-in-left'] { 92 | transform: translate3d($aos-distance, 0, 0) scale(.6); 93 | } 94 | 95 | [data-aos='zoom-out'] { 96 | transform: scale(1.2); 97 | } 98 | 99 | [data-aos='zoom-out-up'] { 100 | transform: translate3d(0, $aos-distance, 0) scale(1.2); 101 | } 102 | 103 | [data-aos='zoom-out-down'] { 104 | transform: translate3d(0, -$aos-distance, 0) scale(1.2); 105 | } 106 | 107 | [data-aos='zoom-out-right'] { 108 | transform: translate3d(-$aos-distance, 0, 0) scale(1.2); 109 | } 110 | 111 | [data-aos='zoom-out-left'] { 112 | transform: translate3d($aos-distance, 0, 0) scale(1.2); 113 | } 114 | 115 | 116 | 117 | 118 | /** 119 | * Slide animations 120 | */ 121 | 122 | [data-aos^='slide'][data-aos^='slide'] { 123 | transition-property: transform; 124 | 125 | &.aos-animate { 126 | transform: translate3d(0, 0, 0); 127 | } 128 | } 129 | 130 | [data-aos='slide-up'] { 131 | transform: translate3d(0, 100%, 0); 132 | } 133 | 134 | [data-aos='slide-down'] { 135 | transform: translate3d(0, -100%, 0); 136 | } 137 | 138 | [data-aos='slide-right'] { 139 | transform: translate3d(-100%, 0, 0); 140 | } 141 | 142 | [data-aos='slide-left'] { 143 | transform: translate3d(100%, 0, 0); 144 | } 145 | 146 | 147 | 148 | 149 | /** 150 | * Flip animations: 151 | * flip-left, flip-right, flip-up, flip-down 152 | */ 153 | 154 | [data-aos^='flip'][data-aos^='flip'] { 155 | backface-visibility: hidden; 156 | transition-property: transform; 157 | } 158 | 159 | [data-aos='flip-left'] { 160 | transform: perspective(2500px) rotateY(-100deg); 161 | &.aos-animate {transform: perspective(2500px) rotateY(0);} 162 | } 163 | 164 | [data-aos='flip-right'] { 165 | transform: perspective(2500px) rotateY(100deg); 166 | &.aos-animate {transform: perspective(2500px) rotateY(0);} 167 | } 168 | 169 | [data-aos='flip-up'] { 170 | transform: perspective(2500px) rotateX(-100deg); 171 | &.aos-animate {transform: perspective(2500px) rotateX(0);} 172 | } 173 | 174 | [data-aos='flip-down'] { 175 | transform: perspective(2500px) rotateX(100deg); 176 | &.aos-animate {transform: perspective(2500px) rotateX(0);} 177 | } 178 | -------------------------------------------------------------------------------- /src/js/helpers/detector.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Device detector 3 | */ 4 | 5 | const fullNameRe = /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i; 6 | const prefixRe = /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i; 7 | const fullNameMobileRe = /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i; 8 | const prefixMobileRe = /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i; 9 | 10 | 11 | function ua() { 12 | return navigator.userAgent || navigator.vendor || window.opera || ''; 13 | } 14 | 15 | 16 | class Detector { 17 | 18 | phone() { 19 | const a = ua(); 20 | return !!(fullNameRe.test(a) || prefixRe.test(a.substr(0, 4))); 21 | } 22 | 23 | mobile() { 24 | const a = ua(); 25 | return !!(fullNameMobileRe.test(a) || prefixMobileRe.test(a.substr(0, 4))); 26 | } 27 | 28 | tablet() { 29 | return this.mobile() && !this.phone(); 30 | } 31 | }; 32 | 33 | export default new Detector; 34 | -------------------------------------------------------------------------------- /src/js/aos.js: -------------------------------------------------------------------------------- 1 | /** 2 | * ******************************************************* 3 | * AOS (Animate on scroll) - wowjs alternative 4 | * made to animate elements on scroll in both directions 5 | * ******************************************************* 6 | */ 7 | 8 | import styles from './../sass/aos.scss'; 9 | 10 | // Modules & helpers 11 | import throttle from 'lodash.throttle'; 12 | import debounce from 'lodash.debounce'; 13 | 14 | import observe from './libs/observer'; 15 | 16 | import detect from './helpers/detector'; 17 | import handleScroll from './helpers/handleScroll'; 18 | import prepare from './helpers/prepare'; 19 | import elements from './helpers/elements'; 20 | 21 | /** 22 | * Private variables 23 | */ 24 | let $aosElements = []; 25 | let initialized = false; 26 | 27 | // Detect not supported browsers (<=IE9) 28 | // http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 29 | const browserNotSupported = document.all && !window.atob; 30 | 31 | /** 32 | * Default options 33 | */ 34 | let options = { 35 | offset: 120, 36 | delay: 0, 37 | easing: 'ease', 38 | duration: 400, 39 | disable: false, 40 | once: false, 41 | startEvent: 'DOMContentLoaded', 42 | throttleDelay: 99, 43 | debounceDelay: 50, 44 | disableMutationObserver: false, 45 | }; 46 | 47 | /** 48 | * Refresh AOS 49 | */ 50 | const refresh = function refresh(initialize = false) { 51 | // Allow refresh only when it was first initialized on startEvent 52 | if (initialize) initialized = true; 53 | 54 | if (initialized) { 55 | // Extend elements objects in $aosElements with their positions 56 | $aosElements = prepare($aosElements, options); 57 | // Perform scroll event, to refresh view and show/hide elements 58 | handleScroll($aosElements, options.once); 59 | 60 | return $aosElements; 61 | } 62 | }; 63 | 64 | /** 65 | * Hard refresh 66 | * create array with new elements and trigger refresh 67 | */ 68 | const refreshHard = function refreshHard() { 69 | $aosElements = elements(); 70 | refresh(); 71 | }; 72 | 73 | /** 74 | * Disable AOS 75 | * Remove all attributes to reset applied styles 76 | */ 77 | const disable = function() { 78 | $aosElements.forEach(function(el, i) { 79 | el.node.removeAttribute('data-aos'); 80 | el.node.removeAttribute('data-aos-easing'); 81 | el.node.removeAttribute('data-aos-duration'); 82 | el.node.removeAttribute('data-aos-delay'); 83 | }); 84 | }; 85 | 86 | 87 | /** 88 | * Check if AOS should be disabled based on provided setting 89 | */ 90 | const isDisabled = function(optionDisable) { 91 | return optionDisable === true || 92 | (optionDisable === 'mobile' && detect.mobile()) || 93 | (optionDisable === 'phone' && detect.phone()) || 94 | (optionDisable === 'tablet' && detect.tablet()) || 95 | (typeof optionDisable === 'function' && optionDisable() === true); 96 | }; 97 | 98 | /** 99 | * Initializing AOS 100 | * - Create options merging defaults with user defined options 101 | * - Set attributes on as global setting - css relies on it 102 | * - Attach preparing elements to options.startEvent, 103 | * window resize and orientation change 104 | * - Attach function that handle scroll and everything connected to it 105 | * to window scroll event and fire once document is ready to set initial state 106 | */ 107 | const init = function init(settings) { 108 | options = Object.assign(options, settings); 109 | 110 | // Create initial array with elements -> to be fullfilled later with prepare() 111 | $aosElements = elements(); 112 | 113 | /** 114 | * Don't init plugin if option `disable` is set 115 | * or when browser is not supported 116 | */ 117 | if (isDisabled(options.disable) || browserNotSupported) { 118 | return disable(); 119 | } 120 | 121 | /** 122 | * Set global settings on body, based on options 123 | * so CSS can use it 124 | */ 125 | document.querySelector('body').setAttribute('data-aos-easing', options.easing); 126 | document.querySelector('body').setAttribute('data-aos-duration', options.duration); 127 | document.querySelector('body').setAttribute('data-aos-delay', options.delay); 128 | 129 | /** 130 | * Handle initializing 131 | */ 132 | if (options.startEvent === 'DOMContentLoaded' && 133 | ['complete', 'interactive'].indexOf(document.readyState) > -1) { 134 | // Initialize AOS if default startEvent was already fired 135 | refresh(true); 136 | } else if (options.startEvent === 'load') { 137 | // If start event is 'Load' - attach listener to window 138 | window.addEventListener(options.startEvent, function() { 139 | refresh(true); 140 | }); 141 | } else { 142 | // Listen to options.startEvent and initialize AOS 143 | document.addEventListener(options.startEvent, function() { 144 | refresh(true); 145 | }); 146 | } 147 | 148 | /** 149 | * Refresh plugin on window resize or orientation change 150 | */ 151 | window.addEventListener('resize', debounce(refresh, options.debounceDelay, true)); 152 | window.addEventListener('orientationchange', debounce(refresh, options.debounceDelay, true)); 153 | 154 | /** 155 | * Handle scroll event to animate elements on scroll 156 | */ 157 | window.addEventListener('scroll', throttle(() => { 158 | handleScroll($aosElements, options.once); 159 | }, options.throttleDelay)); 160 | 161 | /** 162 | * Observe [aos] elements 163 | * If something is loaded by AJAX 164 | * it'll refresh plugin automatically 165 | */ 166 | if (!options.disableMutationObserver) { 167 | observe('[data-aos]', refreshHard); 168 | } 169 | 170 | return $aosElements; 171 | }; 172 | 173 | /** 174 | * Export Public API 175 | */ 176 | 177 | module.exports = { 178 | init, 179 | refresh, 180 | refreshHard 181 | }; 182 | -------------------------------------------------------------------------------- /demo/simple.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | AOS - Animate on scroll library 6 | 7 | 8 | 9 | 12 | 13 | 14 |
15 |
16 |

1

17 |
18 |
19 |

2

20 |
21 |
22 |

3

23 |
24 |
25 |

4

26 |
27 |
28 |

5

29 |
30 |
31 |

6

32 |
33 |
34 |

7

35 |
36 |
37 |

8

38 |
39 |
40 |

9

41 |
42 |
43 |

10

44 |
45 |
46 |

11

47 |
48 |
49 |

12

50 |
51 |
52 |

13

53 |
54 |
55 |

14

56 |
57 |
58 |

15

59 |
60 |
61 |

16

62 |
63 |
64 |

17

65 |
66 |
67 |

18

68 |
69 |
70 |

19

71 |
72 |
73 |

20

74 |
75 |
76 |

21

77 |
78 |
79 |

22

80 |
81 |
82 |

23

83 |
84 |
85 |

24

86 |
87 |
88 |

25

89 |
90 |
91 |

26

92 |
93 |
94 |

27

95 |
96 |
97 |

28

98 |
99 |
100 |

29

101 |
102 |
103 |

30

104 |
105 |
106 |

31

107 |
108 |
109 |

32

110 |
111 |
112 |

33

113 |
114 |
115 |

34

116 |
117 |
118 |

35

119 |
120 |
121 |

36

122 |
123 |
124 |

37

125 |
126 |
127 |

38

128 |
129 |
130 |

39

131 |
132 |
133 |

40

134 |
135 |
136 |

41

137 |
138 |
139 |

42

140 |
141 |
142 | 143 | 144 | 149 | 150 | 162 | 163 | 164 | -------------------------------------------------------------------------------- /test/calculateOffset.spec.js: -------------------------------------------------------------------------------- 1 | import $ from 'jquery'; 2 | import calculateOffset from '../src/js/helpers/calculateOffset'; 3 | 4 | const delay = 50; 5 | 6 | jasmine.getStyleFixtures().fixturesPath = 'base/dist'; 7 | jasmine.getFixtures().fixturesPath = 'base/test/fixtures'; 8 | 9 | describe('Offset -> ', function() { 10 | 11 | beforeEach(function() { 12 | jasmine.getStyleFixtures().load = 'aos.css'; 13 | jasmine.getFixtures().load('aos.fixture.html'); 14 | }); 15 | 16 | afterEach(function() { 17 | jasmine.getStyleFixtures().cleanUp(); 18 | jasmine.getFixtures().cleanUp(); 19 | }); 20 | 21 | describe('with default option set to "0" -> ', function() { 22 | var offset = 0; 23 | 24 | it('on aos-item--1 should equal 0', function(done) { 25 | var node = document.querySelector('.aos-item--1'); 26 | 27 | setTimeout(function() { 28 | expect(calculateOffset(node, offset)).toBe(0); 29 | done(); 30 | }, delay); 31 | }); 32 | 33 | it('on aos-item--2 should equal 150', function(done) { 34 | var node = document.querySelector('.aos-item--2'); 35 | 36 | setTimeout(function() { 37 | expect(calculateOffset(node, offset)).toBe(150); 38 | done(); 39 | }, delay); 40 | }); 41 | 42 | it('on aos-item--6 should equal 750', function(done) { 43 | var node = document.querySelector('.aos-item--6'); 44 | 45 | setTimeout(function() { 46 | expect(calculateOffset(node, offset)).toBe(750); 47 | done(); 48 | }, delay); 49 | }); 50 | 51 | }); 52 | 53 | describe('with default option set to "50" => ', function() { 54 | var offset = 50; 55 | 56 | it('on aos-item--1 should equal 50', function(done) { 57 | var node = document.querySelector('.aos-item--1'); 58 | 59 | setTimeout(function() { 60 | expect(calculateOffset(node, offset)).toBe(50); 61 | done(); 62 | }, delay); 63 | }); 64 | 65 | it('on aos-item--2 should equal 200', function(done) { 66 | var node = document.querySelector('.aos-item--2'); 67 | 68 | setTimeout(function() { 69 | expect(calculateOffset(node, offset)).toBe(200); 70 | done(); 71 | }, delay); 72 | }); 73 | 74 | it('on aos-item--6 should equal 800', function(done) { 75 | var node = document.querySelector('.aos-item--6'); 76 | 77 | setTimeout(function() { 78 | expect(calculateOffset(node, offset)).toBe(800); 79 | done(); 80 | }, delay); 81 | }); 82 | 83 | }); 84 | 85 | describe('after AOS init -> ', function() { 86 | 87 | beforeEach(function() { 88 | $('.aos-item').addClass('aos-init'); 89 | }); 90 | 91 | describe('with option "offset" set to "50" => ', function() { 92 | var offset = 50; 93 | 94 | it('on aos-item--1 should equal 50', function(done) { 95 | var node = document.querySelector('.aos-item--1'); 96 | 97 | setTimeout(function() { 98 | expect(calculateOffset(node, offset)).toBe(50); 99 | done(); 100 | }, delay); 101 | }); 102 | 103 | it('on aos-item--2 should equal 200', function(done) { 104 | var node = document.querySelector('.aos-item--2'); 105 | 106 | setTimeout(function() { 107 | expect(calculateOffset(node, offset)).toBe(200); 108 | done(); 109 | }, delay); 110 | }); 111 | 112 | it('on aos-item--6 should equal 800', function(done) { 113 | var node = document.querySelector('.aos-item--6'); 114 | 115 | setTimeout(function() { 116 | expect(calculateOffset(node, offset)).toBe(800); 117 | done(); 118 | }, delay); 119 | }); 120 | 121 | }); 122 | 123 | describe('with option "offset" set to "0" => ', function() { 124 | var offset = 0; 125 | 126 | it('on aos-item--1 should equal 0', function(done) { 127 | var node = document.querySelector('.aos-item--1'); 128 | 129 | setTimeout(function() { 130 | expect(calculateOffset(node, offset)).toBe(0); 131 | done(); 132 | }, delay); 133 | }); 134 | 135 | it('on aos-item--2 should equal 150', function(done) { 136 | var node = document.querySelector('.aos-item--2'); 137 | 138 | setTimeout(function() { 139 | expect(calculateOffset(node, offset)).toBe(150); 140 | done(); 141 | }, delay); 142 | }); 143 | 144 | it('on aos-item--6 should equal 750', function(done) { 145 | var node = document.querySelector('.aos-item--6'); 146 | 147 | setTimeout(function() { 148 | expect(calculateOffset(node, offset)).toBe(750); 149 | done(); 150 | }, delay); 151 | }); 152 | 153 | }); 154 | 155 | }); 156 | 157 | }); 158 | 159 | 160 | describe('Offset on element with attr [aos-offset] -> set to "50" ', function() { 161 | 162 | beforeEach(function() { 163 | jasmine.getStyleFixtures().load = 'aos.css'; 164 | jasmine.getFixtures().load('aos-offset.fixture.html'); 165 | }); 166 | 167 | afterEach(function() { 168 | jasmine.getStyleFixtures().cleanUp(); 169 | jasmine.getFixtures().cleanUp(); 170 | }); 171 | 172 | it('on aos-item--1 should equal 50', function(done) { 173 | var node = document.querySelector('.aos-item--1'); 174 | 175 | setTimeout(function() { 176 | expect(calculateOffset(node)).toBe(50); 177 | done(); 178 | }, delay); 179 | }); 180 | 181 | it('on aos-item--2 should equal 200', function(done) { 182 | var node = document.querySelector('.aos-item--2'); 183 | 184 | setTimeout(function() { 185 | expect(calculateOffset(node)).toBe(200); 186 | done(); 187 | }, delay); 188 | }); 189 | 190 | it('on aos-item--6 should equal 800', function(done) { 191 | var node = document.querySelector('.aos-item--6'); 192 | 193 | setTimeout(function() { 194 | expect(calculateOffset(node)).toBe(800); 195 | done(); 196 | }, delay); 197 | }); 198 | 199 | }); 200 | 201 | describe('Offset on element with attr [aos-offset] after AOS init -> set to "50" ', function() { 202 | 203 | beforeEach(function() { 204 | jasmine.getStyleFixtures().load = 'aos.css'; 205 | jasmine.getFixtures().load('aos-offset.fixture.html'); 206 | $('.aos-item').addClass('aos-init'); 207 | }); 208 | 209 | afterEach(function() { 210 | jasmine.getStyleFixtures().cleanUp(); 211 | jasmine.getFixtures().cleanUp(); 212 | }); 213 | 214 | it('on aos-item--1 should equal 50', function(done) { 215 | var node = document.querySelector('.aos-item--1'); 216 | 217 | setTimeout(function() { 218 | expect(calculateOffset(node)).toBe(50); 219 | done(); 220 | }, delay); 221 | }); 222 | 223 | it('on aos-item--2 should equal 200', function(done) { 224 | var node = document.querySelector('.aos-item--2'); 225 | 226 | setTimeout(function() { 227 | expect(calculateOffset(node)).toBe(200); 228 | done(); 229 | }, delay); 230 | }); 231 | 232 | it('on aos-item--6 should equal 800', function(done) { 233 | var node = document.querySelector('.aos-item--6'); 234 | 235 | setTimeout(function() { 236 | expect(calculateOffset(node)).toBe(800); 237 | done(); 238 | }, delay); 239 | }); 240 | 241 | }); 242 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![AOS - Animate on scroll library](https://s32.postimg.org/ktvt59hol/aos_header.png)](http://michalsnik.github.io/aos/) 2 | 3 | [![NPM version](https://img.shields.io/npm/v/aos.svg?style=flat)](https://npmjs.org/package/aos) 4 | [![NPM downloads](https://img.shields.io/npm/dm/aos.svg?style=flat)](https://npmjs.org/package/aos) 5 | [![Build Status](https://travis-ci.org/michalsnik/aos.svg?branch=master)](https://travis-ci.org/michalsnik/aos) 6 | [![Gitter](https://badges.gitter.im/michalsnik/aos.svg)](https://gitter.im/michalsnik/aos?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) 7 | 8 | [![Twitter Follow](https://img.shields.io/twitter/follow/michalsnik.svg?style=social)](https://twitter.com/michalsnik) [![Twitter URL](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/home?status=AOS%20-%20Animate%20on%20Scroll%20library%0Ahttps%3A//github.com/michalsnik/aos) 9 | 10 | Small library to animate elements on your page as you scroll. 11 | 12 | You may say it's like WOWJS, yeah - you're right, effect is similar to WOWJS, but I had a different idea how to make such a plugin, so here it is. CSS3 driven scroll animation library. 13 | 14 | AOS allows you to animate elements as you scroll down, and up. 15 | If you scroll back to top, elements will animate to it's previous state and are ready to animate again if you scroll down. 16 | 17 | 👉 To get a better understanding how this actually works, I encourage you to check [my post on CSS-tricks](https://css-tricks.com/aos-css-driven-scroll-animation-library/). 18 | 19 | --- 20 | 21 | ### 🚀 [Demo](http://michalsnik.github.io/aos/) 22 | 23 | ### 🌟 Codepen Examples 24 | - [Different build in animations](http://codepen.io/michalsnik/pen/WxNdvq) 25 | - [With anchor setting in use](http://codepen.io/michalsnik/pen/jrOYVO) 26 | - [With anchor-placement and different easing](http://codepen.io/michalsnik/pen/EyxoNm) 27 | - [With simple custom animations](http://codepen.io/michalsnik/pen/WxvNvE) 28 | 29 | --- 30 | 31 | ## ❗ Attention 32 | From version `2.0.0` attributes `aos` are no longer supported, always use `data-aos`. 33 | 34 | ## ⚙ Setup 35 | 36 | ### Install AOS 37 | 38 | - Using `bower` 39 | 40 | ```bash 41 | bower install aos --save 42 | ``` 43 | 44 | - Using `npm` 45 | 46 | ```bash 47 | npm install aos --save 48 | ``` 49 | 50 | - Direct download -> [click here](https://github.com/michalsnik/aos/archive/master.zip) 51 | 52 | 53 | ### Link styles 54 | 55 | ```html 56 | 57 | ``` 58 | 59 | ### Add scripts 60 | 61 | ```html 62 | 63 | ``` 64 | 65 | AOS from version `1.2.0` is available as UMD module, so you can use it as AMD, Global, Node or ES6 module. 66 | 67 | ### Init AOS 68 | 69 | ```javascript 70 | 73 | ``` 74 | 75 | ## 🤔 How to use it? 76 | 77 | ### Basic usage 78 | 79 | All you have to do is to add `data-aos` attribute to html element, like so: 80 | 81 | ```html 82 |
83 | ``` 84 | 85 | Script will trigger "animation_name" animation on this element, if you scroll to it. 86 | 87 | [Down below](https://github.com/michalsnik/aos#-animations) is a list of all available animations for now :) 88 | 89 | ### 🔥 Advanced settings 90 | 91 | These settings can be set both on certain elements, or as default while initializing script (in options object without `data-` part). 92 | 93 | | Attribute | Description | Example value | Default value | 94 | |---------------------------|-------------|---------------|---------| 95 | | *`data-aos-offset`* | Change offset to trigger animations sooner or later (px) | 200 | 120 | 96 | | *`data-aos-duration`* | *Duration of animation (ms) | 600 | 400 | 97 | | *`data-aos-easing`* | Choose timing function to ease elements in different ways | ease-in-sine | ease | 98 | | *`data-aos-delay`* | Delay animation (ms) | 300 | 0 | 99 | | *`data-aos-anchor`* | Anchor element, whose offset will be counted to trigger animation instead of actual elements offset | #selector | null | 100 | | *`data-aos-anchor-placement`* | Anchor placement - which one position of element on the screen should trigger animation | top-center | top-bottom | 101 | | *`data-aos-once`* | Choose wheter animation should fire once, or every time you scroll up/down to element | true | false | 102 | 103 | *Duration accept values from 50 to 3000, with step 50ms, it's because duration of animation is handled by css, and to not make css longer than it is already I created implementations only in this range. I think this should be good for almost all cases. 104 | 105 | If not, you may write simple CSS on your page that will add another duration option value available, for example: 106 | 107 | ```css 108 | body[data-aos-duration='4000'] [data-aos], [data-aos][data-aos][data-aos-duration='4000']{ 109 | transition-duration: 4000ms; 110 | } 111 | ``` 112 | 113 | This code will add 4000ms duration available for you to set on AOS elements, or to set as global duration while initializing AOS script. 114 | 115 | Notice that double `[data-aos][data-aos]` - it's not a mistake, it is a trick, to make individual settings more important than global, without need to write ugly "!important" there :) 116 | 117 | `data-aos-anchor-placement` - You can set different placement option on each element, the principle is pretty simple, each anchor-placement option contains two words i.e. `top-center`. This means that animation will be triggered when `top` of element will reach `center` of the window. 118 | `bottom-top` means that animation will be triggered when `bottom` of an element reach `top` of the window, and so on. 119 | Down below you can find list of all anchor-placement options. 120 | 121 | #### Examples: 122 | 123 | ```html 124 |
125 | ``` 126 | ```html 127 |
128 | ``` 129 | ```html 130 |
131 | ``` 132 | 133 | 134 | #### API 135 | 136 | AOS object is exposed as a global variable, for now there are three methods available: 137 | 138 | * `init` - initialize AOS 139 | * `refresh` - recalculate all offsets and positions of elements (called on window resize) 140 | * `refreshHard` - reinit array with AOS elements and trigger `refresh` (called on DOM changes that are related to `aos` elements) 141 | 142 | Example execution: 143 | ```javascript 144 | AOS.refresh(); 145 | ``` 146 | 147 | By default AOS is watching for DOM changes and if there are any new elements loaded asynchronously or when something is removed from DOM it calls `refreshHard` automatically. In browsers that don't support `MutationObserver` like IE you might need to call `AOS.refreshHard()` by yourself. 148 | 149 | `refresh` method is called on window resize and so on, as it doesn't require to build new store with AOS elements and should be as light as possible. 150 | 151 | ### Global settings 152 | 153 | If you don't want to change setting for each element separately, you can change it globally. 154 | 155 | To do this, pass options object to `init()` function, like so: 156 | 157 | ```javascript 158 | 166 | ``` 167 | 168 | #### Additional configuration 169 | 170 | These settings can be set only in options object while initializing AOS. 171 | 172 | | Setting | Description | Example value | Default value | 173 | |---------------------------|-------------|---------------|---------| 174 | | *`disable`* | Condition when AOS should be disabled | mobile | false | 175 | | *`startEvent`* | Name of event, on which AOS should be initialized | exampleEvent | DOMContentLoaded | 176 | 177 | ##### Disabling AOS 178 | 179 | If you want to disable AOS on certain device or under any statement you can set `disable` option. Like so: 180 | 181 | ```javascript 182 | 187 | ``` 188 | 189 | There are several options that you can use to fit AOS perfectly into your project, you can pass one of three device types: 190 | `mobile` (phones and tablets), `phone` or `tablet`. This will disable AOS on those certains devices. But if you want make your own condition, simple type your statement instead of device type name: 191 | 192 | ```javascript 193 | disable: window.innerWidth < 1024 194 | ``` 195 | 196 | There is also posibility to pass a `function`, which should at the end return `true` or `false`: 197 | 198 | ```javascript 199 | disable: function () { 200 | var maxWidth = 1024; 201 | return window.innerWidth < maxWidth; 202 | } 203 | ``` 204 | 205 | ##### Start event 206 | 207 | If you don't want to initialize AOS on `DOMContentLoaded` event, you can pass your own event name and trigger it whenever you want. AOS is listening for this event on `document` element. 208 | 209 | ```javascript 210 | 215 | ``` 216 | 217 | **Important note:** If you set `startEvent: 'load'` it will add event listener on `window` instead of `document`. 218 | 219 | 220 | ### 👻 Animations 221 | 222 | There are serveral predefined animations you can use already: 223 | 224 | * Fade animations: 225 | * fade 226 | * fade-up 227 | * fade-down 228 | * fade-left 229 | * fade-right 230 | * fade-up-right 231 | * fade-up-left 232 | * fade-down-right 233 | * fade-down-left 234 | 235 | * Flip animations: 236 | * flip-up 237 | * flip-down 238 | * flip-left 239 | * flip-right 240 | 241 | * Slide animations: 242 | * slide-up 243 | * slide-down 244 | * slide-left 245 | * slide-right 246 | 247 | * Zoom animations: 248 | * zoom-in 249 | * zoom-in-up 250 | * zoom-in-down 251 | * zoom-in-left 252 | * zoom-in-right 253 | * zoom-out 254 | * zoom-out-up 255 | * zoom-out-down 256 | * zoom-out-left 257 | * zoom-out-right 258 | 259 | ### Anchor placement: 260 | 261 | * top-bottom 262 | * top-center 263 | * top-top 264 | * center-bottom 265 | * center-center 266 | * center-top 267 | * bottom-bottom 268 | * bottom-center 269 | * bottom-top 270 | 271 | 272 | ### Easing functions: 273 | 274 | You can choose one of these timing function to animate elements nicely: 275 | 276 | * linear 277 | * ease 278 | * ease-in 279 | * ease-out 280 | * ease-in-out 281 | * ease-in-back 282 | * ease-out-back 283 | * ease-in-out-back 284 | * ease-in-sine 285 | * ease-out-sine 286 | * ease-in-out-sine 287 | * ease-in-quad 288 | * ease-out-quad 289 | * ease-in-out-quad 290 | * ease-in-cubic 291 | * ease-out-cubic 292 | * ease-in-out-cubic 293 | * ease-in-quart 294 | * ease-out-quart 295 | * ease-in-out-quart 296 | 297 | ## ✌️ [Contributing](CONTRIBUTING.md) 298 | 299 | ## 📝 [Changelog](CHANGELOG.md) 300 | 301 | ## ❔Questions 302 | 303 | If you have any questions, ideas or whatsoever, please check [AOS contribution guide](CONTRIBUTING.md) and don't hesitate to create new issues. 304 | -------------------------------------------------------------------------------- /dist/aos.js: -------------------------------------------------------------------------------- 1 | !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.AOS=t():e.AOS=t()}(this,function(){return function(e){function t(o){if(n[o])return n[o].exports;var i=n[o]={exports:{},id:o,loaded:!1};return e[o].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="dist/",t(0)}([function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}var i=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]&&arguments[0];if(e&&(k=!0),k)return w=(0,y.default)(w,j),(0,b.default)(w,j.once),w},_=function(){w=(0,h.default)(),O()},S=function(){w.forEach(function(e,t){e.node.removeAttribute("data-aos"),e.node.removeAttribute("data-aos-easing"),e.node.removeAttribute("data-aos-duration"),e.node.removeAttribute("data-aos-delay")})},z=function(e){return e===!0||"mobile"===e&&p.default.mobile()||"phone"===e&&p.default.phone()||"tablet"===e&&p.default.tablet()||"function"==typeof e&&e()===!0},A=function(e){return j=i(j,e),w=(0,h.default)(),z(j.disable)||x?S():(document.querySelector("body").setAttribute("data-aos-easing",j.easing),document.querySelector("body").setAttribute("data-aos-duration",j.duration),document.querySelector("body").setAttribute("data-aos-delay",j.delay),"DOMContentLoaded"===j.startEvent&&["complete","interactive"].indexOf(document.readyState)>-1?O(!0):"load"===j.startEvent?window.addEventListener(j.startEvent,function(){O(!0)}):document.addEventListener(j.startEvent,function(){O(!0)}),window.addEventListener("resize",(0,f.default)(O,j.debounceDelay,!0)),window.addEventListener("orientationchange",(0,f.default)(O,j.debounceDelay,!0)),window.addEventListener("scroll",(0,u.default)(function(){(0,b.default)(w,j.once)},j.throttleDelay)),j.disableMutationObserver||(0,d.default)("[data-aos]",_),w)};e.exports={init:A,refresh:O,refreshHard:_}},function(e,t){},,,,,function(e,t){(function(t){"use strict";function n(e,t,n){function o(t){var n=b,o=v;return b=v=void 0,k=t,g=e.apply(o,n)}function r(e){return k=e,h=setTimeout(s,t),_?o(e):g}function a(e){var n=e-w,o=e-k,i=t-n;return S?j(i,y-o):i}function c(e){var n=e-w,o=e-k;return void 0===w||n>=t||n<0||S&&o>=y}function s(){var e=O();return c(e)?d(e):void(h=setTimeout(s,a(e)))}function d(e){return h=void 0,z&&b?o(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),k=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(O())}function m(){var e=O(),n=c(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(S)return h=setTimeout(s,t),o(w)}return void 0===h&&(h=setTimeout(s,t)),g}var b,v,y,g,h,w,k=0,_=!1,S=!1,z=!0;if("function"!=typeof e)throw new TypeError(f);return t=u(t)||0,i(n)&&(_=!!n.leading,S="maxWait"in n,y=S?x(u(n.maxWait)||0,t):y,z="trailing"in n?!!n.trailing:z),m.cancel=l,m.flush=p,m}function o(e,t,o){var r=!0,a=!0;if("function"!=typeof e)throw new TypeError(f);return i(o)&&(r="leading"in o?!!o.leading:r,a="trailing"in o?!!o.trailing:a),n(e,t,{leading:r,maxWait:t,trailing:a})}function i(e){var t="undefined"==typeof e?"undefined":c(e);return!!e&&("object"==t||"function"==t)}function r(e){return!!e&&"object"==("undefined"==typeof e?"undefined":c(e))}function a(e){return"symbol"==("undefined"==typeof e?"undefined":c(e))||r(e)&&k.call(e)==d}function u(e){if("number"==typeof e)return e;if(a(e))return s;if(i(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=i(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(l,"");var n=m.test(e);return n||b.test(e)?v(e.slice(2),n?2:8):p.test(e)?s:+e}var c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},f="Expected a function",s=NaN,d="[object Symbol]",l=/^\s+|\s+$/g,p=/^[-+]0x[0-9a-f]+$/i,m=/^0b[01]+$/i,b=/^0o[0-7]+$/i,v=parseInt,y="object"==("undefined"==typeof t?"undefined":c(t))&&t&&t.Object===Object&&t,g="object"==("undefined"==typeof self?"undefined":c(self))&&self&&self.Object===Object&&self,h=y||g||Function("return this")(),w=Object.prototype,k=w.toString,x=Math.max,j=Math.min,O=function(){return h.Date.now()};e.exports=o}).call(t,function(){return this}())},function(e,t){(function(t){"use strict";function n(e,t,n){function i(t){var n=b,o=v;return b=v=void 0,O=t,g=e.apply(o,n)}function r(e){return O=e,h=setTimeout(s,t),_?i(e):g}function u(e){var n=e-w,o=e-O,i=t-n;return S?x(i,y-o):i}function f(e){var n=e-w,o=e-O;return void 0===w||n>=t||n<0||S&&o>=y}function s(){var e=j();return f(e)?d(e):void(h=setTimeout(s,u(e)))}function d(e){return h=void 0,z&&b?i(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),O=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(j())}function m(){var e=j(),n=f(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(S)return h=setTimeout(s,t),i(w)}return void 0===h&&(h=setTimeout(s,t)),g}var b,v,y,g,h,w,O=0,_=!1,S=!1,z=!0;if("function"!=typeof e)throw new TypeError(c);return t=a(t)||0,o(n)&&(_=!!n.leading,S="maxWait"in n,y=S?k(a(n.maxWait)||0,t):y,z="trailing"in n?!!n.trailing:z),m.cancel=l,m.flush=p,m}function o(e){var t="undefined"==typeof e?"undefined":u(e);return!!e&&("object"==t||"function"==t)}function i(e){return!!e&&"object"==("undefined"==typeof e?"undefined":u(e))}function r(e){return"symbol"==("undefined"==typeof e?"undefined":u(e))||i(e)&&w.call(e)==s}function a(e){if("number"==typeof e)return e;if(r(e))return f;if(o(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=o(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(d,"");var n=p.test(e);return n||m.test(e)?b(e.slice(2),n?2:8):l.test(e)?f:+e}var u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},c="Expected a function",f=NaN,s="[object Symbol]",d=/^\s+|\s+$/g,l=/^[-+]0x[0-9a-f]+$/i,p=/^0b[01]+$/i,m=/^0o[0-7]+$/i,b=parseInt,v="object"==("undefined"==typeof t?"undefined":u(t))&&t&&t.Object===Object&&t,y="object"==("undefined"==typeof self?"undefined":u(self))&&self&&self.Object===Object&&self,g=v||y||Function("return this")(),h=Object.prototype,w=h.toString,k=Math.max,x=Math.min,j=function(){return g.Date.now()};e.exports=n}).call(t,function(){return this}())},function(e,t){"use strict";function n(e,t){var n=new r(o);a=t,n.observe(i.documentElement,{childList:!0,subtree:!0,removedNodes:!0})}function o(e){e&&e.forEach(function(e){var t=Array.prototype.slice.call(e.addedNodes),n=Array.prototype.slice.call(e.removedNodes),o=t.concat(n).filter(function(e){return e.hasAttribute&&e.hasAttribute("data-aos")}).length;o&&a()})}Object.defineProperty(t,"__esModule",{value:!0});var i=window.document,r=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver,a=function(){};t.default=n},function(e,t){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(){return navigator.userAgent||navigator.vendor||window.opera||""}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var n=0;ne.position?e.node.classList.add("aos-animate"):"undefined"!=typeof o&&("false"===o||!n&&"true"!==o)&&e.node.classList.remove("aos-animate")},o=function(e,t){var o=window.pageYOffset,i=window.innerHeight;e.forEach(function(e,r){n(e,i+o,t)})};t.default=o},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var i=n(12),r=o(i),a=function(e,t){return e.forEach(function(e,n){e.node.classList.add("aos-init"),e.position=(0,r.default)(e.node,t.offset)}),e};t.default=a},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var i=n(13),r=o(i),a=function(e,t){var n=0,o=0,i=window.innerHeight,a={offset:e.getAttribute("data-aos-offset"),anchor:e.getAttribute("data-aos-anchor"),anchorPlacement:e.getAttribute("data-aos-anchor-placement")};switch(a.offset&&!isNaN(a.offset)&&(o=parseInt(a.offset)),a.anchor&&document.querySelectorAll(a.anchor)&&(e=document.querySelectorAll(a.anchor)[0]),n=(0,r.default)(e).top,a.anchorPlacement){case"top-bottom":break;case"center-bottom":n+=e.offsetHeight/2;break;case"bottom-bottom":n+=e.offsetHeight;break;case"top-center":n+=i/2;break;case"bottom-center":n+=i/2+e.offsetHeight;break;case"center-center":n+=i/2+e.offsetHeight/2;break;case"top-top":n+=i;break;case"bottom-top":n+=e.offsetHeight+i;break;case"center-top":n+=e.offsetHeight/2+i}return a.anchorPlacement||a.offset||isNaN(t)||(o=t),n+o};t.default=a},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(e){for(var t=0,n=0;e&&!isNaN(e.offsetLeft)&&!isNaN(e.offsetTop);)t+=e.offsetLeft-("BODY"!=e.tagName?e.scrollLeft:0),n+=e.offsetTop-("BODY"!=e.tagName?e.scrollTop:0),e=e.offsetParent;return{top:n,left:t}};t.default=n},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(e){return e=e||document.querySelectorAll("[data-aos]"),Array.prototype.map.call(e,function(e){return{node:e}})};t.default=n}])}); -------------------------------------------------------------------------------- /dist/aos.css: -------------------------------------------------------------------------------- 1 | [data-aos][data-aos][data-aos-duration="50"],body[data-aos-duration="50"] [data-aos]{transition-duration:50ms}[data-aos][data-aos][data-aos-delay="50"],body[data-aos-delay="50"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="50"].aos-animate,body[data-aos-delay="50"] [data-aos].aos-animate{transition-delay:50ms}[data-aos][data-aos][data-aos-duration="100"],body[data-aos-duration="100"] [data-aos]{transition-duration:.1s}[data-aos][data-aos][data-aos-delay="100"],body[data-aos-delay="100"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="100"].aos-animate,body[data-aos-delay="100"] [data-aos].aos-animate{transition-delay:.1s}[data-aos][data-aos][data-aos-duration="150"],body[data-aos-duration="150"] [data-aos]{transition-duration:.15s}[data-aos][data-aos][data-aos-delay="150"],body[data-aos-delay="150"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="150"].aos-animate,body[data-aos-delay="150"] [data-aos].aos-animate{transition-delay:.15s}[data-aos][data-aos][data-aos-duration="200"],body[data-aos-duration="200"] [data-aos]{transition-duration:.2s}[data-aos][data-aos][data-aos-delay="200"],body[data-aos-delay="200"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="200"].aos-animate,body[data-aos-delay="200"] [data-aos].aos-animate{transition-delay:.2s}[data-aos][data-aos][data-aos-duration="250"],body[data-aos-duration="250"] [data-aos]{transition-duration:.25s}[data-aos][data-aos][data-aos-delay="250"],body[data-aos-delay="250"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="250"].aos-animate,body[data-aos-delay="250"] [data-aos].aos-animate{transition-delay:.25s}[data-aos][data-aos][data-aos-duration="300"],body[data-aos-duration="300"] [data-aos]{transition-duration:.3s}[data-aos][data-aos][data-aos-delay="300"],body[data-aos-delay="300"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="300"].aos-animate,body[data-aos-delay="300"] [data-aos].aos-animate{transition-delay:.3s}[data-aos][data-aos][data-aos-duration="350"],body[data-aos-duration="350"] [data-aos]{transition-duration:.35s}[data-aos][data-aos][data-aos-delay="350"],body[data-aos-delay="350"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="350"].aos-animate,body[data-aos-delay="350"] [data-aos].aos-animate{transition-delay:.35s}[data-aos][data-aos][data-aos-duration="400"],body[data-aos-duration="400"] [data-aos]{transition-duration:.4s}[data-aos][data-aos][data-aos-delay="400"],body[data-aos-delay="400"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="400"].aos-animate,body[data-aos-delay="400"] [data-aos].aos-animate{transition-delay:.4s}[data-aos][data-aos][data-aos-duration="450"],body[data-aos-duration="450"] [data-aos]{transition-duration:.45s}[data-aos][data-aos][data-aos-delay="450"],body[data-aos-delay="450"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="450"].aos-animate,body[data-aos-delay="450"] [data-aos].aos-animate{transition-delay:.45s}[data-aos][data-aos][data-aos-duration="500"],body[data-aos-duration="500"] [data-aos]{transition-duration:.5s}[data-aos][data-aos][data-aos-delay="500"],body[data-aos-delay="500"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="500"].aos-animate,body[data-aos-delay="500"] [data-aos].aos-animate{transition-delay:.5s}[data-aos][data-aos][data-aos-duration="550"],body[data-aos-duration="550"] [data-aos]{transition-duration:.55s}[data-aos][data-aos][data-aos-delay="550"],body[data-aos-delay="550"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="550"].aos-animate,body[data-aos-delay="550"] [data-aos].aos-animate{transition-delay:.55s}[data-aos][data-aos][data-aos-duration="600"],body[data-aos-duration="600"] [data-aos]{transition-duration:.6s}[data-aos][data-aos][data-aos-delay="600"],body[data-aos-delay="600"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="600"].aos-animate,body[data-aos-delay="600"] [data-aos].aos-animate{transition-delay:.6s}[data-aos][data-aos][data-aos-duration="650"],body[data-aos-duration="650"] [data-aos]{transition-duration:.65s}[data-aos][data-aos][data-aos-delay="650"],body[data-aos-delay="650"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="650"].aos-animate,body[data-aos-delay="650"] [data-aos].aos-animate{transition-delay:.65s}[data-aos][data-aos][data-aos-duration="700"],body[data-aos-duration="700"] [data-aos]{transition-duration:.7s}[data-aos][data-aos][data-aos-delay="700"],body[data-aos-delay="700"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="700"].aos-animate,body[data-aos-delay="700"] [data-aos].aos-animate{transition-delay:.7s}[data-aos][data-aos][data-aos-duration="750"],body[data-aos-duration="750"] [data-aos]{transition-duration:.75s}[data-aos][data-aos][data-aos-delay="750"],body[data-aos-delay="750"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="750"].aos-animate,body[data-aos-delay="750"] [data-aos].aos-animate{transition-delay:.75s}[data-aos][data-aos][data-aos-duration="800"],body[data-aos-duration="800"] [data-aos]{transition-duration:.8s}[data-aos][data-aos][data-aos-delay="800"],body[data-aos-delay="800"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="800"].aos-animate,body[data-aos-delay="800"] [data-aos].aos-animate{transition-delay:.8s}[data-aos][data-aos][data-aos-duration="850"],body[data-aos-duration="850"] [data-aos]{transition-duration:.85s}[data-aos][data-aos][data-aos-delay="850"],body[data-aos-delay="850"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="850"].aos-animate,body[data-aos-delay="850"] [data-aos].aos-animate{transition-delay:.85s}[data-aos][data-aos][data-aos-duration="900"],body[data-aos-duration="900"] [data-aos]{transition-duration:.9s}[data-aos][data-aos][data-aos-delay="900"],body[data-aos-delay="900"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="900"].aos-animate,body[data-aos-delay="900"] [data-aos].aos-animate{transition-delay:.9s}[data-aos][data-aos][data-aos-duration="950"],body[data-aos-duration="950"] [data-aos]{transition-duration:.95s}[data-aos][data-aos][data-aos-delay="950"],body[data-aos-delay="950"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="950"].aos-animate,body[data-aos-delay="950"] [data-aos].aos-animate{transition-delay:.95s}[data-aos][data-aos][data-aos-duration="1000"],body[data-aos-duration="1000"] [data-aos]{transition-duration:1s}[data-aos][data-aos][data-aos-delay="1000"],body[data-aos-delay="1000"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1000"].aos-animate,body[data-aos-delay="1000"] [data-aos].aos-animate{transition-delay:1s}[data-aos][data-aos][data-aos-duration="1050"],body[data-aos-duration="1050"] [data-aos]{transition-duration:1.05s}[data-aos][data-aos][data-aos-delay="1050"],body[data-aos-delay="1050"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1050"].aos-animate,body[data-aos-delay="1050"] [data-aos].aos-animate{transition-delay:1.05s}[data-aos][data-aos][data-aos-duration="1100"],body[data-aos-duration="1100"] [data-aos]{transition-duration:1.1s}[data-aos][data-aos][data-aos-delay="1100"],body[data-aos-delay="1100"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1100"].aos-animate,body[data-aos-delay="1100"] [data-aos].aos-animate{transition-delay:1.1s}[data-aos][data-aos][data-aos-duration="1150"],body[data-aos-duration="1150"] [data-aos]{transition-duration:1.15s}[data-aos][data-aos][data-aos-delay="1150"],body[data-aos-delay="1150"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1150"].aos-animate,body[data-aos-delay="1150"] [data-aos].aos-animate{transition-delay:1.15s}[data-aos][data-aos][data-aos-duration="1200"],body[data-aos-duration="1200"] [data-aos]{transition-duration:1.2s}[data-aos][data-aos][data-aos-delay="1200"],body[data-aos-delay="1200"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1200"].aos-animate,body[data-aos-delay="1200"] [data-aos].aos-animate{transition-delay:1.2s}[data-aos][data-aos][data-aos-duration="1250"],body[data-aos-duration="1250"] [data-aos]{transition-duration:1.25s}[data-aos][data-aos][data-aos-delay="1250"],body[data-aos-delay="1250"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1250"].aos-animate,body[data-aos-delay="1250"] [data-aos].aos-animate{transition-delay:1.25s}[data-aos][data-aos][data-aos-duration="1300"],body[data-aos-duration="1300"] [data-aos]{transition-duration:1.3s}[data-aos][data-aos][data-aos-delay="1300"],body[data-aos-delay="1300"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1300"].aos-animate,body[data-aos-delay="1300"] [data-aos].aos-animate{transition-delay:1.3s}[data-aos][data-aos][data-aos-duration="1350"],body[data-aos-duration="1350"] [data-aos]{transition-duration:1.35s}[data-aos][data-aos][data-aos-delay="1350"],body[data-aos-delay="1350"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1350"].aos-animate,body[data-aos-delay="1350"] [data-aos].aos-animate{transition-delay:1.35s}[data-aos][data-aos][data-aos-duration="1400"],body[data-aos-duration="1400"] [data-aos]{transition-duration:1.4s}[data-aos][data-aos][data-aos-delay="1400"],body[data-aos-delay="1400"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1400"].aos-animate,body[data-aos-delay="1400"] [data-aos].aos-animate{transition-delay:1.4s}[data-aos][data-aos][data-aos-duration="1450"],body[data-aos-duration="1450"] [data-aos]{transition-duration:1.45s}[data-aos][data-aos][data-aos-delay="1450"],body[data-aos-delay="1450"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1450"].aos-animate,body[data-aos-delay="1450"] [data-aos].aos-animate{transition-delay:1.45s}[data-aos][data-aos][data-aos-duration="1500"],body[data-aos-duration="1500"] [data-aos]{transition-duration:1.5s}[data-aos][data-aos][data-aos-delay="1500"],body[data-aos-delay="1500"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1500"].aos-animate,body[data-aos-delay="1500"] [data-aos].aos-animate{transition-delay:1.5s}[data-aos][data-aos][data-aos-duration="1550"],body[data-aos-duration="1550"] [data-aos]{transition-duration:1.55s}[data-aos][data-aos][data-aos-delay="1550"],body[data-aos-delay="1550"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1550"].aos-animate,body[data-aos-delay="1550"] [data-aos].aos-animate{transition-delay:1.55s}[data-aos][data-aos][data-aos-duration="1600"],body[data-aos-duration="1600"] [data-aos]{transition-duration:1.6s}[data-aos][data-aos][data-aos-delay="1600"],body[data-aos-delay="1600"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1600"].aos-animate,body[data-aos-delay="1600"] [data-aos].aos-animate{transition-delay:1.6s}[data-aos][data-aos][data-aos-duration="1650"],body[data-aos-duration="1650"] [data-aos]{transition-duration:1.65s}[data-aos][data-aos][data-aos-delay="1650"],body[data-aos-delay="1650"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1650"].aos-animate,body[data-aos-delay="1650"] [data-aos].aos-animate{transition-delay:1.65s}[data-aos][data-aos][data-aos-duration="1700"],body[data-aos-duration="1700"] [data-aos]{transition-duration:1.7s}[data-aos][data-aos][data-aos-delay="1700"],body[data-aos-delay="1700"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1700"].aos-animate,body[data-aos-delay="1700"] [data-aos].aos-animate{transition-delay:1.7s}[data-aos][data-aos][data-aos-duration="1750"],body[data-aos-duration="1750"] [data-aos]{transition-duration:1.75s}[data-aos][data-aos][data-aos-delay="1750"],body[data-aos-delay="1750"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1750"].aos-animate,body[data-aos-delay="1750"] [data-aos].aos-animate{transition-delay:1.75s}[data-aos][data-aos][data-aos-duration="1800"],body[data-aos-duration="1800"] [data-aos]{transition-duration:1.8s}[data-aos][data-aos][data-aos-delay="1800"],body[data-aos-delay="1800"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1800"].aos-animate,body[data-aos-delay="1800"] [data-aos].aos-animate{transition-delay:1.8s}[data-aos][data-aos][data-aos-duration="1850"],body[data-aos-duration="1850"] [data-aos]{transition-duration:1.85s}[data-aos][data-aos][data-aos-delay="1850"],body[data-aos-delay="1850"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1850"].aos-animate,body[data-aos-delay="1850"] [data-aos].aos-animate{transition-delay:1.85s}[data-aos][data-aos][data-aos-duration="1900"],body[data-aos-duration="1900"] [data-aos]{transition-duration:1.9s}[data-aos][data-aos][data-aos-delay="1900"],body[data-aos-delay="1900"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1900"].aos-animate,body[data-aos-delay="1900"] [data-aos].aos-animate{transition-delay:1.9s}[data-aos][data-aos][data-aos-duration="1950"],body[data-aos-duration="1950"] [data-aos]{transition-duration:1.95s}[data-aos][data-aos][data-aos-delay="1950"],body[data-aos-delay="1950"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1950"].aos-animate,body[data-aos-delay="1950"] [data-aos].aos-animate{transition-delay:1.95s}[data-aos][data-aos][data-aos-duration="2000"],body[data-aos-duration="2000"] [data-aos]{transition-duration:2s}[data-aos][data-aos][data-aos-delay="2000"],body[data-aos-delay="2000"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2000"].aos-animate,body[data-aos-delay="2000"] [data-aos].aos-animate{transition-delay:2s}[data-aos][data-aos][data-aos-duration="2050"],body[data-aos-duration="2050"] [data-aos]{transition-duration:2.05s}[data-aos][data-aos][data-aos-delay="2050"],body[data-aos-delay="2050"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2050"].aos-animate,body[data-aos-delay="2050"] [data-aos].aos-animate{transition-delay:2.05s}[data-aos][data-aos][data-aos-duration="2100"],body[data-aos-duration="2100"] [data-aos]{transition-duration:2.1s}[data-aos][data-aos][data-aos-delay="2100"],body[data-aos-delay="2100"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2100"].aos-animate,body[data-aos-delay="2100"] [data-aos].aos-animate{transition-delay:2.1s}[data-aos][data-aos][data-aos-duration="2150"],body[data-aos-duration="2150"] [data-aos]{transition-duration:2.15s}[data-aos][data-aos][data-aos-delay="2150"],body[data-aos-delay="2150"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2150"].aos-animate,body[data-aos-delay="2150"] [data-aos].aos-animate{transition-delay:2.15s}[data-aos][data-aos][data-aos-duration="2200"],body[data-aos-duration="2200"] [data-aos]{transition-duration:2.2s}[data-aos][data-aos][data-aos-delay="2200"],body[data-aos-delay="2200"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2200"].aos-animate,body[data-aos-delay="2200"] [data-aos].aos-animate{transition-delay:2.2s}[data-aos][data-aos][data-aos-duration="2250"],body[data-aos-duration="2250"] [data-aos]{transition-duration:2.25s}[data-aos][data-aos][data-aos-delay="2250"],body[data-aos-delay="2250"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2250"].aos-animate,body[data-aos-delay="2250"] [data-aos].aos-animate{transition-delay:2.25s}[data-aos][data-aos][data-aos-duration="2300"],body[data-aos-duration="2300"] [data-aos]{transition-duration:2.3s}[data-aos][data-aos][data-aos-delay="2300"],body[data-aos-delay="2300"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2300"].aos-animate,body[data-aos-delay="2300"] [data-aos].aos-animate{transition-delay:2.3s}[data-aos][data-aos][data-aos-duration="2350"],body[data-aos-duration="2350"] [data-aos]{transition-duration:2.35s}[data-aos][data-aos][data-aos-delay="2350"],body[data-aos-delay="2350"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2350"].aos-animate,body[data-aos-delay="2350"] [data-aos].aos-animate{transition-delay:2.35s}[data-aos][data-aos][data-aos-duration="2400"],body[data-aos-duration="2400"] [data-aos]{transition-duration:2.4s}[data-aos][data-aos][data-aos-delay="2400"],body[data-aos-delay="2400"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2400"].aos-animate,body[data-aos-delay="2400"] [data-aos].aos-animate{transition-delay:2.4s}[data-aos][data-aos][data-aos-duration="2450"],body[data-aos-duration="2450"] [data-aos]{transition-duration:2.45s}[data-aos][data-aos][data-aos-delay="2450"],body[data-aos-delay="2450"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2450"].aos-animate,body[data-aos-delay="2450"] [data-aos].aos-animate{transition-delay:2.45s}[data-aos][data-aos][data-aos-duration="2500"],body[data-aos-duration="2500"] [data-aos]{transition-duration:2.5s}[data-aos][data-aos][data-aos-delay="2500"],body[data-aos-delay="2500"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2500"].aos-animate,body[data-aos-delay="2500"] [data-aos].aos-animate{transition-delay:2.5s}[data-aos][data-aos][data-aos-duration="2550"],body[data-aos-duration="2550"] [data-aos]{transition-duration:2.55s}[data-aos][data-aos][data-aos-delay="2550"],body[data-aos-delay="2550"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2550"].aos-animate,body[data-aos-delay="2550"] [data-aos].aos-animate{transition-delay:2.55s}[data-aos][data-aos][data-aos-duration="2600"],body[data-aos-duration="2600"] [data-aos]{transition-duration:2.6s}[data-aos][data-aos][data-aos-delay="2600"],body[data-aos-delay="2600"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2600"].aos-animate,body[data-aos-delay="2600"] [data-aos].aos-animate{transition-delay:2.6s}[data-aos][data-aos][data-aos-duration="2650"],body[data-aos-duration="2650"] [data-aos]{transition-duration:2.65s}[data-aos][data-aos][data-aos-delay="2650"],body[data-aos-delay="2650"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2650"].aos-animate,body[data-aos-delay="2650"] [data-aos].aos-animate{transition-delay:2.65s}[data-aos][data-aos][data-aos-duration="2700"],body[data-aos-duration="2700"] [data-aos]{transition-duration:2.7s}[data-aos][data-aos][data-aos-delay="2700"],body[data-aos-delay="2700"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2700"].aos-animate,body[data-aos-delay="2700"] [data-aos].aos-animate{transition-delay:2.7s}[data-aos][data-aos][data-aos-duration="2750"],body[data-aos-duration="2750"] [data-aos]{transition-duration:2.75s}[data-aos][data-aos][data-aos-delay="2750"],body[data-aos-delay="2750"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2750"].aos-animate,body[data-aos-delay="2750"] [data-aos].aos-animate{transition-delay:2.75s}[data-aos][data-aos][data-aos-duration="2800"],body[data-aos-duration="2800"] [data-aos]{transition-duration:2.8s}[data-aos][data-aos][data-aos-delay="2800"],body[data-aos-delay="2800"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2800"].aos-animate,body[data-aos-delay="2800"] [data-aos].aos-animate{transition-delay:2.8s}[data-aos][data-aos][data-aos-duration="2850"],body[data-aos-duration="2850"] [data-aos]{transition-duration:2.85s}[data-aos][data-aos][data-aos-delay="2850"],body[data-aos-delay="2850"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2850"].aos-animate,body[data-aos-delay="2850"] [data-aos].aos-animate{transition-delay:2.85s}[data-aos][data-aos][data-aos-duration="2900"],body[data-aos-duration="2900"] [data-aos]{transition-duration:2.9s}[data-aos][data-aos][data-aos-delay="2900"],body[data-aos-delay="2900"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2900"].aos-animate,body[data-aos-delay="2900"] [data-aos].aos-animate{transition-delay:2.9s}[data-aos][data-aos][data-aos-duration="2950"],body[data-aos-duration="2950"] [data-aos]{transition-duration:2.95s}[data-aos][data-aos][data-aos-delay="2950"],body[data-aos-delay="2950"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2950"].aos-animate,body[data-aos-delay="2950"] [data-aos].aos-animate{transition-delay:2.95s}[data-aos][data-aos][data-aos-duration="3000"],body[data-aos-duration="3000"] [data-aos]{transition-duration:3s}[data-aos][data-aos][data-aos-delay="3000"],body[data-aos-delay="3000"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="3000"].aos-animate,body[data-aos-delay="3000"] [data-aos].aos-animate{transition-delay:3s}[data-aos][data-aos][data-aos-easing=linear],body[data-aos-easing=linear] [data-aos]{transition-timing-function:cubic-bezier(.25,.25,.75,.75)}[data-aos][data-aos][data-aos-easing=ease],body[data-aos-easing=ease] [data-aos]{transition-timing-function:ease}[data-aos][data-aos][data-aos-easing=ease-in],body[data-aos-easing=ease-in] [data-aos]{transition-timing-function:ease-in}[data-aos][data-aos][data-aos-easing=ease-out],body[data-aos-easing=ease-out] [data-aos]{transition-timing-function:ease-out}[data-aos][data-aos][data-aos-easing=ease-in-out],body[data-aos-easing=ease-in-out] [data-aos]{transition-timing-function:ease-in-out}[data-aos][data-aos][data-aos-easing=ease-in-back],body[data-aos-easing=ease-in-back] [data-aos]{transition-timing-function:cubic-bezier(.6,-.28,.735,.045)}[data-aos][data-aos][data-aos-easing=ease-out-back],body[data-aos-easing=ease-out-back] [data-aos]{transition-timing-function:cubic-bezier(.175,.885,.32,1.275)}[data-aos][data-aos][data-aos-easing=ease-in-out-back],body[data-aos-easing=ease-in-out-back] [data-aos]{transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}[data-aos][data-aos][data-aos-easing=ease-in-sine],body[data-aos-easing=ease-in-sine] [data-aos]{transition-timing-function:cubic-bezier(.47,0,.745,.715)}[data-aos][data-aos][data-aos-easing=ease-out-sine],body[data-aos-easing=ease-out-sine] [data-aos]{transition-timing-function:cubic-bezier(.39,.575,.565,1)}[data-aos][data-aos][data-aos-easing=ease-in-out-sine],body[data-aos-easing=ease-in-out-sine] [data-aos]{transition-timing-function:cubic-bezier(.445,.05,.55,.95)}[data-aos][data-aos][data-aos-easing=ease-in-quad],body[data-aos-easing=ease-in-quad] [data-aos]{transition-timing-function:cubic-bezier(.55,.085,.68,.53)}[data-aos][data-aos][data-aos-easing=ease-out-quad],body[data-aos-easing=ease-out-quad] [data-aos]{transition-timing-function:cubic-bezier(.25,.46,.45,.94)}[data-aos][data-aos][data-aos-easing=ease-in-out-quad],body[data-aos-easing=ease-in-out-quad] [data-aos]{transition-timing-function:cubic-bezier(.455,.03,.515,.955)}[data-aos][data-aos][data-aos-easing=ease-in-cubic],body[data-aos-easing=ease-in-cubic] [data-aos]{transition-timing-function:cubic-bezier(.55,.085,.68,.53)}[data-aos][data-aos][data-aos-easing=ease-out-cubic],body[data-aos-easing=ease-out-cubic] [data-aos]{transition-timing-function:cubic-bezier(.25,.46,.45,.94)}[data-aos][data-aos][data-aos-easing=ease-in-out-cubic],body[data-aos-easing=ease-in-out-cubic] [data-aos]{transition-timing-function:cubic-bezier(.455,.03,.515,.955)}[data-aos][data-aos][data-aos-easing=ease-in-quart],body[data-aos-easing=ease-in-quart] [data-aos]{transition-timing-function:cubic-bezier(.55,.085,.68,.53)}[data-aos][data-aos][data-aos-easing=ease-out-quart],body[data-aos-easing=ease-out-quart] [data-aos]{transition-timing-function:cubic-bezier(.25,.46,.45,.94)}[data-aos][data-aos][data-aos-easing=ease-in-out-quart],body[data-aos-easing=ease-in-out-quart] [data-aos]{transition-timing-function:cubic-bezier(.455,.03,.515,.955)}[data-aos^=fade][data-aos^=fade]{opacity:0;transition-property:opacity,transform}[data-aos^=fade][data-aos^=fade].aos-animate{opacity:1;transform:translateZ(0)}[data-aos=fade-up]{transform:translate3d(0,100px,0)}[data-aos=fade-down]{transform:translate3d(0,-100px,0)}[data-aos=fade-right]{transform:translate3d(-100px,0,0)}[data-aos=fade-left]{transform:translate3d(100px,0,0)}[data-aos=fade-up-right]{transform:translate3d(-100px,100px,0)}[data-aos=fade-up-left]{transform:translate3d(100px,100px,0)}[data-aos=fade-down-right]{transform:translate3d(-100px,-100px,0)}[data-aos=fade-down-left]{transform:translate3d(100px,-100px,0)}[data-aos^=zoom][data-aos^=zoom]{opacity:0;transition-property:opacity,transform}[data-aos^=zoom][data-aos^=zoom].aos-animate{opacity:1;transform:translateZ(0) scale(1)}[data-aos=zoom-in]{transform:scale(.6)}[data-aos=zoom-in-up]{transform:translate3d(0,100px,0) scale(.6)}[data-aos=zoom-in-down]{transform:translate3d(0,-100px,0) scale(.6)}[data-aos=zoom-in-right]{transform:translate3d(-100px,0,0) scale(.6)}[data-aos=zoom-in-left]{transform:translate3d(100px,0,0) scale(.6)}[data-aos=zoom-out]{transform:scale(1.2)}[data-aos=zoom-out-up]{transform:translate3d(0,100px,0) scale(1.2)}[data-aos=zoom-out-down]{transform:translate3d(0,-100px,0) scale(1.2)}[data-aos=zoom-out-right]{transform:translate3d(-100px,0,0) scale(1.2)}[data-aos=zoom-out-left]{transform:translate3d(100px,0,0) scale(1.2)}[data-aos^=slide][data-aos^=slide]{transition-property:transform}[data-aos^=slide][data-aos^=slide].aos-animate{transform:translateZ(0)}[data-aos=slide-up]{transform:translate3d(0,100%,0)}[data-aos=slide-down]{transform:translate3d(0,-100%,0)}[data-aos=slide-right]{transform:translate3d(-100%,0,0)}[data-aos=slide-left]{transform:translate3d(100%,0,0)}[data-aos^=flip][data-aos^=flip]{backface-visibility:hidden;transition-property:transform}[data-aos=flip-left]{transform:perspective(2500px) rotateY(-100deg)}[data-aos=flip-left].aos-animate{transform:perspective(2500px) rotateY(0)}[data-aos=flip-right]{transform:perspective(2500px) rotateY(100deg)}[data-aos=flip-right].aos-animate{transform:perspective(2500px) rotateY(0)}[data-aos=flip-up]{transform:perspective(2500px) rotateX(-100deg)}[data-aos=flip-up].aos-animate{transform:perspective(2500px) rotateX(0)}[data-aos=flip-down]{transform:perspective(2500px) rotateX(100deg)}[data-aos=flip-down].aos-animate{transform:perspective(2500px) rotateX(0)} -------------------------------------------------------------------------------- /dist/aos.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack:///./src/sass/aos.scss"],"names":[],"mappings":"AAAA,qFAAqF,wBAAwB,CAAC,+EAA+E,kBAAkB,CAAC,uGAAuG,qBAAqB,CAAC,uFAAuF,uBAAyB,CAAC,iFAAiF,kBAAkB,CAAC,yGAAyG,oBAAsB,CAAC,uFAAuF,wBAAyB,CAAC,iFAAiF,kBAAkB,CAAC,yGAAyG,qBAAsB,CAAC,uFAAuF,uBAAyB,CAAC,iFAAiF,kBAAkB,CAAC,yGAAyG,oBAAsB,CAAC,uFAAuF,wBAAyB,CAAC,iFAAiF,kBAAkB,CAAC,yGAAyG,qBAAsB,CAAC,uFAAuF,uBAAyB,CAAC,iFAAiF,kBAAkB,CAAC,yGAAyG,oBAAsB,CAAC,uFAAuF,wBAAyB,CAAC,iFAAiF,kBAAkB,CAAC,yGAAyG,qBAAsB,CAAC,uFAAuF,uBAAyB,CAAC,iFAAiF,kBAAkB,CAAC,yGAAyG,oBAAsB,CAAC,uFAAuF,wBAAyB,CAAC,iFAAiF,kBAAkB,CAAC,yGAAyG,qBAAsB,CAAC,uFAAuF,uBAAyB,CAAC,iFAAiF,kBAAkB,CAAC,yGAAyG,oBAAsB,CAAC,uFAAuF,wBAAyB,CAAC,iFAAiF,kBAAkB,CAAC,yGAAyG,qBAAsB,CAAC,uFAAuF,uBAAyB,CAAC,iFAAiF,kBAAkB,CAAC,yGAAyG,oBAAsB,CAAC,uFAAuF,wBAAyB,CAAC,iFAAiF,kBAAkB,CAAC,yGAAyG,qBAAsB,CAAC,uFAAuF,uBAAyB,CAAC,iFAAiF,kBAAkB,CAAC,yGAAyG,oBAAsB,CAAC,uFAAuF,wBAAyB,CAAC,iFAAiF,kBAAkB,CAAC,yGAAyG,qBAAsB,CAAC,uFAAuF,uBAAyB,CAAC,iFAAiF,kBAAkB,CAAC,yGAAyG,oBAAsB,CAAC,uFAAuF,wBAAyB,CAAC,iFAAiF,kBAAkB,CAAC,yGAAyG,qBAAsB,CAAC,uFAAuF,uBAAyB,CAAC,iFAAiF,kBAAkB,CAAC,yGAAyG,oBAAsB,CAAC,uFAAuF,wBAAyB,CAAC,iFAAiF,kBAAkB,CAAC,yGAAyG,qBAAsB,CAAC,yFAAyF,sBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,mBAAuB,CAAC,yFAAyF,yBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,sBAAuB,CAAC,yFAAyF,wBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,qBAAuB,CAAC,yFAAyF,yBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,sBAAuB,CAAC,yFAAyF,wBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,qBAAuB,CAAC,yFAAyF,yBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,sBAAuB,CAAC,yFAAyF,wBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,qBAAuB,CAAC,yFAAyF,yBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,sBAAuB,CAAC,yFAAyF,wBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,qBAAuB,CAAC,yFAAyF,yBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,sBAAuB,CAAC,yFAAyF,wBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,qBAAuB,CAAC,yFAAyF,yBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,sBAAuB,CAAC,yFAAyF,wBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,qBAAuB,CAAC,yFAAyF,yBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,sBAAuB,CAAC,yFAAyF,wBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,qBAAuB,CAAC,yFAAyF,yBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,sBAAuB,CAAC,yFAAyF,wBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,qBAAuB,CAAC,yFAAyF,yBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,sBAAuB,CAAC,yFAAyF,wBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,qBAAuB,CAAC,yFAAyF,yBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,sBAAuB,CAAC,yFAAyF,sBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,mBAAuB,CAAC,yFAAyF,yBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,sBAAuB,CAAC,yFAAyF,wBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,qBAAuB,CAAC,yFAAyF,yBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,sBAAuB,CAAC,yFAAyF,wBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,qBAAuB,CAAC,yFAAyF,yBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,sBAAuB,CAAC,yFAAyF,wBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,qBAAuB,CAAC,yFAAyF,yBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,sBAAuB,CAAC,yFAAyF,wBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,qBAAuB,CAAC,yFAAyF,yBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,sBAAuB,CAAC,yFAAyF,wBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,qBAAuB,CAAC,yFAAyF,yBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,sBAAuB,CAAC,yFAAyF,wBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,qBAAuB,CAAC,yFAAyF,yBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,sBAAuB,CAAC,yFAAyF,wBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,qBAAuB,CAAC,yFAAyF,yBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,sBAAuB,CAAC,yFAAyF,wBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,qBAAuB,CAAC,yFAAyF,yBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,sBAAuB,CAAC,yFAAyF,wBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,qBAAuB,CAAC,yFAAyF,yBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,sBAAuB,CAAC,yFAAyF,sBAA0B,CAAC,mFAAmF,kBAAkB,CAAC,2GAA2G,mBAAuB,CAAC,qFAAyF,wDAA+D,CAAC,iFAAqF,+BAA2D,CAAC,uFAA2F,kCAAsD,CAAC,yFAA6F,mCAAsD,CAAC,+FAAmG,sCAAyD,CAAC,iGAAqG,0DAAiE,CAAC,mGAAuG,4DAAkE,CAAC,yGAA6G,2DAAiE,CAAC,iGAAqG,wDAA8D,CAAC,mGAAuG,wDAA8D,CAAC,yGAA6G,yDAAgE,CAAC,iGAAqG,yDAAgE,CAAC,mGAAuG,wDAA+D,CAAC,yGAA6G,2DAAkE,CAAC,mGAAuG,yDAAgE,CAAC,qGAAyG,wDAA+D,CAAC,2GAA+G,2DAAkE,CAAC,mGAAuG,yDAAgE,CAAC,qGAAyG,wDAA+D,CAAC,2GAA+G,2DAAkE,CAAC,iCAAqC,UAAU,qCAAsC,CAAC,6CAAiD,UAAU,uBAA8B,CAAC,mBAAqB,gCAAkC,CAAC,qBAAuB,iCAAmC,CAAC,sBAAwB,iCAAmC,CAAC,qBAAuB,gCAAkC,CAAC,yBAA2B,qCAAuC,CAAC,wBAA0B,oCAAsC,CAAC,2BAA6B,sCAAwC,CAAC,0BAA4B,qCAAuC,CAAC,iCAAqC,UAAU,qCAAsC,CAAC,6CAAiD,UAAU,gCAAuC,CAAC,mBAAqB,mBAAoB,CAAC,sBAAwB,0CAA6C,CAAC,wBAA0B,2CAA8C,CAAC,yBAA2B,2CAA8C,CAAC,wBAA0B,0CAA6C,CAAC,oBAAsB,oBAAoB,CAAC,uBAAyB,2CAA6C,CAAC,yBAA2B,4CAA8C,CAAC,0BAA4B,4CAA8C,CAAC,yBAA2B,2CAA6C,CAAC,mCAAuC,6BAA6B,CAAC,+CAAmD,uBAA8B,CAAC,oBAAsB,+BAAiC,CAAC,sBAAwB,gCAAkC,CAAC,uBAAyB,gCAAkC,CAAC,sBAAwB,+BAAiC,CAAC,iCAAqC,2BAA2B,6BAA6B,CAAC,qBAAuB,8CAA8C,CAAC,iCAAmC,wCAAwC,CAAC,sBAAwB,6CAA6C,CAAC,kCAAoC,wCAAwC,CAAC,mBAAqB,8CAA8C,CAAC,+BAAiC,wCAAwC,CAAC,qBAAuB,6CAA6C,CAAC,iCAAmC,wCAAwC","file":"aos.css","sourcesContent":["body[data-aos-duration='50'] [data-aos],[data-aos][data-aos][data-aos-duration='50']{transition-duration:50ms}body[data-aos-delay='50'] [data-aos],[data-aos][data-aos][data-aos-delay='50']{transition-delay:0}body[data-aos-delay='50'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='50'].aos-animate{transition-delay:50ms}body[data-aos-duration='100'] [data-aos],[data-aos][data-aos][data-aos-duration='100']{transition-duration:100ms}body[data-aos-delay='100'] [data-aos],[data-aos][data-aos][data-aos-delay='100']{transition-delay:0}body[data-aos-delay='100'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='100'].aos-animate{transition-delay:100ms}body[data-aos-duration='150'] [data-aos],[data-aos][data-aos][data-aos-duration='150']{transition-duration:150ms}body[data-aos-delay='150'] [data-aos],[data-aos][data-aos][data-aos-delay='150']{transition-delay:0}body[data-aos-delay='150'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='150'].aos-animate{transition-delay:150ms}body[data-aos-duration='200'] [data-aos],[data-aos][data-aos][data-aos-duration='200']{transition-duration:200ms}body[data-aos-delay='200'] [data-aos],[data-aos][data-aos][data-aos-delay='200']{transition-delay:0}body[data-aos-delay='200'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='200'].aos-animate{transition-delay:200ms}body[data-aos-duration='250'] [data-aos],[data-aos][data-aos][data-aos-duration='250']{transition-duration:250ms}body[data-aos-delay='250'] [data-aos],[data-aos][data-aos][data-aos-delay='250']{transition-delay:0}body[data-aos-delay='250'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='250'].aos-animate{transition-delay:250ms}body[data-aos-duration='300'] [data-aos],[data-aos][data-aos][data-aos-duration='300']{transition-duration:300ms}body[data-aos-delay='300'] [data-aos],[data-aos][data-aos][data-aos-delay='300']{transition-delay:0}body[data-aos-delay='300'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='300'].aos-animate{transition-delay:300ms}body[data-aos-duration='350'] [data-aos],[data-aos][data-aos][data-aos-duration='350']{transition-duration:350ms}body[data-aos-delay='350'] [data-aos],[data-aos][data-aos][data-aos-delay='350']{transition-delay:0}body[data-aos-delay='350'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='350'].aos-animate{transition-delay:350ms}body[data-aos-duration='400'] [data-aos],[data-aos][data-aos][data-aos-duration='400']{transition-duration:400ms}body[data-aos-delay='400'] [data-aos],[data-aos][data-aos][data-aos-delay='400']{transition-delay:0}body[data-aos-delay='400'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='400'].aos-animate{transition-delay:400ms}body[data-aos-duration='450'] [data-aos],[data-aos][data-aos][data-aos-duration='450']{transition-duration:450ms}body[data-aos-delay='450'] [data-aos],[data-aos][data-aos][data-aos-delay='450']{transition-delay:0}body[data-aos-delay='450'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='450'].aos-animate{transition-delay:450ms}body[data-aos-duration='500'] [data-aos],[data-aos][data-aos][data-aos-duration='500']{transition-duration:500ms}body[data-aos-delay='500'] [data-aos],[data-aos][data-aos][data-aos-delay='500']{transition-delay:0}body[data-aos-delay='500'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='500'].aos-animate{transition-delay:500ms}body[data-aos-duration='550'] [data-aos],[data-aos][data-aos][data-aos-duration='550']{transition-duration:550ms}body[data-aos-delay='550'] [data-aos],[data-aos][data-aos][data-aos-delay='550']{transition-delay:0}body[data-aos-delay='550'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='550'].aos-animate{transition-delay:550ms}body[data-aos-duration='600'] [data-aos],[data-aos][data-aos][data-aos-duration='600']{transition-duration:600ms}body[data-aos-delay='600'] [data-aos],[data-aos][data-aos][data-aos-delay='600']{transition-delay:0}body[data-aos-delay='600'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='600'].aos-animate{transition-delay:600ms}body[data-aos-duration='650'] [data-aos],[data-aos][data-aos][data-aos-duration='650']{transition-duration:650ms}body[data-aos-delay='650'] [data-aos],[data-aos][data-aos][data-aos-delay='650']{transition-delay:0}body[data-aos-delay='650'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='650'].aos-animate{transition-delay:650ms}body[data-aos-duration='700'] [data-aos],[data-aos][data-aos][data-aos-duration='700']{transition-duration:700ms}body[data-aos-delay='700'] [data-aos],[data-aos][data-aos][data-aos-delay='700']{transition-delay:0}body[data-aos-delay='700'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='700'].aos-animate{transition-delay:700ms}body[data-aos-duration='750'] [data-aos],[data-aos][data-aos][data-aos-duration='750']{transition-duration:750ms}body[data-aos-delay='750'] [data-aos],[data-aos][data-aos][data-aos-delay='750']{transition-delay:0}body[data-aos-delay='750'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='750'].aos-animate{transition-delay:750ms}body[data-aos-duration='800'] [data-aos],[data-aos][data-aos][data-aos-duration='800']{transition-duration:800ms}body[data-aos-delay='800'] [data-aos],[data-aos][data-aos][data-aos-delay='800']{transition-delay:0}body[data-aos-delay='800'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='800'].aos-animate{transition-delay:800ms}body[data-aos-duration='850'] [data-aos],[data-aos][data-aos][data-aos-duration='850']{transition-duration:850ms}body[data-aos-delay='850'] [data-aos],[data-aos][data-aos][data-aos-delay='850']{transition-delay:0}body[data-aos-delay='850'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='850'].aos-animate{transition-delay:850ms}body[data-aos-duration='900'] [data-aos],[data-aos][data-aos][data-aos-duration='900']{transition-duration:900ms}body[data-aos-delay='900'] [data-aos],[data-aos][data-aos][data-aos-delay='900']{transition-delay:0}body[data-aos-delay='900'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='900'].aos-animate{transition-delay:900ms}body[data-aos-duration='950'] [data-aos],[data-aos][data-aos][data-aos-duration='950']{transition-duration:950ms}body[data-aos-delay='950'] [data-aos],[data-aos][data-aos][data-aos-delay='950']{transition-delay:0}body[data-aos-delay='950'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='950'].aos-animate{transition-delay:950ms}body[data-aos-duration='1000'] [data-aos],[data-aos][data-aos][data-aos-duration='1000']{transition-duration:1000ms}body[data-aos-delay='1000'] [data-aos],[data-aos][data-aos][data-aos-delay='1000']{transition-delay:0}body[data-aos-delay='1000'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='1000'].aos-animate{transition-delay:1000ms}body[data-aos-duration='1050'] [data-aos],[data-aos][data-aos][data-aos-duration='1050']{transition-duration:1050ms}body[data-aos-delay='1050'] [data-aos],[data-aos][data-aos][data-aos-delay='1050']{transition-delay:0}body[data-aos-delay='1050'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='1050'].aos-animate{transition-delay:1050ms}body[data-aos-duration='1100'] [data-aos],[data-aos][data-aos][data-aos-duration='1100']{transition-duration:1100ms}body[data-aos-delay='1100'] [data-aos],[data-aos][data-aos][data-aos-delay='1100']{transition-delay:0}body[data-aos-delay='1100'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='1100'].aos-animate{transition-delay:1100ms}body[data-aos-duration='1150'] [data-aos],[data-aos][data-aos][data-aos-duration='1150']{transition-duration:1150ms}body[data-aos-delay='1150'] [data-aos],[data-aos][data-aos][data-aos-delay='1150']{transition-delay:0}body[data-aos-delay='1150'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='1150'].aos-animate{transition-delay:1150ms}body[data-aos-duration='1200'] [data-aos],[data-aos][data-aos][data-aos-duration='1200']{transition-duration:1200ms}body[data-aos-delay='1200'] [data-aos],[data-aos][data-aos][data-aos-delay='1200']{transition-delay:0}body[data-aos-delay='1200'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='1200'].aos-animate{transition-delay:1200ms}body[data-aos-duration='1250'] [data-aos],[data-aos][data-aos][data-aos-duration='1250']{transition-duration:1250ms}body[data-aos-delay='1250'] [data-aos],[data-aos][data-aos][data-aos-delay='1250']{transition-delay:0}body[data-aos-delay='1250'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='1250'].aos-animate{transition-delay:1250ms}body[data-aos-duration='1300'] [data-aos],[data-aos][data-aos][data-aos-duration='1300']{transition-duration:1300ms}body[data-aos-delay='1300'] [data-aos],[data-aos][data-aos][data-aos-delay='1300']{transition-delay:0}body[data-aos-delay='1300'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='1300'].aos-animate{transition-delay:1300ms}body[data-aos-duration='1350'] [data-aos],[data-aos][data-aos][data-aos-duration='1350']{transition-duration:1350ms}body[data-aos-delay='1350'] [data-aos],[data-aos][data-aos][data-aos-delay='1350']{transition-delay:0}body[data-aos-delay='1350'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='1350'].aos-animate{transition-delay:1350ms}body[data-aos-duration='1400'] [data-aos],[data-aos][data-aos][data-aos-duration='1400']{transition-duration:1400ms}body[data-aos-delay='1400'] [data-aos],[data-aos][data-aos][data-aos-delay='1400']{transition-delay:0}body[data-aos-delay='1400'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='1400'].aos-animate{transition-delay:1400ms}body[data-aos-duration='1450'] [data-aos],[data-aos][data-aos][data-aos-duration='1450']{transition-duration:1450ms}body[data-aos-delay='1450'] [data-aos],[data-aos][data-aos][data-aos-delay='1450']{transition-delay:0}body[data-aos-delay='1450'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='1450'].aos-animate{transition-delay:1450ms}body[data-aos-duration='1500'] [data-aos],[data-aos][data-aos][data-aos-duration='1500']{transition-duration:1500ms}body[data-aos-delay='1500'] [data-aos],[data-aos][data-aos][data-aos-delay='1500']{transition-delay:0}body[data-aos-delay='1500'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='1500'].aos-animate{transition-delay:1500ms}body[data-aos-duration='1550'] [data-aos],[data-aos][data-aos][data-aos-duration='1550']{transition-duration:1550ms}body[data-aos-delay='1550'] [data-aos],[data-aos][data-aos][data-aos-delay='1550']{transition-delay:0}body[data-aos-delay='1550'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='1550'].aos-animate{transition-delay:1550ms}body[data-aos-duration='1600'] [data-aos],[data-aos][data-aos][data-aos-duration='1600']{transition-duration:1600ms}body[data-aos-delay='1600'] [data-aos],[data-aos][data-aos][data-aos-delay='1600']{transition-delay:0}body[data-aos-delay='1600'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='1600'].aos-animate{transition-delay:1600ms}body[data-aos-duration='1650'] [data-aos],[data-aos][data-aos][data-aos-duration='1650']{transition-duration:1650ms}body[data-aos-delay='1650'] [data-aos],[data-aos][data-aos][data-aos-delay='1650']{transition-delay:0}body[data-aos-delay='1650'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='1650'].aos-animate{transition-delay:1650ms}body[data-aos-duration='1700'] [data-aos],[data-aos][data-aos][data-aos-duration='1700']{transition-duration:1700ms}body[data-aos-delay='1700'] [data-aos],[data-aos][data-aos][data-aos-delay='1700']{transition-delay:0}body[data-aos-delay='1700'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='1700'].aos-animate{transition-delay:1700ms}body[data-aos-duration='1750'] [data-aos],[data-aos][data-aos][data-aos-duration='1750']{transition-duration:1750ms}body[data-aos-delay='1750'] [data-aos],[data-aos][data-aos][data-aos-delay='1750']{transition-delay:0}body[data-aos-delay='1750'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='1750'].aos-animate{transition-delay:1750ms}body[data-aos-duration='1800'] [data-aos],[data-aos][data-aos][data-aos-duration='1800']{transition-duration:1800ms}body[data-aos-delay='1800'] [data-aos],[data-aos][data-aos][data-aos-delay='1800']{transition-delay:0}body[data-aos-delay='1800'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='1800'].aos-animate{transition-delay:1800ms}body[data-aos-duration='1850'] [data-aos],[data-aos][data-aos][data-aos-duration='1850']{transition-duration:1850ms}body[data-aos-delay='1850'] [data-aos],[data-aos][data-aos][data-aos-delay='1850']{transition-delay:0}body[data-aos-delay='1850'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='1850'].aos-animate{transition-delay:1850ms}body[data-aos-duration='1900'] [data-aos],[data-aos][data-aos][data-aos-duration='1900']{transition-duration:1900ms}body[data-aos-delay='1900'] [data-aos],[data-aos][data-aos][data-aos-delay='1900']{transition-delay:0}body[data-aos-delay='1900'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='1900'].aos-animate{transition-delay:1900ms}body[data-aos-duration='1950'] [data-aos],[data-aos][data-aos][data-aos-duration='1950']{transition-duration:1950ms}body[data-aos-delay='1950'] [data-aos],[data-aos][data-aos][data-aos-delay='1950']{transition-delay:0}body[data-aos-delay='1950'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='1950'].aos-animate{transition-delay:1950ms}body[data-aos-duration='2000'] [data-aos],[data-aos][data-aos][data-aos-duration='2000']{transition-duration:2000ms}body[data-aos-delay='2000'] [data-aos],[data-aos][data-aos][data-aos-delay='2000']{transition-delay:0}body[data-aos-delay='2000'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='2000'].aos-animate{transition-delay:2000ms}body[data-aos-duration='2050'] [data-aos],[data-aos][data-aos][data-aos-duration='2050']{transition-duration:2050ms}body[data-aos-delay='2050'] [data-aos],[data-aos][data-aos][data-aos-delay='2050']{transition-delay:0}body[data-aos-delay='2050'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='2050'].aos-animate{transition-delay:2050ms}body[data-aos-duration='2100'] [data-aos],[data-aos][data-aos][data-aos-duration='2100']{transition-duration:2100ms}body[data-aos-delay='2100'] [data-aos],[data-aos][data-aos][data-aos-delay='2100']{transition-delay:0}body[data-aos-delay='2100'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='2100'].aos-animate{transition-delay:2100ms}body[data-aos-duration='2150'] [data-aos],[data-aos][data-aos][data-aos-duration='2150']{transition-duration:2150ms}body[data-aos-delay='2150'] [data-aos],[data-aos][data-aos][data-aos-delay='2150']{transition-delay:0}body[data-aos-delay='2150'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='2150'].aos-animate{transition-delay:2150ms}body[data-aos-duration='2200'] [data-aos],[data-aos][data-aos][data-aos-duration='2200']{transition-duration:2200ms}body[data-aos-delay='2200'] [data-aos],[data-aos][data-aos][data-aos-delay='2200']{transition-delay:0}body[data-aos-delay='2200'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='2200'].aos-animate{transition-delay:2200ms}body[data-aos-duration='2250'] [data-aos],[data-aos][data-aos][data-aos-duration='2250']{transition-duration:2250ms}body[data-aos-delay='2250'] [data-aos],[data-aos][data-aos][data-aos-delay='2250']{transition-delay:0}body[data-aos-delay='2250'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='2250'].aos-animate{transition-delay:2250ms}body[data-aos-duration='2300'] [data-aos],[data-aos][data-aos][data-aos-duration='2300']{transition-duration:2300ms}body[data-aos-delay='2300'] [data-aos],[data-aos][data-aos][data-aos-delay='2300']{transition-delay:0}body[data-aos-delay='2300'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='2300'].aos-animate{transition-delay:2300ms}body[data-aos-duration='2350'] [data-aos],[data-aos][data-aos][data-aos-duration='2350']{transition-duration:2350ms}body[data-aos-delay='2350'] [data-aos],[data-aos][data-aos][data-aos-delay='2350']{transition-delay:0}body[data-aos-delay='2350'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='2350'].aos-animate{transition-delay:2350ms}body[data-aos-duration='2400'] [data-aos],[data-aos][data-aos][data-aos-duration='2400']{transition-duration:2400ms}body[data-aos-delay='2400'] [data-aos],[data-aos][data-aos][data-aos-delay='2400']{transition-delay:0}body[data-aos-delay='2400'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='2400'].aos-animate{transition-delay:2400ms}body[data-aos-duration='2450'] [data-aos],[data-aos][data-aos][data-aos-duration='2450']{transition-duration:2450ms}body[data-aos-delay='2450'] [data-aos],[data-aos][data-aos][data-aos-delay='2450']{transition-delay:0}body[data-aos-delay='2450'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='2450'].aos-animate{transition-delay:2450ms}body[data-aos-duration='2500'] [data-aos],[data-aos][data-aos][data-aos-duration='2500']{transition-duration:2500ms}body[data-aos-delay='2500'] [data-aos],[data-aos][data-aos][data-aos-delay='2500']{transition-delay:0}body[data-aos-delay='2500'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='2500'].aos-animate{transition-delay:2500ms}body[data-aos-duration='2550'] [data-aos],[data-aos][data-aos][data-aos-duration='2550']{transition-duration:2550ms}body[data-aos-delay='2550'] [data-aos],[data-aos][data-aos][data-aos-delay='2550']{transition-delay:0}body[data-aos-delay='2550'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='2550'].aos-animate{transition-delay:2550ms}body[data-aos-duration='2600'] [data-aos],[data-aos][data-aos][data-aos-duration='2600']{transition-duration:2600ms}body[data-aos-delay='2600'] [data-aos],[data-aos][data-aos][data-aos-delay='2600']{transition-delay:0}body[data-aos-delay='2600'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='2600'].aos-animate{transition-delay:2600ms}body[data-aos-duration='2650'] [data-aos],[data-aos][data-aos][data-aos-duration='2650']{transition-duration:2650ms}body[data-aos-delay='2650'] [data-aos],[data-aos][data-aos][data-aos-delay='2650']{transition-delay:0}body[data-aos-delay='2650'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='2650'].aos-animate{transition-delay:2650ms}body[data-aos-duration='2700'] [data-aos],[data-aos][data-aos][data-aos-duration='2700']{transition-duration:2700ms}body[data-aos-delay='2700'] [data-aos],[data-aos][data-aos][data-aos-delay='2700']{transition-delay:0}body[data-aos-delay='2700'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='2700'].aos-animate{transition-delay:2700ms}body[data-aos-duration='2750'] [data-aos],[data-aos][data-aos][data-aos-duration='2750']{transition-duration:2750ms}body[data-aos-delay='2750'] [data-aos],[data-aos][data-aos][data-aos-delay='2750']{transition-delay:0}body[data-aos-delay='2750'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='2750'].aos-animate{transition-delay:2750ms}body[data-aos-duration='2800'] [data-aos],[data-aos][data-aos][data-aos-duration='2800']{transition-duration:2800ms}body[data-aos-delay='2800'] [data-aos],[data-aos][data-aos][data-aos-delay='2800']{transition-delay:0}body[data-aos-delay='2800'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='2800'].aos-animate{transition-delay:2800ms}body[data-aos-duration='2850'] [data-aos],[data-aos][data-aos][data-aos-duration='2850']{transition-duration:2850ms}body[data-aos-delay='2850'] [data-aos],[data-aos][data-aos][data-aos-delay='2850']{transition-delay:0}body[data-aos-delay='2850'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='2850'].aos-animate{transition-delay:2850ms}body[data-aos-duration='2900'] [data-aos],[data-aos][data-aos][data-aos-duration='2900']{transition-duration:2900ms}body[data-aos-delay='2900'] [data-aos],[data-aos][data-aos][data-aos-delay='2900']{transition-delay:0}body[data-aos-delay='2900'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='2900'].aos-animate{transition-delay:2900ms}body[data-aos-duration='2950'] [data-aos],[data-aos][data-aos][data-aos-duration='2950']{transition-duration:2950ms}body[data-aos-delay='2950'] [data-aos],[data-aos][data-aos][data-aos-delay='2950']{transition-delay:0}body[data-aos-delay='2950'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='2950'].aos-animate{transition-delay:2950ms}body[data-aos-duration='3000'] [data-aos],[data-aos][data-aos][data-aos-duration='3000']{transition-duration:3000ms}body[data-aos-delay='3000'] [data-aos],[data-aos][data-aos][data-aos-delay='3000']{transition-delay:0}body[data-aos-delay='3000'] [data-aos].aos-animate,[data-aos][data-aos][data-aos-delay='3000'].aos-animate{transition-delay:3000ms}body[data-aos-easing=\"linear\"] [data-aos],[data-aos][data-aos][data-aos-easing=\"linear\"]{transition-timing-function:cubic-bezier(0.25, 0.25, 0.75, 0.75)}body[data-aos-easing=\"ease\"] [data-aos],[data-aos][data-aos][data-aos-easing=\"ease\"]{transition-timing-function:cubic-bezier(0.25, 0.1, 0.25, 1)}body[data-aos-easing=\"ease-in\"] [data-aos],[data-aos][data-aos][data-aos-easing=\"ease-in\"]{transition-timing-function:cubic-bezier(0.42, 0, 1, 1)}body[data-aos-easing=\"ease-out\"] [data-aos],[data-aos][data-aos][data-aos-easing=\"ease-out\"]{transition-timing-function:cubic-bezier(0, 0, 0.58, 1)}body[data-aos-easing=\"ease-in-out\"] [data-aos],[data-aos][data-aos][data-aos-easing=\"ease-in-out\"]{transition-timing-function:cubic-bezier(0.42, 0, 0.58, 1)}body[data-aos-easing=\"ease-in-back\"] [data-aos],[data-aos][data-aos][data-aos-easing=\"ease-in-back\"]{transition-timing-function:cubic-bezier(0.6, -0.28, 0.735, 0.045)}body[data-aos-easing=\"ease-out-back\"] [data-aos],[data-aos][data-aos][data-aos-easing=\"ease-out-back\"]{transition-timing-function:cubic-bezier(0.175, 0.885, 0.32, 1.275)}body[data-aos-easing=\"ease-in-out-back\"] [data-aos],[data-aos][data-aos][data-aos-easing=\"ease-in-out-back\"]{transition-timing-function:cubic-bezier(0.68, -0.55, 0.265, 1.55)}body[data-aos-easing=\"ease-in-sine\"] [data-aos],[data-aos][data-aos][data-aos-easing=\"ease-in-sine\"]{transition-timing-function:cubic-bezier(0.47, 0, 0.745, 0.715)}body[data-aos-easing=\"ease-out-sine\"] [data-aos],[data-aos][data-aos][data-aos-easing=\"ease-out-sine\"]{transition-timing-function:cubic-bezier(0.39, 0.575, 0.565, 1)}body[data-aos-easing=\"ease-in-out-sine\"] [data-aos],[data-aos][data-aos][data-aos-easing=\"ease-in-out-sine\"]{transition-timing-function:cubic-bezier(0.445, 0.05, 0.55, 0.95)}body[data-aos-easing=\"ease-in-quad\"] [data-aos],[data-aos][data-aos][data-aos-easing=\"ease-in-quad\"]{transition-timing-function:cubic-bezier(0.55, 0.085, 0.68, 0.53)}body[data-aos-easing=\"ease-out-quad\"] [data-aos],[data-aos][data-aos][data-aos-easing=\"ease-out-quad\"]{transition-timing-function:cubic-bezier(0.25, 0.46, 0.45, 0.94)}body[data-aos-easing=\"ease-in-out-quad\"] [data-aos],[data-aos][data-aos][data-aos-easing=\"ease-in-out-quad\"]{transition-timing-function:cubic-bezier(0.455, 0.03, 0.515, 0.955)}body[data-aos-easing=\"ease-in-cubic\"] [data-aos],[data-aos][data-aos][data-aos-easing=\"ease-in-cubic\"]{transition-timing-function:cubic-bezier(0.55, 0.085, 0.68, 0.53)}body[data-aos-easing=\"ease-out-cubic\"] [data-aos],[data-aos][data-aos][data-aos-easing=\"ease-out-cubic\"]{transition-timing-function:cubic-bezier(0.25, 0.46, 0.45, 0.94)}body[data-aos-easing=\"ease-in-out-cubic\"] [data-aos],[data-aos][data-aos][data-aos-easing=\"ease-in-out-cubic\"]{transition-timing-function:cubic-bezier(0.455, 0.03, 0.515, 0.955)}body[data-aos-easing=\"ease-in-quart\"] [data-aos],[data-aos][data-aos][data-aos-easing=\"ease-in-quart\"]{transition-timing-function:cubic-bezier(0.55, 0.085, 0.68, 0.53)}body[data-aos-easing=\"ease-out-quart\"] [data-aos],[data-aos][data-aos][data-aos-easing=\"ease-out-quart\"]{transition-timing-function:cubic-bezier(0.25, 0.46, 0.45, 0.94)}body[data-aos-easing=\"ease-in-out-quart\"] [data-aos],[data-aos][data-aos][data-aos-easing=\"ease-in-out-quart\"]{transition-timing-function:cubic-bezier(0.455, 0.03, 0.515, 0.955)}[data-aos^='fade'][data-aos^='fade']{opacity:0;transition-property:opacity, transform}[data-aos^='fade'][data-aos^='fade'].aos-animate{opacity:1;transform:translate3d(0, 0, 0)}[data-aos='fade-up']{transform:translate3d(0, 100px, 0)}[data-aos='fade-down']{transform:translate3d(0, -100px, 0)}[data-aos='fade-right']{transform:translate3d(-100px, 0, 0)}[data-aos='fade-left']{transform:translate3d(100px, 0, 0)}[data-aos='fade-up-right']{transform:translate3d(-100px, 100px, 0)}[data-aos='fade-up-left']{transform:translate3d(100px, 100px, 0)}[data-aos='fade-down-right']{transform:translate3d(-100px, -100px, 0)}[data-aos='fade-down-left']{transform:translate3d(100px, -100px, 0)}[data-aos^='zoom'][data-aos^='zoom']{opacity:0;transition-property:opacity, transform}[data-aos^='zoom'][data-aos^='zoom'].aos-animate{opacity:1;transform:translate3d(0, 0, 0) scale(1)}[data-aos='zoom-in']{transform:scale(0.6)}[data-aos='zoom-in-up']{transform:translate3d(0, 100px, 0) scale(0.6)}[data-aos='zoom-in-down']{transform:translate3d(0, -100px, 0) scale(0.6)}[data-aos='zoom-in-right']{transform:translate3d(-100px, 0, 0) scale(0.6)}[data-aos='zoom-in-left']{transform:translate3d(100px, 0, 0) scale(0.6)}[data-aos='zoom-out']{transform:scale(1.2)}[data-aos='zoom-out-up']{transform:translate3d(0, 100px, 0) scale(1.2)}[data-aos='zoom-out-down']{transform:translate3d(0, -100px, 0) scale(1.2)}[data-aos='zoom-out-right']{transform:translate3d(-100px, 0, 0) scale(1.2)}[data-aos='zoom-out-left']{transform:translate3d(100px, 0, 0) scale(1.2)}[data-aos^='slide'][data-aos^='slide']{transition-property:transform}[data-aos^='slide'][data-aos^='slide'].aos-animate{transform:translate3d(0, 0, 0)}[data-aos='slide-up']{transform:translate3d(0, 100%, 0)}[data-aos='slide-down']{transform:translate3d(0, -100%, 0)}[data-aos='slide-right']{transform:translate3d(-100%, 0, 0)}[data-aos='slide-left']{transform:translate3d(100%, 0, 0)}[data-aos^='flip'][data-aos^='flip']{backface-visibility:hidden;transition-property:transform}[data-aos='flip-left']{transform:perspective(2500px) rotateY(-100deg)}[data-aos='flip-left'].aos-animate{transform:perspective(2500px) rotateY(0)}[data-aos='flip-right']{transform:perspective(2500px) rotateY(100deg)}[data-aos='flip-right'].aos-animate{transform:perspective(2500px) rotateY(0)}[data-aos='flip-up']{transform:perspective(2500px) rotateX(-100deg)}[data-aos='flip-up'].aos-animate{transform:perspective(2500px) rotateX(0)}[data-aos='flip-down']{transform:perspective(2500px) rotateX(100deg)}[data-aos='flip-down'].aos-animate{transform:perspective(2500px) rotateX(0)}\n\n\n\n// WEBPACK FOOTER //\n// ./src/sass/aos.scss"],"sourceRoot":""} --------------------------------------------------------------------------------