Repository: h5bp/Effeckt.css Branch: master Commit: d4bb4ac8ca35 Files: 74 Total size: 578.5 KB Directory structure: gitextract_4zhv3wpx/ ├── .editorconfig ├── .gitignore ├── Gruntfile.js ├── License.md ├── bower.json ├── css/ │ ├── demo/ │ │ └── demo.css │ ├── effeckt.css │ └── modules/ │ ├── buttons.css │ ├── captions.css │ ├── form-elements.css │ ├── lazy-loading.css │ ├── list-items.css │ ├── list-scroll.css │ ├── modal.css │ ├── modals.css │ ├── off-screen-nav.css │ ├── page-transitions.css │ ├── positional-modals.css │ ├── tabs.css │ └── tooltips.css ├── js/ │ ├── core.js │ ├── demo/ │ │ ├── demo.js │ │ └── lazy-loading.js │ └── modules/ │ ├── _template.js │ ├── buttons.js │ ├── captions.js │ ├── list-items.js │ ├── list-scroll.js │ ├── modal.js │ ├── off-screen-nav.js │ ├── page-transitions.js │ ├── positional-modals.js │ └── tabs.js ├── package.json ├── readme.md ├── scss/ │ ├── _global.scss │ ├── _variables.scss │ ├── demo/ │ │ └── demo.scss │ ├── effeckt.scss │ ├── effeckts/ │ │ ├── captions/ │ │ │ └── _mixins.scss │ │ └── modals/ │ │ ├── _3ds.scss │ │ ├── _misc.scss │ │ ├── _scale.scss │ │ └── _slide.scss │ └── modules/ │ ├── buttons.scss │ ├── captions.scss │ ├── form-elements.scss │ ├── lazy-loading.scss │ ├── list-items.scss │ ├── list-scroll.scss │ ├── modal.scss │ ├── off-screen-nav.scss │ ├── page-transitions.scss │ ├── positional-modals.scss │ ├── tabs.scss │ └── tooltips.scss └── src/ └── templates/ ├── layouts/ │ └── layout.hbs ├── pages/ │ ├── buttons.hbs │ ├── captions.hbs │ ├── form-elements.hbs │ ├── index.hbs │ ├── lazy-loading.hbs │ ├── list-items.hbs │ ├── list-scroll.hbs │ ├── modals.hbs │ ├── off-screen-navs.hbs │ ├── page-transitions.hbs │ ├── positional-modals.hbs │ ├── tabs.hbs │ └── tooltips.hbs └── parts/ ├── modal.hbs ├── off-screen-nav-cover.hbs ├── off-screen-nav.hbs └── page-transition.hbs ================================================ FILE CONTENTS ================================================ ================================================ FILE: .editorconfig ================================================ # EditorConfig is awesome: http://EditorConfig.org # editorconfig.org root = true [*] indent_style = space indent_size = 2 end_of_line = lf charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true [*.md] trim_trailing_whitespace = false ================================================ FILE: .gitignore ================================================ .grunt /.sass-cache/ dist node_modules/ /tmp/ .DS_Store npm-debug.log bower_components/ ================================================ FILE: Gruntfile.js ================================================ module.exports = function(grunt) { // Load NPM Tasks // https://github.com/shootaroo/jit-grunt require('jit-grunt')(grunt); grunt.initConfig({ pkg: grunt.file.readJSON( 'package.json' ), // Copied from Bootstrap banner: '/*!\n' + ' * Effeckt v<%= pkg.version %>\n' + ' */\n', jqueryCheck: 'if (typeof jQuery === \'undefined\') { throw new Error(\'Effeckt\\\'s JavaScript requires jQuery\') }\n\n', // == Grunt Dev Update // https://npmjs.org/package/grunt-dev-update // http://pgilad.github.io/grunt-dev-update devUpdate: { main: { options: { reportUpdated: false, // Report updated dependencies: 'false' | 'true' updateType : "force" // 'force'|'report'|'prompt' } } }, watch: { scss: { files: ['scss/**/*.scss'], tasks: 'scss' }, html: { files: ['src/**/*.hbs'], tasks: 'html' }, js: { files: ['js/**/*.js'], tasks: 'js' }, livereload: { options: { livereload: true }, files: [ 'dist/**/*.html', 'dist/assets/css/{,*/}*.css', 'dist/assets/js/{,*/}*.js' ] } }, sass: { build: { files : [ { src : ['**/*.scss', '!**/_*.scss'], cwd : 'scss', dest : 'css', ext : '.css', expand : true } ], options : { style : 'expanded' } } }, // https://github.com/nDmitry/grunt-autoprefixer autoprefixer: { build: { options: { browsers: ['last 2 versions', '> 1%'] }, files: [ { src : ['**/*.css'], cwd : 'css', dest : 'css', expand : true } ] } }, connect: { server: { options: { port: 9001, protocol: 'http', hostname: 'localhost', base: './dist/', // '.' operates from the root of your Gruntfile, otherwise -> 'Users/user-name/www-directory/website-directory' keepalive: false, // set to false to work side by side w/watch task. livereload: true, open: true } } }, assemble: { options: { flatten: true, layout: 'layout.hbs', layoutdir: 'src/templates/layouts', assets: 'dist/assets', partials: ['src/templates/pages/*.hbs', 'src/templates/parts/*.hbs'] }, demo: { options: { data: ['src/data/*.{json,yml}'] }, files: { 'dist/': ['src/templates/pages/*.hbs'] } } }, copy: { demo: { files: [ { expand: true, cwd: './css', src: ['./**/*.*'], dest: 'dist/assets/css' }, { expand: true, cwd: './js', src: ['./**/*.*'], dest: 'dist/assets/js' }, { expand: true, flatten: true, cwd: './bower_components/jQuery', src:['./dist/*.min.*'], dest: 'dist/assets/js/libs/' }, { expand: true, flatten: true, cwd: './bower_components/modernizr', src:['./modernizr.js'], dest: 'dist/assets/js/libs/' } ] }, css: { files: [ { expand: true, cwd: './css', src: ['./**/*.*'], dest: 'dist/assets/css' } ] }, js: { files: [ { expand: true, flatten: true, cwd: './bower_components/jQuery', src: ['./dist/*.min.*'], dest: 'dist/assets/js/libs/' }, { expand: true, flatten: true, cwd: './bower_components/modernizr', src: ['./modernizr.js'], dest: 'dist/assets/js/libs/' }, { expand: true, cwd: './js', src: ['./**/*.*'], dest: 'dist/assets/js' } ] } }, concat: { options: { banner: '<%= banner %>\n<%= jqueryCheck %>', stripBanners: false }, bootstrap: { src: [ 'js/modules/core.js', 'js/modules/buttons.js', 'js/modules/captions.js', 'js/modules/list-items.js', 'js/modules/list-scroll.js', 'js/modules/modals.js', 'js/modules/off-screen-nav.js', 'js/modules/page-transition.js', 'js/modules/positional-modals.js', 'js/modules/tabs.js' ], dest: 'dist/assets/js/<%= pkg.name %>.js' } }, 'gh-pages': { options: { base: 'dist' }, forked: { options: { base: 'dist' }, src: ['**/*'] }, remote: { options: { base: 'dist', repo: 'https://github.com/h5bp/Effeckt.css' }, src: ['**/*'] } } }); grunt.registerTask('update', ['devUpdate']); grunt.registerTask('default', ['sass', 'autoprefixer', 'assemble', 'copy']); grunt.registerTask('scss', ['sass', 'autoprefixer', 'copy:css']); grunt.registerTask('html', ['assemble']); grunt.registerTask('js', ['copy:js', 'concat']); grunt.registerTask('dev', ['connect', 'watch']); grunt.registerTask('demo', ['copy:demo', 'assemble:demo']); grunt.registerTask('deploy', ['gh-pages:remote']); }; ================================================ FILE: License.md ================================================ The MIT License (MIT) Copyright (c) 2013-2015 Contributors to https://github.com/h5bp/Effeckt.css/ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: bower.json ================================================ { "name": "Effeckt.css", "version": "0.5.0", "homepage": "https://github.com/h5bp/Effeckt.css", "authors": [ "h5bp", "github contributors" ], "description": "A Performant Transitions and Animations Library", "moduleType": [ "globals" ], "keywords": [ "effeckt", "css", "animations", "css3", "jquery" ], "license": "MIT", "ignore": [ "**/.*", "node_modules", "bower_components", "test", "tests" ], "dependencies": { "jQuery": "~2.1.4", "modernizr": "~2.8.3" } } ================================================ FILE: css/demo/demo.css ================================================ * { margin: 0; padding: 0; box-sizing: border-box; } .warning { position: fixed; top: 0; left: 0; width: 100%; padding: 0.5rem; background: linear-gradient(#fff94d, #ddd610); opacity: 0.95; text-align: center; z-index: 1000; } .no-transitions, .no-transitions * { transition: none !important; } .group:after { content: ""; display: block; clear: both; } :root { font-size: large; line-height: 1.4; } @media (max-width: 500px) { :root { font-size: small; } } html, body { height: 100%; overflow: hidden; } body { background: #eee; font-family: Sans-serif; overflow: hidden; } @media (max-width: 500px) { } .page-wrap { float: right; width: 100%; } .effeckt { padding: 2rem; background: white; margin: 0 0 1rem 0; } @media (max-width: 500px) { .effeckt { padding: 1.5rem; } } .effeckt header { margin: 0 0 1rem 0; border-bottom: 2px solid #eee; position: relative; } .effeckt header .source { position: absolute; right: 0; bottom: 2px; } @media (max-width: 500px) { .effeckt header .source { position: relative; display: block; margin: 0.2rem 0; } } .effeckt header:nth-of-type(n+2) { margin-top: 2rem; } .button-group { line-height: 2; } a { text-decoration: none; color: #ccc; } a:hover, a:active { color: black; } subhead { display: block; font-size: 1.4rem; margin: 0 0 2rem 0; } .mobile-break { display: none; } @media (max-width: 500px) { .mobile-break { display: block; } } h1 { margin: 0 0 1rem 0; } @media (max-width: 500px) { h1 { line-height: 0.8; } } h1 span { font-size: 1.5rem; position: relative; display: inline-block; opacity: 0; width: 50px; height: 50px; line-height: 50px; background: #ccc; color: white; text-align: center; text-transform: uppercase; } @media (max-width: 500px) { h1 span { font-size: 0.8rem; width: 28px; height: 28px; line-height: 28px; } } h2 { margin: 0; } h3 { margin: 0; } h4 { margin: 0 0 0.5rem 0; } p, ul, ol, blockquote, pre { margin: 0 0 1rem 0; } button { padding: 0.25rem; } hr { height: 0; border: 0; border-top: 1px solid #ccc; } h1 span:nth-of-type(1) { -webkit-animation: logo-from-horz 0.5s ease forwards; animation: logo-from-horz 0.5s ease forwards; -webkit-transform: translateX(-50px); -ms-transform: translateX(-50px); transform: translateX(-50px); background: #666; } h1 span:nth-of-type(2) { -webkit-animation: logo-from-vert 0.5s 0.1s ease forwards; animation: logo-from-vert 0.5s 0.1s ease forwards; -webkit-transform: translateY(-50px); -ms-transform: translateY(-50px); transform: translateY(-50px); background: #444; } h1 span:nth-of-type(3) { -webkit-animation: logo-from-vert 0.5s 0.2s ease forwards; animation: logo-from-vert 0.5s 0.2s ease forwards; -webkit-transform: translateX(50px); -ms-transform: translateX(50px); transform: translateX(50px); background: #666; } h1 span:nth-of-type(4) { -webkit-animation: logo-from-horz 0.3s 0.3s ease forwards; animation: logo-from-horz 0.3s 0.3s ease forwards; -webkit-transform: translateX(50px); -ms-transform: translateX(50px); transform: translateX(50px); background: #444; } h1 span:nth-of-type(5) { -webkit-animation: logo-from-horz 0.3s 0.4s ease forwards; animation: logo-from-horz 0.3s 0.4s ease forwards; -webkit-transform: translateX(-50px); -ms-transform: translateX(-50px); transform: translateX(-50px); background: #666; } h1 span:nth-of-type(6) { -webkit-animation: logo-from-horz 0.3s 0.5s ease forwards; animation: logo-from-horz 0.3s 0.5s ease forwards; -webkit-transform: translateX(50px); -ms-transform: translateX(50px); transform: translateX(50px); background: #444; } h1 span:nth-of-type(7) { -webkit-animation: logo-from-vert 0.3s 0.6s ease forwards; animation: logo-from-vert 0.3s 0.6s ease forwards; -webkit-transform: translateY(-50px); -ms-transform: translateY(-50px); transform: translateY(-50px); background: #666; } h1 span:nth-of-type(8) { -webkit-animation: logo-from-horz 0.2s 1.1s ease forwards; animation: logo-from-horz 0.2s 1.1s ease forwards; -webkit-transform: translateX(1000px); -ms-transform: translateX(1000px); transform: translateX(1000px); background: none; color: black; } h1 span:nth-of-type(9) { -webkit-animation: logo-from-horz 0.2s 1.1s ease forwards; animation: logo-from-horz 0.2s 1.1s ease forwards; -webkit-transform: translateX(1000px); -ms-transform: translateX(1000px); transform: translateX(1000px); } h1 span:nth-of-type(10) { -webkit-animation: logo-from-horz 0.2s 1.1s ease forwards; animation: logo-from-horz 0.2s 1.1s ease forwards; -webkit-transform: translateX(1000px); -ms-transform: translateX(1000px); transform: translateX(1000px); } h1 span:nth-of-type(11) { -webkit-animation: logo-from-horz 0.2s 1.1s ease forwards; animation: logo-from-horz 0.2s 1.1s ease forwards; -webkit-transform: translateX(1000px); -ms-transform: translateX(1000px); transform: translateX(1000px); } @-webkit-keyframes logo-from-horz { 100% { -webkit-transform: translateX(0); transform: translateX(0); opacity: 1; } } @keyframes logo-from-horz { 100% { -webkit-transform: translateX(0); transform: translateX(0); opacity: 1; } } @-webkit-keyframes logo-from-vert { 100% { -webkit-transform: translateY(0); transform: translateY(0); opacity: 1; } } @keyframes logo-from-vert { 100% { -webkit-transform: translateY(0); transform: translateY(0); opacity: 1; } } .contributors { background: #222; color: #eee; } .contributors header { border-bottom-color: #666; } .contributors ol { margin-left: 35px; } .contributors hr { margin: 15px 0; } .fluid-video { height: 0; padding-top: 62.5%; position: relative; } .fluid-video iframe { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } .button-demo-wrap { width: 35%; float: left; } .button-demo-wrap:nth-child(2n) { clear: both; } @media (max-width: 500px) { .button-demo-wrap { width: 100%; float: none; } } .effeckt-list-wrap { width: 50%; float: left; margin: 0 0 2rem 0; } .effeckt-list-wrap:nth-child(even) { clear: both; padding-right: 20px; } .effeckt-demo-list-scroll > ul { width: 32%; float: left; margin-right: 2%; margin-bottom: 2%; } .effeckt-demo-list-scroll > ul:nth-of-type(3n) { margin-right: 0; } @media (max-width: 500px) { .effeckt-demo-list-scroll > ul { width: 100%; float: none; height: 250px; margin: 0 0 1rem 0; } } .effeckt-toggle-demo { min-height: 220px; } [data-toggle-trigger] { margin-bottom: 20px; } .effeckt-modal { background: white; } .effeckt-modal h3 { padding: 1rem; color: white; background: #444; } .effeckt-modal-content { padding: 1rem; } .effeckt-modal-overlay { z-index: 1000; background: rgba(0, 0, 0, 0.5); } .effeckt-positional-modal-wrap .effeckt-modal { padding: 10px; background: #ccc; } .effeckt-positional-modal-wrap .effeckt-modal-content { background: white; } .effeckt-button { background: #444; color: white; border: 0; padding: 0.8rem 1rem; font-family: inherit; font-size: 1.3em; margin: 0 0.25rem 0.6rem 0; white-space: nowrap; cursor: pointer; outline: none; -webkit-appearance: none; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } .effeckt-button[data-effeckt-type="3d-rotate-success"]:after { background: #7aca7c; color: #358337; } .effeckt-button[data-effeckt-type="3d-rotate-error"]:before { background: #e96a6a; color: #a33a3a; } .effeckt-button[data-loading] { cursor: default; } .effeckt-page-transition { position: fixed; z-index: 1000; top: 0; left: 0; width: 100%; height: 100%; visibility: hidden; overflow: hidden; background: #555; } .effeckt-page-transition-content { position: relative; top: 50%; left: 50%; width: 200px; margin: -100px 0 0 -100px; color: white; } .effeckt-off-screen-nav { position: fixed; z-index: 1000; top: 0; left: 0; bottom: 0; overflow-y: auto; background: #333; visibility: hidden; width: 12rem; } .effeckt-off-screen-nav ul { list-style: none; } .effeckt-off-screen-nav li:first-child a { border-top: 0; } .effeckt-off-screen-nav li:last-child a { border-bottom: 0; } .effeckt-off-screen-nav li a { display: block; padding: 0.3rem 1rem; color: white; border-bottom: 1px solid #444; } .effeckt-off-screen-nav li a:hover, .effeckt-off-screen-nav li a:focus { background: #444; } .effeckt-off-screen-nav li a:active { background: #222; } .effeckt-off-screen-nav header { position: relative; } .effeckt-off-screen-nav h4 { color: white; background: #333; border-bottom: 1px solid #eee; padding: 1rem 0.5rem 0.2rem 0; margin: 0 1rem 1rem; text-transform: uppercase; font-size: 0.65rem; letter-spacing: 0.1rem; position: relative; } .effeckt-off-screen-nav-close { position: absolute; right: 1rem; top: 0.65rem; font-size: 100%; z-index: 300; } .effeckt-off-screen-nav-close:hover, .effeckt-off-screen-nav-close:focus { color: red; } .effeckt-off-screen-nav-rotate.effeckt-off-screen-nav-show ~ .page-wrap .off-screen-nav-cover { background: linear-gradient(left, rgba(238, 238, 238, 0), rgba(238, 238, 238, 0.9)); } .effeckt-off-screen-nav-top-card-deck, .effeckt-off-screen-nav-bottom-card-deck { cursor: pointer; background: transparent; } .effeckt-off-screen-nav-top-card-deck h4, .effeckt-off-screen-nav-bottom-card-deck h4 { margin: 0; padding: 1rem; border-bottom: 0; } .effeckt-off-screen-nav-top-card-deck li, .effeckt-off-screen-nav-bottom-card-deck li { background-color: #333; border-bottom: 1px solid #eee; } .effeckt-off-screen-nav-top-card-deck a, .effeckt-off-screen-nav-bottom-card-deck a { height: 100%; } .effeckt-off-screen-nav-top-card-deck .effeckt-off-screen-nav-close, .effeckt-off-screen-nav-bottom-card-deck .effeckt-off-screen-nav-close { right: 1rem; } .effeckt-off-screen-nav-bottom-card-deck li { border-top: 1px solid #eee; border-bottom: none; } .effeckt-off-screen-nav-left-bounce, .effeckt-off-screen-nav-left-bounce-out, .effeckt-off-screen-nav-right-bounce, .effeckt-off-screen-nav-right-bounce-out { box-sizing: content-box; } .effeckt-caption { float: left; overflow: hidden; width: 48%; margin: 0 4% 1rem 0; } .effeckt-caption:nth-child(2n) { margin-right: 0; } .effeckt-caption img { width: 100%; display: block; } .effeckt-caption figcaption { background: rgba(0, 0, 0, 0.8); color: white; padding: 1rem; } .effeckt-caption figcaption h3 { font-size: 1.2rem; } .effeckt-caption figcaption p { margin: 0; } .effeckt-list { list-style: none; } .effeckt-list li { background: #e6e6e6; padding: 0 0.5rem; overflow: hidden; margin-bottom: 2px; line-height: 2; } .effeckt-list li.new-item { background: #ccc; } .effeckt-list-scroll { width: 230px; height: 480px; margin: 0; padding: 0; overflow-x: hidden; overflow-y: scroll; list-style: none; } .effeckt-list-scroll > li { padding: 0.5rem; background: #eee; color: #252525; font-size: 18px; } .effeckt-list-scroll > li:nth-child(odd) { background: #e6e6e6; } .contributors-list { list-style: none; overflow: hidden; } .contributors-list li { float: left; margin: 0 10px 10px 0; } .contributors-list img { width: 40px; height: 40px; } [data-effeckt-page="page-1"] { background-color: #EEEEEE; } [data-effeckt-page="page-2"] { color: #203513; background-color: #99CF78; } [data-effeckt-page="page-3"] { color: #282828; background-color: #FECD3D; } [data-effeckt-page="page-4"] { color: #FFFEFE; background-color: #CD4F5B; } [data-effeckt-page="page-5"] { color: #194772; background-color: #62A1DC; } ul.effeckt-tabs { margin: 0; padding: 0; list-style: none; } ul.effeckt-tabs li { float: left; margin-right: 2px; } ul.effeckt-tabs li a { display: block; padding: 10px 15px; color: #383838; background-color: #EEEEEE; } ul.effeckt-tabs li a.active, ul.effeckt-tabs li a:hover { background-color: #E8E8E8; } .effeckt-tabs-container { padding: 10px; margin-bottom: 20px; border: 1px solid #DDD; } .effeckt-tabs-container .effeckt-tab-content { top: 10px; } .effeckt-lazy-loading-options { margin: 0 0 15px; } .effeckt-lazy-loading-options label { margin: 0 5px; } .effeckt-lazy-loading { -webkit-column-count: 3; -moz-column-count: 3; column-count: 3; -webkit-column-gap: 0; -moz-column-gap: 0; column-gap: 0; } .effeckt-lazy-loading li { display: block; list-style-type: none; padding: 0 5px 5px 0; } .effeckt-lazy-loading a { display: inline-block; background: #DDD; border: 1px solid #ccc; width: 100%; height: 250px; } .effeckt-lazy-loading li:nth-child(1) a, .effeckt-lazy-loading li:nth-child(12n+12) a { height: 500px; } .effeckt-lazy-loading li:nth-child(3n+3) a { height: 350px; } .effeckt-lazy-loading li:nth-child(5n+5) a { height: 200px; } ================================================ FILE: css/effeckt.css ================================================ .effeckt-perspective { -webkit-perspective: 600px; perspective: 600px; } .effeckt-show { visibility: visible; } .effeckt-button { position: relative; } .effeckt-button .spinner { position: absolute; width: 32px; height: 32px; top: 50%; margin-top: -16px; margin-left: -16px; opacity: 0; background-image: url(data:image/gif;base64,R0lGODlhIAAgAPMAAJmZmf///6+vr8nJybW1tcDAwOjo6Nvb26ioqKOjo7Ozs/Ly8vz8/AAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAIAAgAAAE5xDISWlhperN52JLhSSdRgwVo1ICQZRUsiwHpTJT4iowNS8vyW2icCF6k8HMMBkCEDskxTBDAZwuAkkqIfxIQyhBQBFvAQSDITM5VDW6XNE4KagNh6Bgwe60smQUB3d4Rz1ZBApnFASDd0hihh12BkE9kjAJVlycXIg7CQIFA6SlnJ87paqbSKiKoqusnbMdmDC2tXQlkUhziYtyWTxIfy6BE8WJt5YJvpJivxNaGmLHT0VnOgSYf0dZXS7APdpB309RnHOG5gDqXGLDaC457D1zZ/V/nmOM82XiHRLYKhKP1oZmADdEAAAh+QQJCgAAACwAAAAAIAAgAAAE6hDISWlZpOrNp1lGNRSdRpDUolIGw5RUYhhHukqFu8DsrEyqnWThGvAmhVlteBvojpTDDBUEIFwMFBRAmBkSgOrBFZogCASwBDEY/CZSg7GSE0gSCjQBMVG023xWBhklAnoEdhQEfyNqMIcKjhRsjEdnezB+A4k8gTwJhFuiW4dokXiloUepBAp5qaKpp6+Ho7aWW54wl7obvEe0kRuoplCGepwSx2jJvqHEmGt6whJpGpfJCHmOoNHKaHx61WiSR92E4lbFoq+B6QDtuetcaBPnW6+O7wDHpIiK9SaVK5GgV543tzjgGcghAgAh+QQJCgAAACwAAAAAIAAgAAAE7hDISSkxpOrN5zFHNWRdhSiVoVLHspRUMoyUakyEe8PTPCATW9A14E0UvuAKMNAZKYUZCiBMuBakSQKG8G2FzUWox2AUtAQFcBKlVQoLgQReZhQlCIJesQXI5B0CBnUMOxMCenoCfTCEWBsJColTMANldx15BGs8B5wlCZ9Po6OJkwmRpnqkqnuSrayqfKmqpLajoiW5HJq7FL1Gr2mMMcKUMIiJgIemy7xZtJsTmsM4xHiKv5KMCXqfyUCJEonXPN2rAOIAmsfB3uPoAK++G+w48edZPK+M6hLJpQg484enXIdQFSS1u6UhksENEQAAIfkECQoAAAAsAAAAACAAIAAABOcQyEmpGKLqzWcZRVUQnZYg1aBSh2GUVEIQ2aQOE+G+cD4ntpWkZQj1JIiZIogDFFyHI0UxQwFugMSOFIPJftfVAEoZLBbcLEFhlQiqGp1Vd140AUklUN3eCA51C1EWMzMCezCBBmkxVIVHBWd3HHl9JQOIJSdSnJ0TDKChCwUJjoWMPaGqDKannasMo6WnM562R5YluZRwur0wpgqZE7NKUm+FNRPIhjBJxKZteWuIBMN4zRMIVIhffcgojwCF117i4nlLnY5ztRLsnOk+aV+oJY7V7m76PdkS4trKcdg0Zc0tTcKkRAAAIfkECQoAAAAsAAAAACAAIAAABO4QyEkpKqjqzScpRaVkXZWQEximw1BSCUEIlDohrft6cpKCk5xid5MNJTaAIkekKGQkWyKHkvhKsR7ARmitkAYDYRIbUQRQjWBwJRzChi9CRlBcY1UN4g0/VNB0AlcvcAYHRyZPdEQFYV8ccwR5HWxEJ02YmRMLnJ1xCYp0Y5idpQuhopmmC2KgojKasUQDk5BNAwwMOh2RtRq5uQuPZKGIJQIGwAwGf6I0JXMpC8C7kXWDBINFMxS4DKMAWVWAGYsAdNqW5uaRxkSKJOZKaU3tPOBZ4DuK2LATgJhkPJMgTwKCdFjyPHEnKxFCDhEAACH5BAkKAAAALAAAAAAgACAAAATzEMhJaVKp6s2nIkolIJ2WkBShpkVRWqqQrhLSEu9MZJKK9y1ZrqYK9WiClmvoUaF8gIQSNeF1Er4MNFn4SRSDARWroAIETg1iVwuHjYB1kYc1mwruwXKC9gmsJXliGxc+XiUCby9ydh1sOSdMkpMTBpaXBzsfhoc5l58Gm5yToAaZhaOUqjkDgCWNHAULCwOLaTmzswadEqggQwgHuQsHIoZCHQMMQgQGubVEcxOPFAcMDAYUA85eWARmfSRQCdcMe0zeP1AAygwLlJtPNAAL19DARdPzBOWSm1brJBi45soRAWQAAkrQIykShQ9wVhHCwCQCACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiRMDjI0Fd30/iI2UA5GSS5UDj2l6NoqgOgN4gksEBgYFf0FDqKgHnyZ9OX8HrgYHdHpcHQULXAS2qKpENRg7eAMLC7kTBaixUYFkKAzWAAnLC7FLVxLWDBLKCwaKTULgEwbLA4hJtOkSBNqITT3xEgfLpBtzE/jiuL04RGEBgwWhShRgQExHBAAh+QQJCgAAACwAAAAAIAAgAAAE7xDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfZiCqGk5dTESJeaOAlClzsJsqwiJwiqnFrb2nS9kmIcgEsjQydLiIlHehhpejaIjzh9eomSjZR+ipslWIRLAgMDOR2DOqKogTB9pCUJBagDBXR6XB0EBkIIsaRsGGMMAxoDBgYHTKJiUYEGDAzHC9EACcUGkIgFzgwZ0QsSBcXHiQvOwgDdEwfFs0sDzt4S6BK4xYjkDOzn0unFeBzOBijIm1Dgmg5YFQwsCMjp1oJ8LyIAACH5BAkKAAAALAAAAAAgACAAAATwEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GGl6NoiPOH16iZKNlH6KmyWFOggHhEEvAwwMA0N9GBsEC6amhnVcEwavDAazGwIDaH1ipaYLBUTCGgQDA8NdHz0FpqgTBwsLqAbWAAnIA4FWKdMLGdYGEgraigbT0OITBcg5QwPT4xLrROZL6AuQAPUS7bxLpoWidY0JtxLHKhwwMJBTHgPKdEQAACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GAULDJCRiXo1CpGXDJOUjY+Yip9DhToJA4RBLwMLCwVDfRgbBAaqqoZ1XBMHswsHtxtFaH1iqaoGNgAIxRpbFAgfPQSqpbgGBqUD1wBXeCYp1AYZ19JJOYgH1KwA4UBvQwXUBxPqVD9L3sbp2BNk2xvvFPJd+MFCN6HAAIKgNggY0KtEBAAh+QQJCgAAACwAAAAAIAAgAAAE6BDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfYIDMaAFdTESJeaEDAIMxYFqrOUaNW4E4ObYcCXaiBVEgULe0NJaxxtYksjh2NLkZISgDgJhHthkpU4mW6blRiYmZOlh4JWkDqILwUGBnE6TYEbCgevr0N1gH4At7gHiRpFaLNrrq8HNgAJA70AWxQIH1+vsYMDAzZQPC9VCNkDWUhGkuE5PxJNwiUK4UfLzOlD4WvzAHaoG9nxPi5d+jYUqfAhhykOFwJWiAAAIfkECQoAAAAsAAAAACAAIAAABPAQyElpUqnqzaciSoVkXVUMFaFSwlpOCcMYlErAavhOMnNLNo8KsZsMZItJEIDIFSkLGQoQTNhIsFehRww2CQLKF0tYGKYSg+ygsZIuNqJksKgbfgIGepNo2cIUB3V1B3IvNiBYNQaDSTtfhhx0CwVPI0UJe0+bm4g5VgcGoqOcnjmjqDSdnhgEoamcsZuXO1aWQy8KAwOAuTYYGwi7w5h+Kr0SJ8MFihpNbx+4Erq7BYBuzsdiH1jCAzoSfl0rVirNbRXlBBlLX+BP0XJLAPGzTkAuAOqb0WT5AH7OcdCm5B8TgRwSRKIHQtaLCwg1RAAAOwAAAAAAAAAAAA==); background-size: 32px auto; } .effeckt-button, .effeckt-button .spinner, .effeckt-button .label { transition: 500ms cubic-bezier(0.175, 0.885, 0.32, 1.275) all; } .effeckt-button[data-effeckt-type="expand-right"] .spinner { right: 16px; } .effeckt-button[data-effeckt-type="expand-right"][data-loading] { padding-right: 64px; } .effeckt-button[data-effeckt-type="expand-right"][data-loading] .spinner { opacity: 1; } .effeckt-button[data-effeckt-type="expand-left"] .spinner { left: 16px; margin-left: 0; } .effeckt-button[data-effeckt-type="expand-left"][data-loading] { padding-left: 64px; } .effeckt-button[data-effeckt-type="expand-left"][data-loading] .spinner { opacity: 1; } .effeckt-button[data-effeckt-type="expand-up"] { overflow: hidden; } .effeckt-button[data-effeckt-type="expand-up"] .spinner { top: 32px; left: 50%; } .effeckt-button[data-effeckt-type="expand-up"][data-loading] { padding-top: 64px; } .effeckt-button[data-effeckt-type="expand-up"][data-loading] .spinner { opacity: 1; top: 16px; margin-top: 0; } .effeckt-button[data-effeckt-type="expand-down"] { overflow: hidden; } .effeckt-button[data-effeckt-type="expand-down"] .spinner { left: 50%; top: 100%; margin-top: -48px; } .effeckt-button[data-effeckt-type="expand-down"][data-loading] { padding-bottom: 64px; } .effeckt-button[data-effeckt-type="expand-down"][data-loading] .spinner { opacity: 1; } .effeckt-button[data-effeckt-type="slide-left"] { overflow: hidden; } .effeckt-button[data-effeckt-type="slide-left"] .label { position: relative; } .effeckt-button[data-effeckt-type="slide-left"] .spinner { left: 100%; } .effeckt-button[data-effeckt-type="slide-left"][data-loading] .label { opacity: 0; left: -100%; } .effeckt-button[data-effeckt-type="slide-left"][data-loading] .spinner { opacity: 1; left: 50%; } .effeckt-button[data-effeckt-type="slide-right"] { overflow: hidden; } .effeckt-button[data-effeckt-type="slide-right"] .label { position: relative; } .effeckt-button[data-effeckt-type="slide-right"] .spinner { left: 0%; } .effeckt-button[data-effeckt-type="slide-right"][data-loading] .label { opacity: 0; left: 100%; } .effeckt-button[data-effeckt-type="slide-right"][data-loading] .spinner { opacity: 1; left: 50%; } .effeckt-button[data-effeckt-type="slide-up"] { overflow: hidden; } .effeckt-button[data-effeckt-type="slide-up"] .label { position: relative; } .effeckt-button[data-effeckt-type="slide-up"] .spinner { left: 50%; top: 100%; } .effeckt-button[data-effeckt-type="slide-up"][data-loading] .label { opacity: 0; top: -1em; } .effeckt-button[data-effeckt-type="slide-up"][data-loading] .spinner { opacity: 1; top: 50%; } .effeckt-button[data-effeckt-type="slide-down"] { overflow: hidden; } .effeckt-button[data-effeckt-type="slide-down"] .label { position: relative; } .effeckt-button[data-effeckt-type="slide-down"] .spinner { left: 50%; top: 0%; } .effeckt-button[data-effeckt-type="slide-down"][data-loading] .label { opacity: 0; top: 1em; } .effeckt-button[data-effeckt-type="slide-down"][data-loading] .spinner { opacity: 1; top: 50%; } .effeckt-button[data-effeckt-type="zoom-in"], .effeckt-button[data-effeckt-type="zoom-in"] .spinner, .effeckt-button[data-effeckt-type="zoom-in"] .label, .effeckt-button[data-effeckt-type="zoom-out"], .effeckt-button[data-effeckt-type="zoom-out"] .spinner, .effeckt-button[data-effeckt-type="zoom-out"] .label { transition: 500ms ease all; } .effeckt-button[data-effeckt-type="zoom-out"] { overflow: hidden; } .effeckt-button[data-effeckt-type="zoom-out"] .spinner { left: 50%; -webkit-transform: scale(2.5); -ms-transform: scale(2.5); transform: scale(2.5); } .effeckt-button[data-effeckt-type="zoom-out"] .label { position: relative; display: inline-block; } .effeckt-button[data-effeckt-type="zoom-out"][data-loading] .label { opacity: 0; -webkit-transform: scale(0.5); -ms-transform: scale(0.5); transform: scale(0.5); } .effeckt-button[data-effeckt-type="zoom-out"][data-loading] .spinner { opacity: 1; -webkit-transform: none; -ms-transform: none; transform: none; } .effeckt-button[data-effeckt-type="zoom-in"] { overflow: hidden; } .effeckt-button[data-effeckt-type="zoom-in"] .spinner { left: 50%; -webkit-transform: scale(0.2); -ms-transform: scale(0.2); transform: scale(0.2); } .effeckt-button[data-effeckt-type="zoom-in"] .label { position: relative; display: inline-block; } .effeckt-button[data-effeckt-type="zoom-in"][data-loading] .label { opacity: 0; -webkit-transform: scale(2.2); -ms-transform: scale(2.2); transform: scale(2.2); } .effeckt-button[data-effeckt-type="zoom-in"][data-loading] .spinner { opacity: 1; -webkit-transform: none; -ms-transform: none; transform: none; } /*========================== FILL ==========================*/ .effeckt-button[data-effeckt-type="fill-from-left"] { overflow: hidden; position: relative; } .effeckt-button[data-effeckt-type="fill-from-left"]:after { content: ''; position: absolute; top: 0; right: 0; width: 100%; height: 100%; background: #000; -webkit-transform: translate(-100%, 0); -ms-transform: translate(-100%, 0); transform: translate(-100%, 0); transition: -webkit-transform 500ms; transition: transform 500ms; } .effeckt-button[data-effeckt-type="fill-from-left"][data-loading]:after { -webkit-transform: translate(0, 0); -ms-transform: translate(0, 0); transform: translate(0, 0); } .effeckt-button[data-effeckt-type="fill-from-left"] .effeckt-button-label { position: relative; z-index: 1; } .effeckt-button[data-effeckt-type="fill-from-right"] { overflow: hidden; position: relative; } .effeckt-button[data-effeckt-type="fill-from-right"]:after { content: ''; position: absolute; top: 0; right: 0; width: 100%; height: 100%; background: #000; -webkit-transform: translate(100%, 0); -ms-transform: translate(100%, 0); transform: translate(100%, 0); transition: -webkit-transform 500ms; transition: transform 500ms; } .effeckt-button[data-effeckt-type="fill-from-right"][data-loading]:after { -webkit-transform: translate(0, 0); -ms-transform: translate(0, 0); transform: translate(0, 0); } .effeckt-button[data-effeckt-type="fill-from-right"] .effeckt-button-label { position: relative; z-index: 1; } .effeckt-button[data-effeckt-type="fill-from-top"] { overflow: hidden; position: relative; } .effeckt-button[data-effeckt-type="fill-from-top"]:after { content: ''; position: absolute; top: 0; right: 0; width: 100%; height: 100%; background: #000; -webkit-transform: translate(0, -100%); -ms-transform: translate(0, -100%); transform: translate(0, -100%); transition: -webkit-transform 500ms; transition: transform 500ms; } .effeckt-button[data-effeckt-type="fill-from-top"][data-loading]:after { -webkit-transform: translate(0, 0); -ms-transform: translate(0, 0); transform: translate(0, 0); } .effeckt-button[data-effeckt-type="fill-from-top"] .effeckt-button-label { position: relative; z-index: 1; } .effeckt-button[data-effeckt-type="fill-from-bottom"] { overflow: hidden; position: relative; } .effeckt-button[data-effeckt-type="fill-from-bottom"]:after { content: ''; position: absolute; top: 0; right: 0; width: 100%; height: 100%; background: #000; -webkit-transform: translate(0, 100%); -ms-transform: translate(0, 100%); transform: translate(0, 100%); transition: -webkit-transform 500ms; transition: transform 500ms; } .effeckt-button[data-effeckt-type="fill-from-bottom"][data-loading]:after { -webkit-transform: translate(0, 0); -ms-transform: translate(0, 0); transform: translate(0, 0); } .effeckt-button[data-effeckt-type="fill-from-bottom"] .effeckt-button-label { position: relative; z-index: 1; } /*========================== ICON SLIDE Example markup: ==========================*/ .demo-button-icon:before { background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEljb01vb24uaW8gLS0+IDwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+IDxzdmcgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIiB2aWV3Qm94PSIwIDAgMzIgMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIGZpbGw9IiNmZmZmZmYiPjxnPjxwYXRoIGQ9Ik0gMTYsMyBDIDEyLjUyOCwzIDkuMjYzLDQuMzUyIDYuODA4LDYuODA4IEMgNC4zNTIsOS4yNjMgMywxMi41MjggMywxNiBDIDMsMTkuNDcyIDQuMzUyLDIyLjczNyA2LjgwOCwyNS4xOTIgQyA5LjI2MywyNy42NDggMTIuNTI4LDI5IDE2LDI5IEMgMTkuNDcyLDI5IDIyLjczNywyNy42NDggMjUuMTkyLDI1LjE5MiBDIDI3LjY0OCwyMi43MzcgMjksMTkuNDcyIDI5LDE2IEMgMjksMTIuNTI4IDI3LjY0OCw5LjI2MyAyNS4xOTIsNi44MDggQyAyMi43MzcsNC4zNTIgMTkuNDcyLDMgMTYsMyBaIE0gMTYsMCBMIDE2LDAgQyAyNC44MzcsMCAzMiw3LjE2MyAzMiwxNiBDIDMyLDI0LjgzNyAyNC44MzcsMzIgMTYsMzIgQyA3LjE2MywzMiAwLDI0LjgzNyAwLDE2IEMgMCw3LjE2MyA3LjE2MywwIDE2LDAgWk0gMTQsMjJMIDE4LDIyTCAxOCwyNkwgMTQsMjZ6TSAxNCw2TCAxOCw2TCAxOCwxOEwgMTQsMTh6Ij48L3BhdGg+PC9nPjwvc3ZnPg==) no-repeat center center; background-size: 30px; } .effeckt-button[data-effeckt-type~="icon-slide"] { overflow: hidden; padding: 0; } .effeckt-button[data-effeckt-type~="icon-slide"] .effeckt-button-label { padding: 0.8rem 1rem; display: block; position: relative; transition: -webkit-transform 500ms; transition: transform 500ms; } .effeckt-button[data-effeckt-type~="icon-slide"] .effeckt-button-label:before { content: ''; display: block; position: absolute; width: 100%; height: 100%; } .effeckt-button[data-effeckt-type~="icon-slide"][data-effeckt-type~="from-top"] .effeckt-button-label:before { top: -100%; left: 0; right: 0; } .effeckt-button[data-effeckt-type~="icon-slide"][data-effeckt-type~="from-bottom"] .effeckt-button-label:before { bottom: -100%; left: 0; right: 0; } .effeckt-button[data-effeckt-type~="icon-slide"][data-effeckt-type~="from-left"] .effeckt-button-label:before { left: -100%; top: 0; bottom: 0; } .effeckt-button[data-effeckt-type~="icon-slide"][data-effeckt-type~="from-right"] .effeckt-button-label:before { right: -100%; top: 0; bottom: 0; } .effeckt-button[data-effeckt-type~="icon-slide"][data-loading][data-effeckt-type~="from-top"] .effeckt-button-label { -webkit-transform: translateY(100%); -ms-transform: translateY(100%); transform: translateY(100%); } .effeckt-button[data-effeckt-type~="icon-slide"][data-loading][data-effeckt-type~="from-bottom"] .effeckt-button-label { -webkit-transform: translateY(-100%); -ms-transform: translateY(-100%); transform: translateY(-100%); } .effeckt-button[data-effeckt-type~="icon-slide"][data-loading][data-effeckt-type~="from-left"] .effeckt-button-label { -webkit-transform: translateX(100%); -ms-transform: translateX(100%); transform: translateX(100%); } .effeckt-button[data-effeckt-type~="icon-slide"][data-loading][data-effeckt-type~="from-right"] .effeckt-button-label { -webkit-transform: translateX(-100%); -ms-transform: translateX(-100%); transform: translateX(-100%); } .effeckt-button[data-effeckt-type="3d-rotate-success"], .effeckt-button[data-effeckt-type="3d-rotate-error"] { transition: all 500ms; -webkit-transform-style: preserve-3d; transform-style: preserve-3d; -webkit-backface-visibility: hidden; backface-visibility: hidden; } .effeckt-button[data-effeckt-type="3d-rotate-error"]:before, .effeckt-button[data-effeckt-type="3d-rotate-success"]:after { white-space: nowrap; width: 100%; height: 100%; position: absolute; left: 0; line-height: 2em; } .effeckt-button[data-effeckt-type="3d-rotate-error"]:before { top: 100%; content: attr(data-effeckt-message); -webkit-transform-origin: 0% 0%; -ms-transform-origin: 0% 0%; transform-origin: 0% 0%; -webkit-transform: rotateX(-90deg); transform: rotateX(-90deg); -webkit-backface-visibility: hidden; backface-visibility: hidden; } .effeckt-button[data-effeckt-type="3d-rotate-error"][data-loading] { -webkit-transform-origin: 50% 0%; -ms-transform-origin: 50% 0%; transform-origin: 50% 0%; -webkit-transform: rotateX(90deg) translateY(-100%); transform: rotateX(90deg) translateY(-100%); } .effeckt-button[data-effeckt-type="3d-rotate-success"]:after { top: -100%; content: attr(data-effeckt-message); -webkit-transform-origin: 0% 100%; -ms-transform-origin: 0% 100%; transform-origin: 0% 100%; -webkit-transform: rotateX(90deg); transform: rotateX(90deg); -webkit-backface-visibility: hidden; backface-visibility: hidden; } .effeckt-button[data-effeckt-type="3d-rotate-success"][data-loading] { -webkit-transform-origin: 50% 100%; -ms-transform-origin: 50% 100%; transform-origin: 50% 100%; -webkit-transform: rotateX(-90deg) translateY(100%); transform: rotateX(-90deg) translateY(100%); } /* Captions Markup Pattern & Explanation data-effeckt-type = ""
*/ .effeckt-caption { position: relative; } .effeckt-caption img { transition: 500ms; } .effeckt-caption figcaption { position: absolute; transition: 500ms; width: 100%; } .effeckt-caption[data-effeckt-type="quarter-appear"] figcaption { bottom: 0; left: 0; opacity: 0; } .effeckt-caption[data-effeckt-type="quarter-appear"]:hover figcaption, .effeckt-caption[data-effeckt-type="quarter-appear"]:active figcaption, .effeckt-caption[data-effeckt-type="quarter-appear"].active figcaption { opacity: 1; } .effeckt-caption[data-effeckt-type="quarter-slide-up"] figcaption { bottom: 0; left: 0; opacity: 0; -webkit-transform: translateY(100%); -ms-transform: translateY(100%); transform: translateY(100%); } .effeckt-caption[data-effeckt-type="quarter-slide-up"]:hover figcaption, .effeckt-caption[data-effeckt-type="quarter-slide-up"]:active figcaption, .effeckt-caption[data-effeckt-type="quarter-slide-up"].active figcaption { opacity: 1; -webkit-transform: translateY(0); -ms-transform: translateY(0); transform: translateY(0); } .effeckt-caption[data-effeckt-type="sqkwoosh"] figcaption { top: 0; left: 0; width: 100%; height: 100%; transition: none; z-index: 0; } .effeckt-caption[data-effeckt-type="sqkwoosh"] img { position: relative; z-index: 1; transition-delay: 0.25s; } .effeckt-caption[data-effeckt-type="sqkwoosh"] .effeckt-figcaption-wrap { position: absolute; bottom: 1rem; opacity: 0; transition: opacity 0.25s linear 0s; } .effeckt-caption[data-effeckt-type="sqkwoosh"]:hover .effeckt-figcaption-wrap, .effeckt-caption[data-effeckt-type="sqkwoosh"]:active .effeckt-figcaption-wrap, .effeckt-caption[data-effeckt-type="sqkwoosh"].active .effeckt-figcaption-wrap { opacity: 1; transition-delay: 0.25s; } .effeckt-caption[data-effeckt-type="sqkwoosh"]:hover img, .effeckt-caption[data-effeckt-type="sqkwoosh"]:active img, .effeckt-caption[data-effeckt-type="sqkwoosh"].active img { -webkit-transform: scale(0.5) translateY(-80px); -ms-transform: scale(0.5) translateY(-80px); transform: scale(0.5) translateY(-80px); transition-delay: 0; } .effeckt-caption[data-effeckt-type="quarter-slide-side"] figcaption { left: 0; bottom: 0; opacity: 0; -webkit-transform: translateX(100%); -ms-transform: translateX(100%); transform: translateX(100%); } .effeckt-caption[data-effeckt-type="quarter-slide-side"]:hover figcaption, .effeckt-caption[data-effeckt-type="quarter-slide-side"]:active figcaption, .effeckt-caption[data-effeckt-type="quarter-slide-side"].active figcaption { opacity: 1; -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); } .effeckt-caption[data-effeckt-type="cover-fade"] figcaption { top: 0; left: 0; height: 100%; opacity: 0; } .effeckt-caption[data-effeckt-type="cover-fade"]:hover figcaption, .effeckt-caption[data-effeckt-type="cover-fade"]:active figcaption, .effeckt-caption[data-effeckt-type="cover-fade"].active figcaption { opacity: 1; } .effeckt-caption[data-effeckt-type="quarter-fall-in"] figcaption { top: 0; left: 0; -webkit-transform: translateX(100%) rotate(20deg); -ms-transform: translateX(100%) rotate(20deg); transform: translateX(100%) rotate(20deg); opacity: 0; } .effeckt-caption[data-effeckt-type="quarter-fall-in"]:hover figcaption, .effeckt-caption[data-effeckt-type="quarter-fall-in"]:active figcaption, .effeckt-caption[data-effeckt-type="quarter-fall-in"].active figcaption { -webkit-transform: translateX(0) rotate(0deg); -ms-transform: translateX(0) rotate(0deg); transform: translateX(0) rotate(0deg); opacity: 1; } .effeckt-caption[data-effeckt-type="quarter-two-step"] figcaption { top: 0; left: 0; -webkit-transform: translateX(-100%); -ms-transform: translateX(-100%); transform: translateX(-100%); opacity: 0; z-index: 2; } .effeckt-caption[data-effeckt-type="quarter-two-step"] .effeckt-figcaption-wrap { transition: 500ms 250ms; -webkit-transform: translateX(200%); -ms-transform: translateX(200%); transform: translateX(200%); } .effeckt-caption[data-effeckt-type="quarter-two-step"]:hover figcaption, .effeckt-caption[data-effeckt-type="quarter-two-step"]:active figcaption, .effeckt-caption[data-effeckt-type="quarter-two-step"].active figcaption { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; } .effeckt-caption[data-effeckt-type="quarter-two-step"]:hover .effeckt-figcaption-wrap, .effeckt-caption[data-effeckt-type="quarter-two-step"]:active .effeckt-figcaption-wrap, .effeckt-caption[data-effeckt-type="quarter-two-step"].active .effeckt-figcaption-wrap { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); } .effeckt-caption[data-effeckt-type="cover-push-right"] figcaption { top: 0; left: 0; height: 100%; -webkit-transform: translateX(-100%); -ms-transform: translateX(-100%); transform: translateX(-100%); opacity: 0; } .effeckt-caption[data-effeckt-type="cover-push-right"] img { transition: 500ms; -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); } .effeckt-caption[data-effeckt-type="cover-push-right"]:hover figcaption, .effeckt-caption[data-effeckt-type="cover-push-right"]:active figcaption, .effeckt-caption[data-effeckt-type="cover-push-right"].active figcaption { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; } .effeckt-caption[data-effeckt-type="cover-push-right"]:hover img, .effeckt-caption[data-effeckt-type="cover-push-right"]:active img, .effeckt-caption[data-effeckt-type="cover-push-right"].active img { -webkit-transform: translateX(100%); -ms-transform: translateX(100%); transform: translateX(100%); } .effeckt-caption[data-effeckt-type="cover-slide-top"] figcaption { top: 0; left: 0; height: 100%; -webkit-transform: translateY(-100%); -ms-transform: translateY(-100%); transform: translateY(-100%); opacity: 0; } .effeckt-caption[data-effeckt-type="cover-slide-top"] img { transition: 500ms; } .effeckt-caption[data-effeckt-type="cover-slide-top"]:hover figcaption, .effeckt-caption[data-effeckt-type="cover-slide-top"]:active figcaption, .effeckt-caption[data-effeckt-type="cover-slide-top"].active figcaption { -webkit-transform: translateY(0); -ms-transform: translateY(0); transform: translateY(0); opacity: 1; } .effeckt-caption[data-effeckt-type="quarter-zoom"] figcaption { top: 0; left: 0; -webkit-transform: scale(2); -ms-transform: scale(2); transform: scale(2); text-align: center; opacity: 0; } .effeckt-caption[data-effeckt-type="quarter-zoom"] img { transition: 500ms; } .effeckt-caption[data-effeckt-type="quarter-zoom"]:hover figcaption, .effeckt-caption[data-effeckt-type="quarter-zoom"]:active figcaption, .effeckt-caption[data-effeckt-type="quarter-zoom"].active figcaption { -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1); opacity: 1; } .effeckt-caption[data-effeckt-type="quarter-zoom"]:hover img, .effeckt-caption[data-effeckt-type="quarter-zoom"]:active img, .effeckt-caption[data-effeckt-type="quarter-zoom"].active img { -webkit-transform: scale(1.1); -ms-transform: scale(1.1); transform: scale(1.1); } .effeckt-caption[data-effeckt-type="revolving-door-left"] { overflow: visible; } .effeckt-caption[data-effeckt-type="revolving-door-left"] figcaption { top: 0; left: 0; width: 100%; height: 100%; -webkit-transform: perspective(1300px) rotateY(180deg); transform: perspective(1300px) rotateY(180deg); -webkit-backface-visibility: hidden; backface-visibility: hidden; } .effeckt-caption[data-effeckt-type="revolving-door-left"] img { -webkit-transform: perspective(1300px); transform: perspective(1300px); transition: 500ms; } .effeckt-caption[data-effeckt-type="revolving-door-left"]:hover figcaption, .effeckt-caption[data-effeckt-type="revolving-door-left"]:active figcaption, .effeckt-caption[data-effeckt-type="revolving-door-left"].active figcaption { -webkit-transform: perspective(1300px) rotateY(0deg); transform: perspective(1300px) rotateY(0deg); } .effeckt-caption[data-effeckt-type="revolving-door-left"]:hover img, .effeckt-caption[data-effeckt-type="revolving-door-left"]:active img, .effeckt-caption[data-effeckt-type="revolving-door-left"].active img { -webkit-transform: perspective(1300px) rotateY(-180deg); transform: perspective(1300px) rotateY(-180deg); } .effeckt-caption[data-effeckt-type="revolving-door-right"] { overflow: visible; } .effeckt-caption[data-effeckt-type="revolving-door-right"] figcaption { top: 0; left: 0; width: 100%; height: 100%; -webkit-transform: perspective(1300px) rotateY(180deg); transform: perspective(1300px) rotateY(180deg); -webkit-backface-visibility: hidden; backface-visibility: hidden; } .effeckt-caption[data-effeckt-type="revolving-door-right"] img { -webkit-transform: perspective(1300px); transform: perspective(1300px); transition: 500ms; } .effeckt-caption[data-effeckt-type="revolving-door-right"]:hover figcaption, .effeckt-caption[data-effeckt-type="revolving-door-right"]:active figcaption, .effeckt-caption[data-effeckt-type="revolving-door-right"].active figcaption { -webkit-transform: perspective(1300px) rotateY(360deg); transform: perspective(1300px) rotateY(360deg); } .effeckt-caption[data-effeckt-type="revolving-door-right"]:hover img, .effeckt-caption[data-effeckt-type="revolving-door-right"]:active img, .effeckt-caption[data-effeckt-type="revolving-door-right"].active img { -webkit-transform: perspective(1300px) rotateY(180deg); transform: perspective(1300px) rotateY(180deg); } .effeckt-caption[data-effeckt-type="revolving-door-top"] { overflow: visible; } .effeckt-caption[data-effeckt-type="revolving-door-top"] figcaption { top: 0; left: 0; width: 100%; height: 100%; -webkit-transform: perspective(1300px) rotateX(180deg); transform: perspective(1300px) rotateX(180deg); -webkit-backface-visibility: hidden; backface-visibility: hidden; } .effeckt-caption[data-effeckt-type="revolving-door-top"] img { -webkit-transform: perspective(1300px); transform: perspective(1300px); transition: 500ms; } .effeckt-caption[data-effeckt-type="revolving-door-top"]:hover figcaption, .effeckt-caption[data-effeckt-type="revolving-door-top"]:active figcaption, .effeckt-caption[data-effeckt-type="revolving-door-top"].active figcaption { -webkit-transform: perspective(1300px) rotateX(360deg); transform: perspective(1300px) rotateX(360deg); } .effeckt-caption[data-effeckt-type="revolving-door-top"]:hover img, .effeckt-caption[data-effeckt-type="revolving-door-top"]:active img, .effeckt-caption[data-effeckt-type="revolving-door-top"].active img { -webkit-transform: perspective(1300px) rotateX(180deg); transform: perspective(1300px) rotateX(180deg); } .effeckt-caption[data-effeckt-type="revolving-door-bottom"] { overflow: visible; } .effeckt-caption[data-effeckt-type="revolving-door-bottom"] figcaption { top: 0; left: 0; width: 100%; height: 100%; -webkit-transform: perspective(1300px) rotateX(180deg); transform: perspective(1300px) rotateX(180deg); -webkit-backface-visibility: hidden; backface-visibility: hidden; } .effeckt-caption[data-effeckt-type="revolving-door-bottom"] img { -webkit-transform: perspective(1300px); transform: perspective(1300px); transition: 500ms; } .effeckt-caption[data-effeckt-type="revolving-door-bottom"]:hover figcaption, .effeckt-caption[data-effeckt-type="revolving-door-bottom"]:active figcaption, .effeckt-caption[data-effeckt-type="revolving-door-bottom"].active figcaption { -webkit-transform: perspective(1300px) rotateX(0deg); transform: perspective(1300px) rotateX(0deg); } .effeckt-caption[data-effeckt-type="revolving-door-bottom"]:hover img, .effeckt-caption[data-effeckt-type="revolving-door-bottom"]:active img, .effeckt-caption[data-effeckt-type="revolving-door-bottom"].active img { -webkit-transform: perspective(1300px) rotateX(-180deg); transform: perspective(1300px) rotateX(-180deg); } .effeckt-caption[data-effeckt-type="offset"] { overflow: visible; } .effeckt-caption[data-effeckt-type="offset"] figcaption { top: 0; left: 0; text-align: center; opacity: 0; height: 100%; } .effeckt-caption[data-effeckt-type="offset"] img { transition: 500ms; } .effeckt-caption[data-effeckt-type="offset"]:hover figcaption, .effeckt-caption[data-effeckt-type="offset"]:active figcaption, .effeckt-caption[data-effeckt-type="offset"].active figcaption { -webkit-transform: translate(15px, 15px); -ms-transform: translate(15px, 15px); transform: translate(15px, 15px); opacity: 1; z-index: 100; overflow: hidden; } .effeckt-caption[data-effeckt-type="guillotine-reverse"] { overflow: visible; } .effeckt-caption[data-effeckt-type="guillotine-reverse"] figcaption { top: 0; left: 0; text-align: center; height: 100%; } .effeckt-caption[data-effeckt-type="guillotine-reverse"] img { display: block; position: relative; z-index: 10; transition: 500ms; } .effeckt-caption[data-effeckt-type="guillotine-reverse"]:hover img, .effeckt-caption[data-effeckt-type="guillotine-reverse"]:active img, .effeckt-caption[data-effeckt-type="guillotine-reverse"].active img { -webkit-transform: translateY(-100%); -ms-transform: translateY(-100%); transform: translateY(-100%); } .effeckt-caption[data-effeckt-type="half-slide"] figcaption { top: 0; left: 0; text-align: center; height: 100%; -webkit-transform: translateY(100%); -ms-transform: translateY(100%); transform: translateY(100%); } .effeckt-caption[data-effeckt-type="half-slide"] img { display: block; position: relative; transition: 500ms; } .effeckt-caption[data-effeckt-type="half-slide"]:hover img, .effeckt-caption[data-effeckt-type="half-slide"]:active img, .effeckt-caption[data-effeckt-type="half-slide"].active img { -webkit-transform: translateY(-50%); -ms-transform: translateY(-50%); transform: translateY(-50%); } .effeckt-caption[data-effeckt-type="half-slide"]:hover figcaption, .effeckt-caption[data-effeckt-type="half-slide"]:active figcaption, .effeckt-caption[data-effeckt-type="half-slide"].active figcaption { -webkit-transform: translateY(50%); -ms-transform: translateY(50%); transform: translateY(50%); } .effeckt-caption[data-effeckt-type="tunnel"] figcaption { top: 0; left: 0; text-align: center; height: 100%; opacity: 0; -webkit-transform: scale(0.7); -ms-transform: scale(0.7); transform: scale(0.7); } .effeckt-caption[data-effeckt-type="tunnel"] img { display: block; position: relative; z-index: 10; transition: 500ms; } .effeckt-caption[data-effeckt-type="tunnel"]:hover img, .effeckt-caption[data-effeckt-type="tunnel"]:active img, .effeckt-caption[data-effeckt-type="tunnel"].active img { -webkit-transform: scale(0.4); -ms-transform: scale(0.4); transform: scale(0.4); } .effeckt-caption[data-effeckt-type="tunnel"]:hover figcaption, .effeckt-caption[data-effeckt-type="tunnel"]:active figcaption, .effeckt-caption[data-effeckt-type="tunnel"].active figcaption { opacity: 1; -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1); } .effeckt-list[data-effeckt-type='pop-in'] { overflow: hidden; } .effeckt-list[data-effeckt-type='pop-in'] .new-item { max-height: 0; opacity: 0; -webkit-transform: translateX(-300px); -ms-transform: translateX(-300px); transform: translateX(-300px); -webkit-animation: openSpace 500ms ease forwards, moveIn 750ms 500ms ease forwards; animation: openSpace 500ms ease forwards, moveIn 750ms 500ms ease forwards; } .effeckt-list[data-effeckt-type='pop-in'] .remove-item { max-height: 50px; opacity: 1; -webkit-animation: moveOut 750ms 500ms ease forwards, closeSpace 500ms ease forwards 750ms; animation: moveOut 750ms 500ms ease forwards, closeSpace 500ms ease forwards 750ms; } @-webkit-keyframes openSpace { to { max-height: 50px; } } @keyframes openSpace { to { max-height: 50px; } } @-webkit-keyframes moveIn { to { opacity: 1; -webkit-transform: translateX(0); transform: translateX(0); } } @keyframes moveIn { to { opacity: 1; -webkit-transform: translateX(0); transform: translateX(0); } } @-webkit-keyframes moveOut { to { opacity: 0; -webkit-transform: translateX(-300px); transform: translateX(-300px); } } @keyframes moveOut { to { opacity: 0; -webkit-transform: translateX(-300px); transform: translateX(-300px); } } @-webkit-keyframes closeSpace { to { max-height: 0px; } from { max-height: 50px; } } @keyframes closeSpace { to { max-height: 0px; } from { max-height: 50px; } } .effeckt-list[data-effeckt-type='expand-in'] .new-item { max-height: 0; opacity: 0; -webkit-transform: scale(0); -ms-transform: scale(0); transform: scale(0); -webkit-animation: growHeight 500ms ease forwards; animation: growHeight 500ms ease forwards; } .effeckt-list[data-effeckt-type='expand-in'] .remove-item { -webkit-animation: shrinkHeight 500ms ease forwards; animation: shrinkHeight 500ms ease forwards; } @-webkit-keyframes growHeight { to { max-height: 50px; opacity: 1; -webkit-transform: scale(1); transform: scale(1); } } @keyframes growHeight { to { max-height: 50px; opacity: 1; -webkit-transform: scale(1); transform: scale(1); } } @-webkit-keyframes shrinkHeight { to { max-height: 0; opacity: 1; -webkit-transform: scale(0); transform: scale(0); } from { max-height: 50px; opacity: 1; -webkit-transform: scale(1); transform: scale(1); } } @keyframes shrinkHeight { to { max-height: 0; opacity: 1; -webkit-transform: scale(0); transform: scale(0); } from { max-height: 50px; opacity: 1; -webkit-transform: scale(1); transform: scale(1); } } .effeckt-list[data-effeckt-type='wobble-in'] .new-item { -webkit-backface-visibility: visible; backface-visibility: visible; -webkit-animation: WobbleInX 2500ms both 500ms, openSpace 500ms ease forwards; animation: WobbleInX 2500ms both 500ms, openSpace 500ms ease forwards; } .effeckt-list[data-effeckt-type='wobble-in'] .remove-item { -webkit-backface-visibility: visible; backface-visibility: visible; -webkit-animation: WobbleOutX 2500ms both 500ms, closeSpace 1000ms ease forwards 1500ms; animation: WobbleOutX 2500ms both 500ms, closeSpace 1000ms ease forwards 1500ms; } @-webkit-keyframes WobbleInX { 0% { -webkit-transform: perspective(250px) rotateX(90deg); transform: perspective(250px) rotateX(90deg); opacity: 0; } 40% { -webkit-transform: perspective(250px) rotateX(-10deg); transform: perspective(250px) rotateX(-10deg); } 70% { -webkit-transform: perspective(250px) rotateX(10deg); transform: perspective(250px) rotateX(10deg); } 100% { -webkit-transform: perspective(250px) rotateX(0deg); transform: perspective(250px) rotateX(0deg); opacity: 1; } } @keyframes WobbleInX { 0% { -webkit-transform: perspective(250px) rotateX(90deg); transform: perspective(250px) rotateX(90deg); opacity: 0; } 40% { -webkit-transform: perspective(250px) rotateX(-10deg); transform: perspective(250px) rotateX(-10deg); } 70% { -webkit-transform: perspective(250px) rotateX(10deg); transform: perspective(250px) rotateX(10deg); } 100% { -webkit-transform: perspective(250px) rotateX(0deg); transform: perspective(250px) rotateX(0deg); opacity: 1; } } @-webkit-keyframes WobbleOutX { 0% { -webkit-transform: perspective(250px) rotateX(0deg); transform: perspective(250px) rotateX(0deg); opacity: 1; } 100% { -webkit-transform: perspective(250px) rotateX(90deg); transform: perspective(250px) rotateX(90deg); opacity: 0; } } @keyframes WobbleOutX { 0% { -webkit-transform: perspective(250px) rotateX(0deg); transform: perspective(250px) rotateX(0deg); opacity: 1; } 100% { -webkit-transform: perspective(250px) rotateX(90deg); transform: perspective(250px) rotateX(90deg); opacity: 0; } } .effeckt-list[data-effeckt-type='flip-in'] .new-item { -webkit-backface-visibility: visible; backface-visibility: visible; -webkit-transform-origin: top left; -ms-transform-origin: top left; transform-origin: top left; -webkit-animation: FlipIn 2500ms both 500ms, openSpace 500ms ease forwards; animation: FlipIn 2500ms both 500ms, openSpace 500ms ease forwards; } .effeckt-list[data-effeckt-type='flip-in'] .remove-item { -webkit-backface-visibility: visible; backface-visibility: visible; -webkit-transform-origin: top left; -ms-transform-origin: top left; transform-origin: top left; -webkit-animation: FlipOut 2500ms both 500ms, closeSpace 1000ms ease forwards 1000ms; animation: FlipOut 2500ms both 500ms, closeSpace 1000ms ease forwards 1000ms; } @-webkit-keyframes FlipIn { 0% { -webkit-transform: perspective(300px) rotateX(90deg); transform: perspective(300px) rotateX(90deg); opacity: 0; } 100% { -webkit-transform: perspective(300px) rotateX(0deg); transform: perspective(300px) rotateX(0deg); opacity: 1; } } @keyframes FlipIn { 0% { -webkit-transform: perspective(300px) rotateX(90deg); transform: perspective(300px) rotateX(90deg); opacity: 0; } 100% { -webkit-transform: perspective(300px) rotateX(0deg); transform: perspective(300px) rotateX(0deg); opacity: 1; } } @-webkit-keyframes FlipOut { 0% { -webkit-transform: perspective(400px) rotateX(0deg); transform: perspective(400px) rotateX(0deg); opacity: 1; } 100% { -webkit-transform: perspective(400px) rotateX(90deg); transform: perspective(400px) rotateX(90deg); opacity: 0; } } @keyframes FlipOut { 0% { -webkit-transform: perspective(400px) rotateX(0deg); transform: perspective(400px) rotateX(0deg); opacity: 1; } 100% { -webkit-transform: perspective(400px) rotateX(90deg); transform: perspective(400px) rotateX(90deg); opacity: 0; } } .effeckt-list[data-effeckt-type='fall-in'] .new-item { -webkit-backface-visibility: visible; backface-visibility: visible; -webkit-animation: openSpace 1000ms ease forwards, fallInX 1000ms both; animation: openSpace 1000ms ease forwards, fallInX 1000ms both; } .effeckt-list[data-effeckt-type='fall-in'] .remove-item { -webkit-backface-visibility: visible; backface-visibility: visible; -webkit-transform-origin: top left; -ms-transform-origin: top left; transform-origin: top left; -webkit-animation: fallOffX 1000ms both, closeSpace 750ms ease forwards 500ms; animation: fallOffX 1000ms both, closeSpace 750ms ease forwards 500ms; } @-webkit-keyframes fallInX { 0% { opacity: 0; -webkit-transform: translateY(-200px); transform: translateY(-200px); } 100% { opacity: 1; -webkit-transform: translateY(0); transform: translateY(0); } } @keyframes fallInX { 0% { opacity: 0; -webkit-transform: translateY(-200px); transform: translateY(-200px); } 100% { opacity: 1; -webkit-transform: translateY(0); transform: translateY(0); } } @-webkit-keyframes fallOffX { 0% { opacity: 1; -webkit-transform: rotateZ(0); transform: rotateZ(0); } 100% { opacity: 0; -webkit-transform: translateY(200px) rotateZ(90deg); transform: translateY(200px) rotateZ(90deg); } } @keyframes fallOffX { 0% { opacity: 1; -webkit-transform: rotateZ(0); transform: rotateZ(0); } 100% { opacity: 0; -webkit-transform: translateY(200px) rotateZ(90deg); transform: translateY(200px) rotateZ(90deg); } } .effeckt-list[data-effeckt-type='from-above'] .new-item { -webkit-backface-visibility: visible; backface-visibility: visible; -webkit-animation: openSpace 1000ms ease forwards, fromAbove 1000ms both 500ms; animation: openSpace 1000ms ease forwards, fromAbove 1000ms both 500ms; } .effeckt-list[data-effeckt-type='from-above'] .remove-item { -webkit-backface-visibility: visible; backface-visibility: visible; -webkit-animation: toAbove 1000ms both, closeSpace 500ms ease forwards 650ms; animation: toAbove 1000ms both, closeSpace 500ms ease forwards 650ms; } @-webkit-keyframes fromAbove { 0% { opacity: 0; -webkit-transform: scale(3); transform: scale(3); } 100% { opacity: 1; -webkit-transform: scale(1); transform: scale(1); } } @keyframes fromAbove { 0% { opacity: 0; -webkit-transform: scale(3); transform: scale(3); } 100% { opacity: 1; -webkit-transform: scale(1); transform: scale(1); } } @-webkit-keyframes toAbove { 0% { opacity: 1; -webkit-transform: scale(1); transform: scale(1); } 100% { opacity: 0; -webkit-transform: scale(3); transform: scale(3); } } @keyframes toAbove { 0% { opacity: 1; -webkit-transform: scale(1); transform: scale(1); } 100% { opacity: 0; -webkit-transform: scale(3); transform: scale(3); } } .effeckt-list[data-effeckt-type='wobble-out'] .new-item { -webkit-backface-visibility: visible; backface-visibility: visible; -webkit-animation: openSpace 1000ms ease forwards, fallInX 1000ms both; animation: openSpace 1000ms ease forwards, fallInX 1000ms both; } .effeckt-list[data-effeckt-type='wobble-out'] .remove-item { -webkit-backface-visibility: visible; backface-visibility: visible; -webkit-transform-origin: top left; -ms-transform-origin: top left; transform-origin: top left; -webkit-animation: wobbleOutY 1500ms both 500ms, closeSpace 500ms ease forwards 1500ms; animation: wobbleOutY 1500ms both 500ms, closeSpace 500ms ease forwards 1500ms; } @-webkit-keyframes wobbleOutY { 0% { opacity: 1; -webkit-transform: rotateZ(0); transform: rotateZ(0); } 20% { opacity: 1; -webkit-transform: rotateZ(140deg); transform: rotateZ(140deg); } 40% { opacity: 1; -webkit-transform: rotateZ(60deg); transform: rotateZ(60deg); } 60% { opacity: 1; -webkit-transform: rotateZ(110deg); transform: rotateZ(110deg); } 70% { opacity: 1; -webkit-transform: rotateZ(90deg) translateX(0); transform: rotateZ(90deg) translateX(0); } 90% { opacity: 1; -webkit-transform: rotateZ(90deg) translateX(400px); transform: rotateZ(90deg) translateX(400px); } 100% { opacity: 0; -webkit-transform: rotateZ(90deg) translateX(400px); transform: rotateZ(90deg) translateX(400px); } } @keyframes wobbleOutY { 0% { opacity: 1; -webkit-transform: rotateZ(0); transform: rotateZ(0); } 20% { opacity: 1; -webkit-transform: rotateZ(140deg); transform: rotateZ(140deg); } 40% { opacity: 1; -webkit-transform: rotateZ(60deg); transform: rotateZ(60deg); } 60% { opacity: 1; -webkit-transform: rotateZ(110deg); transform: rotateZ(110deg); } 70% { opacity: 1; -webkit-transform: rotateZ(90deg) translateX(0); transform: rotateZ(90deg) translateX(0); } 90% { opacity: 1; -webkit-transform: rotateZ(90deg) translateX(400px); transform: rotateZ(90deg) translateX(400px); } 100% { opacity: 0; -webkit-transform: rotateZ(90deg) translateX(400px); transform: rotateZ(90deg) translateX(400px); } } .effeckt-list[data-effeckt-type='bouncy-slide-in'] .new-item { -webkit-backface-visibility: visible; backface-visibility: visible; -webkit-animation: bouncySlideIn 1000ms both, openSpace 500ms ease forwards; animation: bouncySlideIn 1000ms both, openSpace 500ms ease forwards; } .effeckt-list[data-effeckt-type='bouncy-slide-in'] .remove-item { -webkit-backface-visibility: visible; backface-visibility: visible; -webkit-animation: fallOffY 1500ms both 500ms, closeSpace 500ms ease forwards 1625ms; animation: fallOffY 1500ms both 500ms, closeSpace 500ms ease forwards 1625ms; } @-webkit-keyframes bouncySlideIn { 0% { opacity: 0; -webkit-transform: translateX(300px); transform: translateX(300px); } 70% { opacity: 1; -webkit-transform: translateX(-50px); transform: translateX(-50px); } 100% { opacity: 1; -webkit-transform: translateX(0); transform: translateX(0); } } @keyframes bouncySlideIn { 0% { opacity: 0; -webkit-transform: translateX(300px); transform: translateX(300px); } 70% { opacity: 1; -webkit-transform: translateX(-50px); transform: translateX(-50px); } 100% { opacity: 1; -webkit-transform: translateX(0); transform: translateX(0); } } @-webkit-keyframes fallOffY { 0% { opacity: 1; -webkit-transform: translateX(0) translateY(0) rotateZ(0deg); transform: translateX(0) translateY(0) rotateZ(0deg); } 50% { opacity: 1; -webkit-transform: translateX(-50%) translateY(0) rotateZ(0deg); transform: translateX(-50%) translateY(0) rotateZ(0deg); } 75% { opacity: 0.75; -webkit-transform: translateX(-50%) translateY(0) rotateZ(-30deg); transform: translateX(-50%) translateY(0) rotateZ(-30deg); } 100% { opacity: 0; -webkit-transform: translateX(-50%) translateY(300px) rotateZ(-60deg); transform: translateX(-50%) translateY(300px) rotateZ(-60deg); } } @keyframes fallOffY { 0% { opacity: 1; -webkit-transform: translateX(0) translateY(0) rotateZ(0deg); transform: translateX(0) translateY(0) rotateZ(0deg); } 50% { opacity: 1; -webkit-transform: translateX(-50%) translateY(0) rotateZ(0deg); transform: translateX(-50%) translateY(0) rotateZ(0deg); } 75% { opacity: 0.75; -webkit-transform: translateX(-50%) translateY(0) rotateZ(-30deg); transform: translateX(-50%) translateY(0) rotateZ(-30deg); } 100% { opacity: 0; -webkit-transform: translateX(-50%) translateY(300px) rotateZ(-60deg); transform: translateX(-50%) translateY(300px) rotateZ(-60deg); } } .effeckt-list-scroll { position: relative; overflow-x: hidden; overflow-y: scroll; -webkit-perspective: 400px; perspective: 400px; } .effeckt-list-scroll > li { position: relative; z-index: 2; -webkit-transform: translateZ(0); transform: translateZ(0); } [data-effeckt-type="grow"] li { transition: all 500ms ease; -webkit-transform-origin: 50% 50%; -ms-transform-origin: 50% 50%; transform-origin: 50% 50%; } [data-effeckt-type="grow"] li.past, [data-effeckt-type="grow"] li.future { -webkit-transform: scale(0.01); -ms-transform: scale(0.01); transform: scale(0.01); } [data-effeckt-type="curl"] li { -webkit-perspective: 600px; perspective: 600px; -webkit-perspective-origin: 0% 50%; perspective-origin: 0% 50%; transition: all 500ms ease, opacity 166.6666666667ms ease; -webkit-transform-origin: 0% 0%; -ms-transform-origin: 0% 0%; transform-origin: 0% 0%; -webkit-backface-visibility: hidden; backface-visibility: hidden; } [data-effeckt-type="curl"] li.past { opacity: 0; -webkit-transform: rotateY(90deg); transform: rotateY(90deg); } [data-effeckt-type="curl"] li.future { opacity: 0; -webkit-transform: rotateY(90deg); transform: rotateY(90deg); } [data-effeckt-type="wave"] li { transition: all 500ms cubic-bezier(0.26, 0.86, 0.44, 0.985); } [data-effeckt-type="wave"] li.past { -webkit-transform: translateX(-70%); -ms-transform: translateX(-70%); transform: translateX(-70%); } [data-effeckt-type="wave"] li.future { -webkit-transform: translateX(-70%); -ms-transform: translateX(-70%); transform: translateX(-70%); } [data-effeckt-type="fan"] li { transition: all 500ms cubic-bezier(0.39, 0.575, 0.565, 1); -webkit-transform-origin: 0% 0%; -ms-transform-origin: 0% 0%; transform-origin: 0% 0%; } [data-effeckt-type="fan"] li.past { -webkit-transform: rotate(-60deg); -ms-transform: rotate(-60deg); transform: rotate(-60deg); } [data-effeckt-type="fan"] li.future { -webkit-transform: rotate(70deg); -ms-transform: rotate(70deg); transform: rotate(70deg); } [data-effeckt-type="fade"] li { transition: opacity 250ms ease-in-out; } [data-effeckt-type="fade"] li.past, [data-effeckt-type="fade"] li.future { opacity: 0; } [data-effeckt-type="fly"] { -webkit-perspective: 400px; perspective: 400px; -webkit-perspective-origin: 50% 50%; perspective-origin: 50% 50%; } [data-effeckt-type="fly"] li { transition: all 500ms ease, opacity 250ms ease; -webkit-transform-origin: 50% 50% -50px; -ms-transform-origin: 50% 50% -50px; transform-origin: 50% 50% -50px; } [data-effeckt-type="fly"] li.past, [data-effeckt-type="fly"] li.future { opacity: 0; } [data-effeckt-type="fly"] li.past { -webkit-transform: rotateX(180deg); transform: rotateX(180deg); } [data-effeckt-type="fly"] li.future { -webkit-transform: rotateX(-180deg); transform: rotateX(-180deg); } [data-effeckt-type="landing"] { -webkit-perspective: 400px; perspective: 400px; -webkit-perspective-origin: 50% 50%; perspective-origin: 50% 50%; } [data-effeckt-type="landing"] li { transition: all 500ms ease, opacity 250ms ease; -webkit-transform-origin: 50% 50%; -ms-transform-origin: 50% 50%; transform-origin: 50% 50%; } [data-effeckt-type="landing"] li.past, [data-effeckt-type="landing"] li.future { opacity: 0; } [data-effeckt-type="landing"] li.past { -webkit-transform: scale(1.5) translate(10%, -50%); -ms-transform: scale(1.5) translate(10%, -50%); transform: scale(1.5) translate(10%, -50%); } [data-effeckt-type="landing"] li.future { -webkit-transform: scale(1.5) translate(-10%, 50%); -ms-transform: scale(1.5) translate(-10%, 50%); transform: scale(1.5) translate(-10%, 50%); } [data-effeckt-type="swing-front"] { -webkit-perspective: 400px; perspective: 400px; -webkit-perspective-origin: 50% 50%; perspective-origin: 50% 50%; } [data-effeckt-type="swing-front"] li { transition: all 500ms ease, opacity 250ms ease; } [data-effeckt-type="swing-front"] li.past, [data-effeckt-type="swing-front"] li.future { opacity: 0; } [data-effeckt-type="swing-front"] li.past { -webkit-transform-origin: bottom; -ms-transform-origin: bottom; transform-origin: bottom; -webkit-transform: rotateX(140deg); transform: rotateX(140deg); } [data-effeckt-type="swing-front"] li.future { -webkit-transform-origin: top; -ms-transform-origin: top; transform-origin: top; -webkit-transform: rotateX(-140deg); transform: rotateX(-140deg); } [data-effeckt-type="swing-back"] { -webkit-perspective: 400px; perspective: 400px; -webkit-perspective-origin: 50% 50%; perspective-origin: 50% 50%; } [data-effeckt-type="swing-back"] li { transition: all 500ms ease, opacity 250ms ease; } [data-effeckt-type="swing-back"] li.past, [data-effeckt-type="swing-back"] li.future { opacity: 0; } [data-effeckt-type="swing-back"] li.past { -webkit-transform-origin: bottom; -ms-transform-origin: bottom; transform-origin: bottom; -webkit-transform: rotateX(-140deg); transform: rotateX(-140deg); } [data-effeckt-type="swing-back"] li.future { -webkit-transform-origin: top; -ms-transform-origin: top; transform-origin: top; -webkit-transform: rotateX(140deg); transform: rotateX(140deg); } [data-effeckt-type="twist"] { -webkit-perspective: 400px; perspective: 400px; -webkit-perspective-origin: 50% 50%; perspective-origin: 50% 50%; } [data-effeckt-type="twist"] li { transition: all 500ms ease, opacity 250ms ease; -webkit-transform-origin: center; -ms-transform-origin: center; transform-origin: center; } [data-effeckt-type="twist"] li.past, [data-effeckt-type="twist"] li.future { opacity: 0; } [data-effeckt-type="twist"] li.past { -webkit-transform: rotateY(-180deg); transform: rotateY(-180deg); } [data-effeckt-type="twist"] li.future { -webkit-transform: rotateY(180deg); transform: rotateY(180deg); } [data-effeckt-type="door"] { -webkit-perspective: 400px; perspective: 400px; -webkit-perspective-origin: 50% 50%; perspective-origin: 50% 50%; } [data-effeckt-type="door"] li { transition: all 500ms ease, opacity 250ms ease; -webkit-transform-origin: 0% 0%; -ms-transform-origin: 0% 0%; transform-origin: 0% 0%; } [data-effeckt-type="door"] li.past, [data-effeckt-type="door"] li.future { opacity: 0; -webkit-transform: rotateY(-90deg); transform: rotateY(-90deg); } [data-effeckt-type="climb"] { -webkit-perspective: 400px; perspective: 400px; -webkit-perspective-origin: 50% 50%; perspective-origin: 50% 50%; } [data-effeckt-type="climb"] li { transition: all 500ms ease, opacity 250ms ease; -webkit-transform-origin: 0% 0%; -ms-transform-origin: 0% 0%; transform-origin: 0% 0%; } [data-effeckt-type="climb"] li.past { -webkit-transform: translateY(-200%); -ms-transform: translateY(-200%); transform: translateY(-200%); } [data-effeckt-type="climb"] li.future { -webkit-transform: translateY(200%); -ms-transform: translateY(200%); transform: translateY(200%); } .effeckt-modal-wrap { position: fixed; top: 50%; left: 50%; max-width: 320px; min-width: 320px; -webkit-transform: translate(-50%, -50%); -ms-transform: translate(-50%, -50%); transform: translate(-50%, -50%); z-index: 2000; visibility: hidden; -webkit-backface-visibility: hidden; backface-visibility: hidden; } .effeckt-modal-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; visibility: hidden; opacity: 0; transition-duration: 500ms; } .effeckt-show.effeckt-modal-wrap { visibility: visible; } .effeckt-show.effeckt-modal-wrap ~ .effeckt-modal-overlay { visibility: visible; opacity: 1; } .effeckt-modal { transition-property: all; transition-duration: 500ms; transition-timing-function: cubic-bezier(0.4, 0, 0, 1.5); -webkit-animation-duration: 1000ms; animation-duration: 1000ms; -webkit-animation-fill-mode: forwards; animation-fill-mode: forwards; -webkit-animation-timing-function: cubic-bezier(0.4, 0, 0, 1.5); animation-timing-function: cubic-bezier(0.4, 0, 0, 1.5); } .from-below .effeckt-content { -webkit-transform: scale(0.5); -ms-transform: scale(0.5); transform: scale(0.5); opacity: 0; } .effeckt-show.from-below .effeckt-content { -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1); opacity: 1; } .from-above .effeckt-content { -webkit-transform: scale(1.5); -ms-transform: scale(1.5); transform: scale(1.5); opacity: 0; } .effeckt-show.from-above .effeckt-content { -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1); opacity: 1; } .to-below .effeckt-content { -webkit-transform: scale(0.5); -ms-transform: scale(0.5); transform: scale(0.5); opacity: 0; } .to-above .effeckt-content { -webkit-transform: scale(1.5); -ms-transform: scale(1.5); transform: scale(1.5); opacity: 0; } .slide-in-top .effeckt-content { -webkit-transform: translate3d(0, -100%, 0); transform: translate3d(0, -100%, 0); opacity: 0; } .effeckt-show.slide-in-top .effeckt-content { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); opacity: 1; } .slide-in-right .effeckt-content { -webkit-transform: translate3d(30%, 0, 0); transform: translate3d(30%, 0, 0); opacity: 0; } .effeckt-show.slide-in-right .effeckt-content { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); opacity: 1; } .slide-in-bottom .effeckt-content { -webkit-transform: translate3d(0, 30%, 0); transform: translate3d(0, 30%, 0); opacity: 0; } .effeckt-show.slide-in-bottom .effeckt-content { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); opacity: 1; } .slide-in-left .effeckt-content { -webkit-transform: translate3d(-30%, 0, 0); transform: translate3d(-30%, 0, 0); opacity: 0; } .effeckt-show.slide-in-left .effeckt-content { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); opacity: 1; } .sticky-up { top: 0; -webkit-transform: translate(-50%, 0); -ms-transform: translate(-50%, 0); transform: translate(-50%, 0); } .sticky-up .effeckt-content { -webkit-transform: translate3d(0, -100%, 0); transform: translate3d(0, -100%, 0); opacity: 0; } .effeckt-show.sticky-up .effeckt-content { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); opacity: 1; } .slip-in-from-top ~ [data-effeckt-page], .slip-in-from-top ~ .effeckt-overlay { -webkit-transform-style: preserve-3d; transform-style: preserve-3d; -webkit-transform-origin: 50% 100%; -ms-transform-origin: 50% 100%; transform-origin: 50% 100%; } .slip-in-from-top .effeckt-content { -webkit-transform: translateY(-200%); -ms-transform: translateY(-200%); transform: translateY(-200%); opacity: 0; } .effeckt-show.slip-in-from-top ~ [data-effeckt-page], .effeckt-show.slip-in-from-top ~ .effeckt-overlay { -webkit-animation: OpenTop 500ms forwards ease-in; animation: OpenTop 500ms forwards ease-in; } .effeckt-show.slip-in-from-top .effeckt-content { -webkit-transform: translateY(0); -ms-transform: translateY(0); transform: translateY(0); opacity: 1; } @-webkit-keyframes OpenTop { 50% { -webkit-transform: rotateX(10deg); transform: rotateX(10deg); -webkit-animation-timing-function: ease-out; animation-timing-function: ease-out; } } @keyframes OpenTop { 50% { -webkit-transform: rotateX(10deg); transform: rotateX(10deg); -webkit-animation-timing-function: ease-out; animation-timing-function: ease-out; } } .slide-out-bottom .effeckt-content { -webkit-transform: translateY(100%); -ms-transform: translateY(100%); transform: translateY(100%); opacity: 0; } .slide-out-top .effeckt-content { -webkit-transform: translateY(-100%); -ms-transform: translateY(-100%); transform: translateY(-100%); opacity: 0; } .slide-out-right .effeckt-content { -webkit-transform: translateX(100%); -ms-transform: translateX(100%); transform: translateX(100%); opacity: 0; } .slide-out-left .effeckt-content { -webkit-transform: translateX(-100%); -ms-transform: translateX(-100%); transform: translateX(-100%); opacity: 0; } .flip-horizontal-3D { -webkit-perspective: 600px; perspective: 600px; } .flip-horizontal-3D .effeckt-content { -webkit-transform: rotateY(-70deg); transform: rotateY(-70deg); -webkit-transform-style: preserve-3d; transform-style: preserve-3d; opacity: 0; } .effeckt-show.flip-horizontal-3D .effeckt-content { -webkit-transform: rotateY(0deg); transform: rotateY(0deg); opacity: 1; } .flip-vertical-3D { -webkit-perspective: 600px; perspective: 600px; } .flip-vertical-3D .effeckt-content { -webkit-transform: rotateX(-70deg); transform: rotateX(-70deg); -webkit-transform-style: preserve-3d; transform-style: preserve-3d; opacity: 0; } .effeckt-show.flip-vertical-3D .effeckt-content { -webkit-transform: rotateX(0deg); transform: rotateX(0deg); opacity: 1; } .sign-3D { -webkit-perspective: 600px; perspective: 600px; } .sign-3D .effeckt-content { -webkit-transform: rotateX(-60deg); transform: rotateX(-60deg); -webkit-transform-origin: 50% 0; -ms-transform-origin: 50% 0; transform-origin: 50% 0; -webkit-transform-style: preserve-3d; transform-style: preserve-3d; opacity: 0; } .effeckt-show.sign-3D .effeckt-content { -webkit-transform: rotateX(0deg); transform: rotateX(0deg); opacity: 1; } .slit-3D { -webkit-perspective: 600px; perspective: 600px; } .slit-3D .effeckt-content { -webkit-transform: translateZ(-3000px) rotateY(90deg); transform: translateZ(-3000px) rotateY(90deg); -webkit-transform-style: preserve-3d; transform-style: preserve-3d; opacity: 0; } .effeckt-show.slit-3D .effeckt-content { -webkit-animation: modalSlit 0.7s forwards ease-out; animation: modalSlit 0.7s forwards ease-out; } @-webkit-keyframes modalSlit { 50% { -webkit-transform: translateZ(-250px) rotateY(89deg); transform: translateZ(-250px) rotateY(89deg); opacity: 0.75; -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; } 100% { -webkit-transform: translateZ(0) rotateY(0deg); transform: translateZ(0) rotateY(0deg); opacity: 1; } } @keyframes modalSlit { 50% { -webkit-transform: translateZ(-250px) rotateY(89deg); transform: translateZ(-250px) rotateY(89deg); opacity: 0.75; -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; } 100% { -webkit-transform: translateZ(0) rotateY(0deg); transform: translateZ(0) rotateY(0deg); opacity: 1; } } .rotate-from-bottom-3D { -webkit-perspective: 600px; perspective: 600px; } .rotate-from-bottom-3D .effeckt-content { -webkit-transform: translateY(100%) rotateX(90deg); transform: translateY(100%) rotateX(90deg); -webkit-transform-style: preserve-3d; transform-style: preserve-3d; -webkit-transform-origin: 0 100%; -ms-transform-origin: 0 100%; transform-origin: 0 100%; opacity: 0; } .effeckt-show.rotate-from-bottom-3D .effeckt-content { -webkit-transform: translateY(0%) rotateX(0deg); transform: translateY(0%) rotateX(0deg); opacity: 1; } .rotate-from-left-3D { -webkit-perspective: 600px; perspective: 600px; } .rotate-from-left-3D .effeckt-content { -webkit-transform: translateZ(100px) translateX(-30%) rotateY(90deg); transform: translateZ(100px) translateX(-30%) rotateY(90deg); -webkit-transform-style: preserve-3d; transform-style: preserve-3d; -webkit-transform-origin: 0 100%; -ms-transform-origin: 0 100%; transform-origin: 0 100%; opacity: 0; } .effeckt-show.rotate-from-left-3D .effeckt-content { -webkit-transform: translateZ(0px) translateX(0%) rotateY(0deg); transform: translateZ(0px) translateX(0%) rotateY(0deg); opacity: 1; } .let-me-in ~ [data-effeckt-page].effeckt-page-active { transition: 500ms; -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); -webkit-transform-origin: 50% 0%; -ms-transform-origin: 50% 0%; transform-origin: 50% 0%; -webkit-transform-style: preserve-3d; transform-style: preserve-3d; } .let-me-in .effeckt-content { opacity: 0; -webkit-transform: translate3d(0, 200%, 0); transform: translate3d(0, 200%, 0); } .effeckt-show.let-me-in ~ [data-effeckt-page].effeckt-page-active { -webkit-transform: rotateX(-7deg); transform: rotateX(-7deg); opacity: 1; } .effeckt-show.let-me-in ~ [data-effeckt-page].effeckt-page-active:after { opacity: 1; visibility: visible; } .effeckt-show.let-me-in .effeckt-content { -webkit-transform: translate3d(0, -50%, 0); transform: translate3d(0, -50%, 0); opacity: 1; } .make-way { -webkit-perspective: 600px; perspective: 600px; } .make-way ~ [data-effeckt-page].effeckt-page-active { -webkit-transform-style: preserve-3d; transform-style: preserve-3d; -webkit-transform-origin: 0% 50%; -ms-transform-origin: 0% 50%; transform-origin: 0% 50%; } .make-way .effeckt-content { -webkit-transform: translate3d(200%, 0, 0); transform: translate3d(200%, 0, 0); opacity: 0; } .effeckt-show.make-way ~ [data-effeckt-page].effeckt-page-active { -webkit-animation: makeWay 500ms forwards ease-in; animation: makeWay 500ms forwards ease-in; } .effeckt-show.make-way .effeckt-content { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); opacity: 1; } @-webkit-keyframes makeWay { 50% { -webkit-transform: translate3d(0, 0, -50px) rotateY(5deg); transform: translate3d(0, 0, -50px) rotateY(5deg); } 100% { -webkit-transform: translate3d(0, 0, -200px); transform: translate3d(0, 0, -200px); } } @keyframes makeWay { 50% { -webkit-transform: translate3d(0, 0, -50px) rotateY(5deg); transform: translate3d(0, 0, -50px) rotateY(5deg); } 100% { -webkit-transform: translate3d(0, 0, -200px); transform: translate3d(0, 0, -200px); } } .deep-content .effeckt-content { -webkit-transform: scale(0.8); -ms-transform: scale(0.8); transform: scale(0.8); opacity: 0; } .effeckt-show.deep-content .effeckt-content { -webkit-transform: scale(1.1); -ms-transform: scale(1.1); transform: scale(1.1); opacity: 1; } .deep-content ~ [data-effeckt-page].effeckt-page-active { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); transition: 500ms; } .effeckt-show.deep-content ~ [data-effeckt-page].effeckt-page-active { -webkit-transform: translate3d(0, 0, -85px); transform: translate3d(0, 0, -85px); -webkit-filter: blur(3px); filter: blur(3px); } .newspaper .effeckt-content { -webkit-transform: scale(0.5) rotate(720deg); -ms-transform: scale(0.5) rotate(720deg); transform: scale(0.5) rotate(720deg); opacity: 0; } .effeckt-show.newspaper .effeckt-content { -webkit-transform: scale(1) rotate(0deg); -ms-transform: scale(1) rotate(0deg); transform: scale(1) rotate(0deg); opacity: 1; } .side-fall { -webkit-perspective: 600px; perspective: 600px; -webkit-transform-style: preserve-3d; transform-style: preserve-3d; } .side-fall .effeckt-content { transition-timing-function: ease-out; -webkit-transform: translateZ(600px) translateX(30%) rotate(10deg); transform: translateZ(600px) translateX(30%) rotate(10deg); opacity: 0; } .effeckt-show.side-fall .effeckt-content { transition-timing-function: ease-in; -webkit-transform: translateZ(0) translateX(0) rotate(0deg); transform: translateZ(0) translateX(0) rotate(0deg); opacity: 1; } .fade-in .effeckt-content { opacity: 0; } .effeckt-show.fade-in .effeckt-content { opacity: 1; } .effeckt-show.blur ~ [data-effeckt-page] { -webkit-filter: blur(3px); filter: blur(3px); -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } .blur .effeckt-content { opacity: 0; } .effeckt-show.blur ~ [data-effeckt-page] { transition: all 500ms ease; } .effeckt-show.blur .effeckt-content { opacity: 1; } .tilt-fall .effeckt-content { -webkit-transform: translateY(100%) rotate(-25deg); -ms-transform: translateY(100%) rotate(-25deg); transform: translateY(100%) rotate(-25deg); opacity: 0; } .shake .effeckt-content { opacity: 0; } .effeckt-show.shake .effeckt-content { opacity: 1; -webkit-animation-name: shake; animation-name: shake; -webkit-animation-timing-function: ease; animation-timing-function: ease; } @-webkit-keyframes shake { 0%, 100% { -webkit-transform: translateX(0); transform: translateX(0); } 10%, 30%, 50%, 70%, 90% { -webkit-transform: translateX(-10px); transform: translateX(-10px); } 20%, 40%, 60%, 80% { -webkit-transform: translateX(10px); transform: translateX(10px); } } @keyframes shake { 0%, 100% { -webkit-transform: translateX(0); transform: translateX(0); } 10%, 30%, 50%, 70%, 90% { -webkit-transform: translateX(-10px); transform: translateX(-10px); } 20%, 40%, 60%, 80% { -webkit-transform: translateX(10px); transform: translateX(10px); } } .bounce .effeckt-content { opacity: 0; } .effeckt-show.bounce .effeckt-content { opacity: 1; -webkit-animation-name: bounce; animation-name: bounce; -webkit-animation-timing-function: ease; animation-timing-function: ease; } @-webkit-keyframes bounce { 0%, 20%, 50%, 80%, 100% { -webkit-transform: translateY(0); transform: translateY(0); } 40% { -webkit-transform: translateY(-30px); transform: translateY(-30px); } 60% { -webkit-transform: translateY(-15px); transform: translateY(-15px); } } @keyframes bounce { 0%, 20%, 50%, 80%, 100% { -webkit-transform: translateY(0); transform: translateY(0); } 40% { -webkit-transform: translateY(-30px); transform: translateY(-30px); } 60% { -webkit-transform: translateY(-15px); transform: translateY(-15px); } } .pulse .effeckt-content { opacity: 0; } .effeckt-show.pulse .effeckt-content { opacity: 1; -webkit-animation-name: pulse; animation-name: pulse; -webkit-animation-timing-function: ease; animation-timing-function: ease; } @-webkit-keyframes pulse { 0% { -webkit-transform: scale(1); transform: scale(1); } 50% { -webkit-transform: scale(1.1); transform: scale(1.1); } 100% { -webkit-transform: scale(1); transform: scale(1); } } @keyframes pulse { 0% { -webkit-transform: scale(1); transform: scale(1); } 50% { -webkit-transform: scale(1.1); transform: scale(1.1); } 100% { -webkit-transform: scale(1); transform: scale(1); } } .wobble .effeckt-content { opacity: 0; } .effeckt-show.wobble .effeckt-content { opacity: 1; -webkit-animation-name: wobble; animation-name: wobble; -webkit-animation-timing-function: ease; animation-timing-function: ease; } @-webkit-keyframes wobble { 0% { -webkit-transform: translateX(0%); transform: translateX(0%); } 15% { -webkit-transform: translateX(-25%) rotate(-5deg); transform: translateX(-25%) rotate(-5deg); } 30% { -webkit-transform: translateX(20%) rotate(3deg); transform: translateX(20%) rotate(3deg); } 45% { -webkit-transform: translateX(-15%) rotate(-3deg); transform: translateX(-15%) rotate(-3deg); } 60% { -webkit-transform: translateX(10%) rotate(2deg); transform: translateX(10%) rotate(2deg); } 75% { -webkit-transform: translateX(-5%) rotate(-1deg); transform: translateX(-5%) rotate(-1deg); } 100% { -webkit-transform: translateX(0%); transform: translateX(0%); } } @keyframes wobble { 0% { -webkit-transform: translateX(0%); transform: translateX(0%); } 15% { -webkit-transform: translateX(-25%) rotate(-5deg); transform: translateX(-25%) rotate(-5deg); } 30% { -webkit-transform: translateX(20%) rotate(3deg); transform: translateX(20%) rotate(3deg); } 45% { -webkit-transform: translateX(-15%) rotate(-3deg); transform: translateX(-15%) rotate(-3deg); } 60% { -webkit-transform: translateX(10%) rotate(2deg); transform: translateX(10%) rotate(2deg); } 75% { -webkit-transform: translateX(-5%) rotate(-1deg); transform: translateX(-5%) rotate(-1deg); } 100% { -webkit-transform: translateX(0%); transform: translateX(0%); } } .swing .effeckt-content { -webkit-transform-origin: 50% 0%; -ms-transform-origin: 50% 0%; transform-origin: 50% 0%; opacity: 0; } .effeckt-show.swing .effeckt-content { opacity: 1; -webkit-animation-name: swing; animation-name: swing; -webkit-animation-timing-function: ease; animation-timing-function: ease; } @-webkit-keyframes swing { 20% { -webkit-transform: rotate(15deg); transform: rotate(15deg); } 40% { -webkit-transform: rotate(-10deg); transform: rotate(-10deg); } 60% { -webkit-transform: rotate(5deg); transform: rotate(5deg); } 80% { -webkit-transform: rotate(-5deg); transform: rotate(-5deg); } 100% { -webkit-transform: rotate(0deg); transform: rotate(0deg); } } @keyframes swing { 20% { -webkit-transform: rotate(15deg); transform: rotate(15deg); } 40% { -webkit-transform: rotate(-10deg); transform: rotate(-10deg); } 60% { -webkit-transform: rotate(5deg); transform: rotate(5deg); } 80% { -webkit-transform: rotate(-5deg); transform: rotate(-5deg); } 100% { -webkit-transform: rotate(0deg); transform: rotate(0deg); } } .tada .effeckt-content { opacity: 0; } .effeckt-show.tada .effeckt-content { opacity: 1; -webkit-animation-name: tada; animation-name: tada; -webkit-animation-timing-function: ease; animation-timing-function: ease; } @-webkit-keyframes tada { 0% { -webkit-transform: scale(1); transform: scale(1); } 10%, 20% { -webkit-transform: scale(0.9) rotate(-3deg); transform: scale(0.9) rotate(-3deg); } 30%, 50%, 70%, 90% { -webkit-transform: scale(1.1) rotate(3deg); transform: scale(1.1) rotate(3deg); } 40%, 60%, 80% { -webkit-transform: scale(1.1) rotate(-3deg); transform: scale(1.1) rotate(-3deg); } 100% { -webkit-transform: scale(1) rotate(0); transform: scale(1) rotate(0); } } @keyframes tada { 0% { -webkit-transform: scale(1); transform: scale(1); } 10%, 20% { -webkit-transform: scale(0.9) rotate(-3deg); transform: scale(0.9) rotate(-3deg); } 30%, 50%, 70%, 90% { -webkit-transform: scale(1.1) rotate(3deg); transform: scale(1.1) rotate(3deg); } 40%, 60%, 80% { -webkit-transform: scale(1.1) rotate(-3deg); transform: scale(1.1) rotate(-3deg); } 100% { -webkit-transform: scale(1) rotate(0); transform: scale(1) rotate(0); } } .effeckt-off-screen-nav ~ [data-effeckt-page].effeckt-page-active:after { position: absolute; top: 0; left: 0; width: 100%; height: 100%; content: ""; background: rgba(0, 0, 0, 0.2); opacity: 0; visibility: hidden; transition: 500ms; } .effeckt-off-screen-nav.effeckt-show ~ [data-effeckt-page].effeckt-page-active:after { opacity: 1; visibility: visible; } .effeckt-off-screen-nav-left-overlay { -webkit-transform: translateX(-100%); -ms-transform: translateX(-100%); transform: translateX(-100%); transition: 500ms cubic-bezier(0.09, 0.68, 0, 0.99); } .effeckt-off-screen-nav-left-overlay.effeckt-show { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); } .effeckt-off-screen-nav-left-push { -webkit-transform: translateX(-12rem); -ms-transform: translateX(-12rem); transform: translateX(-12rem); transition: 500ms; } .effeckt-off-screen-nav-left-push.effeckt-show { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); } .effeckt-off-screen-nav-left-push.effeckt-show ~ [data-effeckt-page].effeckt-page-active { -webkit-transform: translateX(12rem); -ms-transform: translateX(12rem); transform: translateX(12rem); } .effeckt-off-screen-nav-left-push ~ [data-effeckt-page].effeckt-page-active { transition: 500ms; -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); } .effeckt-off-screen-nav-left-reveal { width: 0px; -webkit-transform: translate3D(0, 0, 0); -ms-transform: translate3D(0, 0, 0); transform: translate3D(0, 0, 0); transition: 500ms; } .effeckt-off-screen-nav-left-reveal h4 { width: 10rem; } .effeckt-off-screen-nav-left-reveal.effeckt-show { width: 12rem; -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); } .effeckt-off-screen-nav-left-reveal.effeckt-show ~ [data-effeckt-page] { -webkit-transform: translateX(12rem); -ms-transform: translateX(12rem); transform: translateX(12rem); } .effeckt-off-screen-nav-left-reveal ~ [data-effeckt-page] { transition: 500ms; } .effeckt-off-screen-nav-left-squeeze { width: 40%; -webkit-transform: translateX(-100%); -ms-transform: translateX(-100%); transform: translateX(-100%); transition: 500ms; } .effeckt-off-screen-nav-left-squeeze.effeckt-show { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); } .effeckt-off-screen-nav-left-squeeze.effeckt-show ~ [data-effeckt-page] { width: 60%; } .effeckt-off-screen-nav-left-squeeze ~ [data-effeckt-page] { float: right; transition: width 500ms; max-width: none; } .effeckt-off-screen-nav-right-overlay { right: 0; left: auto; -webkit-transform: translateX(100%); -ms-transform: translateX(100%); transform: translateX(100%); transition: 500ms cubic-bezier(0.09, 0.68, 0, 0.99); } .effeckt-off-screen-nav-right-overlay.effeckt-show { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); } .effeckt-off-screen-nav-right-push { left: auto; right: 0; -webkit-transform: translateX(12rem); -ms-transform: translateX(12rem); transform: translateX(12rem); transition: 500ms; } .effeckt-off-screen-nav-right-push.effeckt-show { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); } .effeckt-off-screen-nav-right-push.effeckt-show ~ [data-effeckt-page] { -webkit-transform: translateX(-12rem); -ms-transform: translateX(-12rem); transform: translateX(-12rem); } .effeckt-off-screen-nav-right-push ~ [data-effeckt-page] { transition: 500ms; } .effeckt-off-screen-nav-right-reveal { width: 0; overflow: hidden; left: auto; right: 0; -webkit-transform: translate3D(0, 0, 0); -ms-transform: translate3D(0, 0, 0); transform: translate3D(0, 0, 0); transition: 500ms; } .effeckt-off-screen-nav-right-reveal h4 { width: 10rem; position: absolute; top: 0px; right: 0; } .effeckt-off-screen-nav-right-reveal ul { width: 12rem; position: absolute; top: 3.2rem; right: 0; } .effeckt-off-screen-nav-right-reveal.effeckt-show { width: 12rem; } .effeckt-off-screen-nav-right-reveal.effeckt-show ~ [data-effeckt-page] { -webkit-transform: translateX(-12rem); -ms-transform: translateX(-12rem); transform: translateX(-12rem); } .effeckt-off-screen-nav-right-reveal ~ [data-effeckt-page] { transition: 500ms; } .effeckt-off-screen-nav-right-squeeze { left: auto; right: 0; width: 40%; -webkit-transform: translateX(100%); -ms-transform: translateX(100%); transform: translateX(100%); transition: 500ms; } .effeckt-off-screen-nav-right-squeeze.effeckt-show { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); } .effeckt-off-screen-nav-right-squeeze.effeckt-show ~ [data-effeckt-page] { width: 60%; } .effeckt-off-screen-nav-right-squeeze ~ [data-effeckt-page] { float: left; transition: width 500ms; max-width: none; } .effeckt-off-screen-nav-left-rotate { -webkit-transform-origin: 100% 50%; -ms-transform-origin: 100% 50%; transform-origin: 100% 50%; transition: 500ms; -webkit-transform: translateX(-100%) scale(1.01) rotateY(-30deg); transform: translateX(-100%) scale(1.01) rotateY(-30deg); } .effeckt-off-screen-nav-left-rotate ~ [data-effeckt-page].effeckt-page-active { -webkit-transform-origin: 0 50%; -ms-transform-origin: 0 50%; transform-origin: 0 50%; transition: 500ms; } .effeckt-off-screen-nav-left-rotate ~ .effeckt-overlay { z-index: 900; visibility: visible; opacity: 1; } .effeckt-off-screen-nav-left-rotate.effeckt-show { -webkit-transform: none; -ms-transform: none; transform: none; } .effeckt-off-screen-nav-left-rotate.effeckt-show ~ [data-effeckt-page].effeckt-page-active { -webkit-transform: translateX(260px) rotateY(15deg); transform: translateX(260px) rotateY(15deg); overflow: hidden; } .effeckt-off-screen-nav-left-rotate.effeckt-show ~ [data-effeckt-page].effeckt-page-active:after { background: none; } .effeckt-off-screen-nav-left-rotate.effeckt-show ~ [data-effeckt-page] .off-screen-nav-cover { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } .effeckt-off-screen-nav-top-overlay { width: 100%; bottom: auto; transition: 500ms; -webkit-transform: translateY(-100%); -ms-transform: translateY(-100%); transform: translateY(-100%); } .effeckt-off-screen-nav-top-overlay.effeckt-show { visibility: visible; -webkit-transform: translateY(0%); -ms-transform: translateY(0%); transform: translateY(0%); } .effeckt-off-screen-nav-bottom-overlay { width: 100%; top: auto; transition: 500ms; -webkit-transform: translateY(100%); -ms-transform: translateY(100%); transform: translateY(100%); } .effeckt-off-screen-nav-bottom-overlay.effeckt-show { -webkit-transform: translateY(0%); -ms-transform: translateY(0%); transform: translateY(0%); } .effeckt-off-screen-nav-top-bounce { width: 100%; bottom: auto; transition: 500ms; } .effeckt-off-screen-nav-top-bounce.effeckt-show { visibility: visible; -webkit-animation: navFromTopBounceIn 500ms both ease; animation: navFromTopBounceIn 500ms both ease; } .effeckt-off-screen-nav-top-bounce.effeckt-hide { -webkit-animation: navFromTopBounceOut 500ms both ease; animation: navFromTopBounceOut 500ms both ease; } .effeckt-off-screen-nav-top-bounce-out { width: 100%; bottom: auto; -webkit-transform: translateY(-100%); -ms-transform: translateY(-100%); transform: translateY(-100%); transition: 500ms; } .effeckt-off-screen-nav-top-bounce-out.effeckt-show { visibility: visible; -webkit-transform: translateY(0%); -ms-transform: translateY(0%); transform: translateY(0%); } .effeckt-off-screen-nav-top-bounce-out.effeckt-hide { -webkit-animation: navFromTopBounceOut 500ms both ease; animation: navFromTopBounceOut 500ms both ease; } @-webkit-keyframes navFromTopBounceIn { 0% { -webkit-transform: translateY(-100%); transform: translateY(-100%); } 20% { padding-top: 0px; -webkit-transform: translateY(0%); transform: translateY(0%); } 60% { padding-top: 20px; } 100% { padding-top: 0; } } @keyframes navFromTopBounceIn { 0% { -webkit-transform: translateY(-100%); transform: translateY(-100%); } 20% { padding-top: 0px; -webkit-transform: translateY(0%); transform: translateY(0%); } 60% { padding-top: 20px; } 100% { padding-top: 0; } } @-webkit-keyframes navFromTopBounceOut { 0% { -webkit-transform: translateY(0%); transform: translateY(0%); padding-top: 0px; } 40% { -webkit-transform: translateY(0%); transform: translateY(0%); padding-top: 20px; } 80% { padding-top: 0px; } 90%, 100% { -webkit-transform: translateY(-100%); transform: translateY(-100%); } } @keyframes navFromTopBounceOut { 0% { -webkit-transform: translateY(0%); transform: translateY(0%); padding-top: 0px; } 40% { -webkit-transform: translateY(0%); transform: translateY(0%); padding-top: 20px; } 80% { padding-top: 0px; } 90%, 100% { -webkit-transform: translateY(-100%); transform: translateY(-100%); } } .effeckt-off-screen-nav-bottom-bounce { width: 100%; top: auto; transition: 500ms; } .effeckt-off-screen-nav-bottom-bounce.effeckt-show { -webkit-animation: navFromBottomBounceIn 500ms both ease; animation: navFromBottomBounceIn 500ms both ease; } .effeckt-off-screen-nav-bottom-bounce.effeckt-hide { -webkit-animation: navFromBottomBounceOut 500ms both ease; animation: navFromBottomBounceOut 500ms both ease; } .effeckt-off-screen-nav-bottom-bounce-out { width: 100%; top: auto; -webkit-transform: translateY(100%); -ms-transform: translateY(100%); transform: translateY(100%); transition: 500ms; } .effeckt-off-screen-nav-bottom-bounce-out.effeckt-show { -webkit-transform: translateY(0%); -ms-transform: translateY(0%); transform: translateY(0%); } .effeckt-off-screen-nav-bottom-bounce-out.effeckt-hide { -webkit-animation: navFromBottomBounceOut 500ms both ease; animation: navFromBottomBounceOut 500ms both ease; } @-webkit-keyframes navFromBottomBounceIn { 0% { -webkit-transform: translateY(100%); transform: translateY(100%); } 20% { padding-bottom: 0px; -webkit-transform: translateY(0%); transform: translateY(0%); } 60% { padding-bottom: 20px; } 100% { padding-bottom: 0; } } @keyframes navFromBottomBounceIn { 0% { -webkit-transform: translateY(100%); transform: translateY(100%); } 20% { padding-bottom: 0px; -webkit-transform: translateY(0%); transform: translateY(0%); } 60% { padding-bottom: 20px; } 100% { padding-bottom: 0; } } @-webkit-keyframes navFromBottomBounceOut { 0% { -webkit-transform: translateY(0%); transform: translateY(0%); padding-bottom: 0px; } 40% { -webkit-transform: translateY(0%); transform: translateY(0%); padding-bottom: 20px; } 80% { padding-bottom: 0; } 90%, 100% { -webkit-transform: translateY(100%); transform: translateY(100%); } } @keyframes navFromBottomBounceOut { 0% { -webkit-transform: translateY(0%); transform: translateY(0%); padding-bottom: 0px; } 40% { -webkit-transform: translateY(0%); transform: translateY(0%); padding-bottom: 20px; } 80% { padding-bottom: 0; } 90%, 100% { -webkit-transform: translateY(100%); transform: translateY(100%); } } .effeckt-off-screen-nav-push-top { width: 100%; bottom: auto; transition: 500ms; -webkit-transform: translateY(-100%); -ms-transform: translateY(-100%); transform: translateY(-100%); } .effeckt-off-screen-nav-push-top.effeckt-show { visibility: visible; -webkit-transform: translateY(0%); -ms-transform: translateY(0%); transform: translateY(0%); } .effeckt-off-screen-nav-push-top.effeckt-show ~ [data-effeckt-page] { -webkit-transform: translateY(12rem); -ms-transform: translateY(12rem); transform: translateY(12rem); } .effeckt-off-screen-nav-push-top ~ [data-effeckt-page] { transition: 500ms; } .effeckt-off-screen-nav-push-bottom { width: 100%; top: auto; transition: 500ms; -webkit-transform: translateY(100%); -ms-transform: translateY(100%); transform: translateY(100%); } .effeckt-off-screen-nav-push-bottom.effeckt-show { visibility: visible; -webkit-transform: translateY(0%); -ms-transform: translateY(0%); transform: translateY(0%); } .effeckt-off-screen-nav-push-bottom.effeckt-show ~ [data-effeckt-page] { -webkit-transform: translateY(-12rem); -ms-transform: translateY(-12rem); transform: translateY(-12rem); } .effeckt-off-screen-nav-push-bottom ~ [data-effeckt-page] { transition: 500ms; } .effeckt-off-screen-nav-right-rotate { left: auto; right: 0; -webkit-transform-origin: 100% 50%; -ms-transform-origin: 100% 50%; transform-origin: 100% 50%; transition: 500ms; -webkit-transform: rotateY(30deg) translateX(100%) scale(1.01); transform: rotateY(30deg) translateX(100%) scale(1.01); } .effeckt-off-screen-nav-right-rotate ~ [data-effeckt-page] { -webkit-transform-origin: 100% 50%; -ms-transform-origin: 100% 50%; transform-origin: 100% 50%; transition: 500ms; } .effeckt-off-screen-nav-right-rotate ~ .effeckt-overlay { z-index: 900; visibility: visible; opacity: 1; } .effeckt-off-screen-nav-right-rotate.effeckt-show { -webkit-transform: none; -ms-transform: none; transform: none; } .effeckt-off-screen-nav-right-rotate.effeckt-show ~ [data-effeckt-page] { -webkit-transform: translateX(-260px) rotateY(-15deg); transform: translateX(-260px) rotateY(-15deg); overflow: hidden; } .effeckt-off-screen-nav-right-rotate.effeckt-show ~ [data-effeckt-page]:after { background: none; } .effeckt-off-screen-nav-right-rotate.effeckt-show ~ [data-effeckt-page] .off-screen-nav-cover { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } .effeckt-off-screen-nav-top-card-deck { -webkit-perspective: 800px; perspective: 800px; bottom: auto; -webkit-transform: translateY(-100%); -ms-transform: translateY(-100%); transform: translateY(-100%); width: 100%; overflow: visible; transition: -webkit-transform 250ms; transition: transform 250ms; } .effeckt-off-screen-nav-top-card-deck.effeckt-show { -webkit-transform: translateY(0%); -ms-transform: translateY(0%); transform: translateY(0%); } .effeckt-off-screen-nav-top-card-deck h4 { position: relative; z-index: 300; -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-transform-style: preserve-3d; transform-style: preserve-3d; -webkit-transform-origin: 50% 0%; -ms-transform-origin: 50% 0%; transform-origin: 50% 0%; transition: all 250ms ease-out; display: block; } .effeckt-off-screen-nav-top-card-deck h4:active { -webkit-transform: rotateX(60deg); transform: rotateX(60deg); } .effeckt-off-screen-nav-top-card-deck ul { position: absolute; width: 100%; height: 100%; top: 0; margin: 0; } .effeckt-off-screen-nav-top-card-deck ul li { transition: all 250ms ease-out; position: absolute; top: 0; z-index: 0; width: 100%; height: 100%; -webkit-transform: translateY(0px); -ms-transform: translateY(0px); transform: translateY(0px); } .effeckt-off-screen-nav-bottom-card-deck { -webkit-perspective: 800px; perspective: 800px; top: auto; -webkit-transform: translateY(100%); -ms-transform: translateY(100%); transform: translateY(100%); width: 100%; overflow: visible; transition: -webkit-transform 250ms; transition: transform 250ms; } .effeckt-off-screen-nav-bottom-card-deck.effeckt-show { -webkit-transform: translateY(0%); -ms-transform: translateY(0%); transform: translateY(0%); } .effeckt-off-screen-nav-bottom-card-deck h4 { position: relative; z-index: 300; -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-transform-style: preserve-3d; transform-style: preserve-3d; -webkit-transform-origin: 50% 100%; -ms-transform-origin: 50% 100%; transform-origin: 50% 100%; transition: all 250ms ease-out; display: block; } .effeckt-off-screen-nav-bottom-card-deck h4:active { -webkit-transform: rotateX(-60deg); transform: rotateX(-60deg); } .effeckt-off-screen-nav-bottom-card-deck ul { position: absolute; width: 100%; height: 100%; bottom: 0; margin: 0; } .effeckt-off-screen-nav-bottom-card-deck ul li { transition: all 250ms ease-out; position: absolute; top: 0; z-index: 0; width: 100%; height: 100%; -webkit-transform: translateY(300px); -ms-transform: translateY(300px); transform: translateY(300px); } .effeckt-off-screen-nav-left-bounce { transition: 500ms; -webkit-transform: translateX(-100%); -ms-transform: translateX(-100%); transform: translateX(-100%); } .effeckt-off-screen-nav-left-bounce.effeckt-show { visibility: visible; -webkit-transform: translateX(0%); -ms-transform: translateX(0%); transform: translateX(0%); -webkit-animation: navFromLeftBounceIn 500ms both ease; animation: navFromLeftBounceIn 500ms both ease; } .effeckt-off-screen-nav-left-bounce.effeckt-hide { -webkit-transform: translateX(-100%); -ms-transform: translateX(-100%); transform: translateX(-100%); -webkit-animation: navFromLeftBounceOut 500ms both ease; animation: navFromLeftBounceOut 500ms both ease; } @-webkit-keyframes navFromLeftBounceIn { 0% { -webkit-transform: translateX(-100%); transform: translateX(-100%); } 20% { padding-left: 0px; -webkit-transform: translateX(0%); transform: translateX(0%); } 60% { padding-left: 20px; } 100% { padding-left: 0px; } } @keyframes navFromLeftBounceIn { 0% { -webkit-transform: translateX(-100%); transform: translateX(-100%); } 20% { padding-left: 0px; -webkit-transform: translateX(0%); transform: translateX(0%); } 60% { padding-left: 20px; } 100% { padding-left: 0px; } } @-webkit-keyframes navFromLeftBounceOut { 0% { -webkit-transform: translateX(0%); transform: translateX(0%); padding-left: 0px; } 40% { -webkit-transform: translateX(0%); transform: translateX(0%); padding-left: 20px; } 80% { padding-left: 0px; } 90%, 100% { -webkit-transform: translateX(-100%); transform: translateX(-100%); } } @keyframes navFromLeftBounceOut { 0% { -webkit-transform: translateX(0%); transform: translateX(0%); padding-left: 0px; } 40% { -webkit-transform: translateX(0%); transform: translateX(0%); padding-left: 20px; } 80% { padding-left: 0px; } 90%, 100% { -webkit-transform: translateX(-100%); transform: translateX(-100%); } } .effeckt-off-screen-nav-left-bounce-out { -webkit-transform: translateX(-100%); -ms-transform: translateX(-100%); transform: translateX(-100%); transition: 500ms; } .effeckt-off-screen-nav-left-bounce-out.effeckt-show { visibility: visible; -webkit-transform: translateY(0%); -ms-transform: translateY(0%); transform: translateY(0%); } .effeckt-off-screen-nav-left-bounce-out.effeckt-hide { -webkit-animation: navFromLeftBounceOut 500ms both ease; animation: navFromLeftBounceOut 500ms both ease; } .effeckt-off-screen-nav-right-bounce { left: auto; right: 0; transition: 500ms; } .effeckt-off-screen-nav-right-bounce.effeckt-show { visibility: visible; -webkit-animation: navFromRightBounceIn 500ms both ease; animation: navFromRightBounceIn 500ms both ease; } .effeckt-off-screen-nav-right-bounce.effeckt-hide { -webkit-animation: navFromRightBounceOut 500ms both ease; animation: navFromRightBounceOut 500ms both ease; } @-webkit-keyframes navFromRightBounceIn { 0% { -webkit-transform: translateX(100%); transform: translateX(100%); } 20% { padding-right: 0px; -webkit-transform: translateX(0%); transform: translateX(0%); } 60% { padding-right: 20px; } 100% { padding-right: 0px; } } @keyframes navFromRightBounceIn { 0% { -webkit-transform: translateX(100%); transform: translateX(100%); } 20% { padding-right: 0px; -webkit-transform: translateX(0%); transform: translateX(0%); } 60% { padding-right: 20px; } 100% { padding-right: 0px; } } @-webkit-keyframes navFromRightBounceOut { 0% { -webkit-transform: translateX(0%); transform: translateX(0%); padding-right: 0px; } 40% { -webkit-transform: translateX(0%); transform: translateX(0%); padding-right: 20px; } 80% { padding-right: 0px; } 90%, 100% { -webkit-transform: translateX(100%); transform: translateX(100%); } } @keyframes navFromRightBounceOut { 0% { -webkit-transform: translateX(0%); transform: translateX(0%); padding-right: 0px; } 40% { -webkit-transform: translateX(0%); transform: translateX(0%); padding-right: 20px; } 80% { padding-right: 0px; } 90%, 100% { -webkit-transform: translateX(100%); transform: translateX(100%); } } .effeckt-off-screen-nav-right-bounce-out { left: auto; right: 0; -webkit-transform: translateX(100%); -ms-transform: translateX(100%); transform: translateX(100%); transition: 500ms; } .effeckt-off-screen-nav-right-bounce-out.effeckt-show { visibility: visible; -webkit-transform: translateY(0%); -ms-transform: translateY(0%); transform: translateY(0%); } .effeckt-off-screen-nav-right-bounce-out.effeckt-hide { -webkit-animation: navFromRightBounceOut 500ms both ease; animation: navFromRightBounceOut 500ms both ease; } .effeckt-off-screen-nav-bottom-rotate { top: auto; width: 100%; -webkit-transform-origin: 100% 50%; -ms-transform-origin: 100% 50%; transform-origin: 100% 50%; transition: 500ms; -webkit-transform: translateY(100%) scale(1.01) rotateX(-30deg); transform: translateY(100%) scale(1.01) rotateX(-30deg); } .effeckt-off-screen-nav-bottom-rotate ~ [data-effeckt-page].effeckt-page-active { -webkit-transform-origin: 0% 100%; -ms-transform-origin: 0% 100%; transform-origin: 0% 100%; transition: 500ms; } .effeckt-off-screen-nav-bottom-rotate ~ .effeckt-overlay { z-index: 900; visibility: visible; opacity: 1; } .effeckt-off-screen-nav-bottom-rotate.effeckt-show { -webkit-transform: none; -ms-transform: none; transform: none; } .effeckt-off-screen-nav-bottom-rotate.effeckt-show ~ [data-effeckt-page].effeckt-page-active { -webkit-transform: translateY(-260px) rotateX(15deg); transform: translateY(-260px) rotateX(15deg); overflow: hidden; } .effeckt-off-screen-nav-bottom-rotate.effeckt-show ~ [data-effeckt-page].effeckt-page-active:after { background: none; } .effeckt-off-screen-nav-bottom-rotate.effeckt-show ~ [data-effeckt-page] .off-screen-nav-cover { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } .effeckt-off-screen-nav-top-rotate { bottom: auto; width: 100%; -webkit-transform-origin: 50% 0%; -ms-transform-origin: 50% 0%; transform-origin: 50% 0%; transition: 500ms; -webkit-transform: translateY(-100%) scale(1.01) rotateX(30deg); transform: translateY(-100%) scale(1.01) rotateX(30deg); } .effeckt-off-screen-nav-top-rotate ~ [data-effeckt-page].effeckt-page-active { -webkit-transform-origin: 100% 0%; -ms-transform-origin: 100% 0%; transform-origin: 100% 0%; transition: 500ms; } .effeckt-off-screen-nav-top-rotate ~ .effeckt-overlay { z-index: 900; visibility: visible; opacity: 1; } .effeckt-off-screen-nav-top-rotate.effeckt-show { -webkit-transform: none; -ms-transform: none; transform: none; } .effeckt-off-screen-nav-top-rotate.effeckt-show ~ [data-effeckt-page].effeckt-page-active { -webkit-transform: translateY(260px) rotateX(-15deg); transform: translateY(260px) rotateX(-15deg); overflow: hidden; } .effeckt-off-screen-nav-top-rotate.effeckt-show ~ [data-effeckt-page].effeckt-page-active:after { background: none; } .effeckt-off-screen-nav-top-rotate.effeckt-show ~ [data-effeckt-page] .off-screen-nav-cover { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } .effeckt-off-screen-nav-minimize-reaveal { width: 100%; transition: 500ms; } .effeckt-off-screen-nav-minimize-reaveal ~ [data-effeckt-page].effeckt-page-active { transition: 500ms; box-shadow: 0px 0px 50px #CACACA; z-index: 1000; } .effeckt-off-screen-nav-minimize-reaveal li, .effeckt-off-screen-nav-minimize-reaveal h4 { transition: 500ms cubic-bezier(0.16, 0.86, 0.33, 0.97); -webkit-transform: translateX(5%); -ms-transform: translateX(5%); transform: translateX(5%); opacity: 0; } .effeckt-off-screen-nav-minimize-reaveal.effeckt-show h4 { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 500ms; } .effeckt-off-screen-nav-minimize-reaveal.effeckt-show li:nth-child(1) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 1125ms; } .effeckt-off-screen-nav-minimize-reaveal.effeckt-show li:nth-child(2) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 1250ms; } .effeckt-off-screen-nav-minimize-reaveal.effeckt-show li:nth-child(3) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 1375ms; } .effeckt-off-screen-nav-minimize-reaveal.effeckt-show li:nth-child(4) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 1500ms; } .effeckt-off-screen-nav-minimize-reaveal.effeckt-show li:nth-child(5) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 1625ms; } .effeckt-off-screen-nav-minimize-reaveal.effeckt-show li:nth-child(6) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 1750ms; } .effeckt-off-screen-nav-minimize-reaveal.effeckt-show li:nth-child(7) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 1875ms; } .effeckt-off-screen-nav-minimize-reaveal.effeckt-show li:nth-child(8) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 2000ms; } .effeckt-off-screen-nav-minimize-reaveal.effeckt-show li:nth-child(9) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 2125ms; } .effeckt-off-screen-nav-minimize-reaveal.effeckt-show li:nth-child(10) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 2250ms; } .effeckt-off-screen-nav-minimize-reaveal.effeckt-show li:nth-child(11) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 2375ms; } .effeckt-off-screen-nav-minimize-reaveal.effeckt-show li:nth-child(12) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 2500ms; } .effeckt-off-screen-nav-minimize-reaveal.effeckt-show li:nth-child(13) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 2625ms; } .effeckt-off-screen-nav-minimize-reaveal.effeckt-show li:nth-child(14) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 2750ms; } .effeckt-off-screen-nav-minimize-reaveal.effeckt-show li:nth-child(15) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 2875ms; } .effeckt-off-screen-nav-minimize-reaveal.effeckt-show ~ [data-effeckt-page].effeckt-page-active { transition: 750ms cubic-bezier(0.16, 0.86, 0.33, 0.97); -webkit-transform: translateX(50%) scale3d(0.5, 0.5, 1); transform: translateX(50%) scale3d(0.5, 0.5, 1); overflow: hidden; } .effeckt-off-screen-nav-minimize-reaveal.effeckt-show ~ [data-effeckt-page] .off-screen-nav-cover { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } .effeckt-off-screen-nav-minimize-flip { width: 100%; transition: 500ms; } .effeckt-off-screen-nav-minimize-flip ~ [data-effeckt-page].effeckt-page-active { transition: 500ms; box-shadow: 0px 0px 50px #CACACA; z-index: 1000; } .effeckt-off-screen-nav-minimize-flip li, .effeckt-off-screen-nav-minimize-flip h4 { transition: 500ms cubic-bezier(0.16, 0.86, 0.33, 0.97); -webkit-transform: translateX(5%); -ms-transform: translateX(5%); transform: translateX(5%); opacity: 0; } .effeckt-off-screen-nav-minimize-flip.effeckt-show h4 { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 500ms; } .effeckt-off-screen-nav-minimize-flip.effeckt-show li:nth-child(1) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 1125ms; } .effeckt-off-screen-nav-minimize-flip.effeckt-show li:nth-child(2) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 1250ms; } .effeckt-off-screen-nav-minimize-flip.effeckt-show li:nth-child(3) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 1375ms; } .effeckt-off-screen-nav-minimize-flip.effeckt-show li:nth-child(4) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 1500ms; } .effeckt-off-screen-nav-minimize-flip.effeckt-show li:nth-child(5) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 1625ms; } .effeckt-off-screen-nav-minimize-flip.effeckt-show li:nth-child(6) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 1750ms; } .effeckt-off-screen-nav-minimize-flip.effeckt-show li:nth-child(7) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 1875ms; } .effeckt-off-screen-nav-minimize-flip.effeckt-show li:nth-child(8) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 2000ms; } .effeckt-off-screen-nav-minimize-flip.effeckt-show li:nth-child(9) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 2125ms; } .effeckt-off-screen-nav-minimize-flip.effeckt-show li:nth-child(10) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 2250ms; } .effeckt-off-screen-nav-minimize-flip.effeckt-show li:nth-child(11) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 2375ms; } .effeckt-off-screen-nav-minimize-flip.effeckt-show li:nth-child(12) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 2500ms; } .effeckt-off-screen-nav-minimize-flip.effeckt-show li:nth-child(13) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 2625ms; } .effeckt-off-screen-nav-minimize-flip.effeckt-show li:nth-child(14) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 2750ms; } .effeckt-off-screen-nav-minimize-flip.effeckt-show li:nth-child(15) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 2875ms; } .effeckt-off-screen-nav-minimize-flip.effeckt-show ~ [data-effeckt-page].effeckt-page-active { transition: 750ms cubic-bezier(0.16, 0.86, 0.33, 0.97); -webkit-transform: translateX(50%) rotateY(-15deg) scale3d(0.5, 0.5, 1); transform: translateX(50%) rotateY(-15deg) scale3d(0.5, 0.5, 1); overflow: hidden; } .effeckt-off-screen-nav-minimize-flip.effeckt-show ~ [data-effeckt-page] .off-screen-nav-cover { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } [data-effeckt-page] { position: relative; top: 0; left: 0; width: 100%; height: 100%; -webkit-overflow-scrolling: touch; overflow-x: hidden; visibility: hidden; z-index: 0; padding: 2rem 4rem 0; -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); -webkit-transform-style: preserve-3d; transform-style: preserve-3d; display: none; } [data-effeckt-page].effeckt-page-active { display: block; visibility: visible; z-index: 10; } [data-effeckt-page].effeckt-page-animating { overflow: hidden; z-index: 100; position: absolute; } [data-effeckt-page].slide-from-left { -webkit-animation: slideFromLeft 1000ms forwards ease-in-out; animation: slideFromLeft 1000ms forwards ease-in-out; } [data-effeckt-page].slide-to-left { -webkit-animation: slideToLeft 1000ms forwards ease-in-out; animation: slideToLeft 1000ms forwards ease-in-out; } [data-effeckt-page].slide-from-right { -webkit-animation: slideFromRight 1000ms forwards ease-in-out; animation: slideFromRight 1000ms forwards ease-in-out; } [data-effeckt-page].slide-to-right { -webkit-animation: slideToRight 1000ms forwards ease-in-out; animation: slideToRight 1000ms forwards ease-in-out; } [data-effeckt-page].slide-from-top { -webkit-animation: slideFromTop 1000ms forwards ease-in-out; animation: slideFromTop 1000ms forwards ease-in-out; } [data-effeckt-page].slide-to-top { -webkit-animation: slideToTop 1000ms forwards ease-in-out; animation: slideToTop 1000ms forwards ease-in-out; } [data-effeckt-page].slide-from-bottom { -webkit-animation: slideFromBottom 1000ms forwards ease-in-out; animation: slideFromBottom 1000ms forwards ease-in-out; } [data-effeckt-page].slide-to-bottom { -webkit-animation: slideToBottom 1000ms forwards ease-in-out; animation: slideToBottom 1000ms forwards ease-in-out; } [data-effeckt-page].scale-up-from-behind { -webkit-animation: scaleUpFromBehind 1000ms forwards ease-in-out; animation: scaleUpFromBehind 1000ms forwards ease-in-out; } [data-effeckt-page].scale-up-to-front { -webkit-animation: scaleUpToFront 1000ms forwards ease-in-out; animation: scaleUpToFront 1000ms forwards ease-in-out; } [data-effeckt-page].scale-down-to-behind { -webkit-animation: scaleDownToBehind 1000ms forwards ease-in-out; animation: scaleDownToBehind 1000ms forwards ease-in-out; } [data-effeckt-page].scale-down-from-front { -webkit-animation: scaleDownFromFront 1000ms forwards ease-in-out; animation: scaleDownFromFront 1000ms forwards ease-in-out; } [data-effeckt-page].scale-down-slide-to-left { -webkit-animation: scaleDownSlideToLeft 2000ms forwards ease-in-out; animation: scaleDownSlideToLeft 2000ms forwards ease-in-out; } [data-effeckt-page].scale-down-slide-from-right { -webkit-animation: scaleDownSlideFromRight 2000ms forwards ease-in-out; animation: scaleDownSlideFromRight 2000ms forwards ease-in-out; } [data-effeckt-page].scale-down-slide-from-left { -webkit-animation: scaleDownSlideFromLeft 2000ms forwards ease-in-out; animation: scaleDownSlideFromLeft 2000ms forwards ease-in-out; } [data-effeckt-page].scale-down-slide-to-right { -webkit-animation: scaleDownSlideToRight 2000ms forwards ease-in-out; animation: scaleDownSlideToRight 2000ms forwards ease-in-out; } [data-effeckt-page].scale-down-slide-from-top { -webkit-animation: scaleDownSlideFromTop 2000ms forwards ease-in-out; animation: scaleDownSlideFromTop 2000ms forwards ease-in-out; } [data-effeckt-page].scale-down-slide-to-bottom { -webkit-animation: scaleDownSlideToBottom 2000ms forwards ease-in-out; animation: scaleDownSlideToBottom 2000ms forwards ease-in-out; } [data-effeckt-page].scale-down-slide-from-bottom { -webkit-animation: scaleDownSlideFromBottom 2000ms forwards ease-in-out; animation: scaleDownSlideFromBottom 2000ms forwards ease-in-out; } [data-effeckt-page].scale-down-slide-to-top { -webkit-animation: scaleDownSlideToTop 2000ms forwards ease-in-out; animation: scaleDownSlideToTop 2000ms forwards ease-in-out; } [data-effeckt-page].rotate-to-behind { -webkit-transform-origin: -50% 50%; -ms-transform-origin: -50% 50%; transform-origin: -50% 50%; -webkit-animation: rotateToBehind 500ms both ease-in; animation: rotateToBehind 500ms both ease-in; } [data-effeckt-page].rotate-to-front { -webkit-transform-origin: 150% 50%; -ms-transform-origin: 150% 50%; transform-origin: 150% 50%; -webkit-animation: rotateToFront 500ms both ease-out; animation: rotateToFront 500ms both ease-out; } [data-effeckt-page].flip-to-right-front { -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-animation: flipToRightBack 1000ms forwards ease; animation: flipToRightBack 1000ms forwards ease; } [data-effeckt-page].flip-to-right-back { -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-animation: flipToRight 1000ms forwards ease; animation: flipToRight 1000ms forwards ease; } [data-effeckt-page].flip-to-left-front { -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-animation: flipToLeftBack 1000ms forwards ease; animation: flipToLeftBack 1000ms forwards ease; } [data-effeckt-page].flip-to-left-back { -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-animation: flipToLeft 1000ms forwards ease; animation: flipToLeft 1000ms forwards ease; } [data-effeckt-page].flip-to-top-front { -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-animation: flipToTopBack 1000ms forwards ease; animation: flipToTopBack 1000ms forwards ease; } [data-effeckt-page].flip-to-top-back { -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-animation: flipToTop 1000ms forwards ease; animation: flipToTop 1000ms forwards ease; } [data-effeckt-page].flip-to-bottom-front { -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-animation: flipToBottomBack 1000ms forwards ease; animation: flipToBottomBack 1000ms forwards ease; } [data-effeckt-page].flip-to-bottom-back { -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-animation: flipToBottom 1000ms forwards ease; animation: flipToBottom 1000ms forwards ease; } @-webkit-keyframes slideFromTop { from { -webkit-transform: translateY(-100%); transform: translateY(-100%); } } @keyframes slideFromTop { from { -webkit-transform: translateY(-100%); transform: translateY(-100%); } } @-webkit-keyframes slideToTop { to { -webkit-transform: translateY(-100%); transform: translateY(-100%); } } @keyframes slideToTop { to { -webkit-transform: translateY(-100%); transform: translateY(-100%); } } @-webkit-keyframes slideFromRight { from { -webkit-transform: translateX(100%); transform: translateX(100%); } } @keyframes slideFromRight { from { -webkit-transform: translateX(100%); transform: translateX(100%); } } @-webkit-keyframes slideToRight { to { -webkit-transform: translateX(100%); transform: translateX(100%); } } @keyframes slideToRight { to { -webkit-transform: translateX(100%); transform: translateX(100%); } } @-webkit-keyframes slideFromBottom { from { -webkit-transform: translateY(100%); transform: translateY(100%); } } @keyframes slideFromBottom { from { -webkit-transform: translateY(100%); transform: translateY(100%); } } @-webkit-keyframes slideToBottom { to { -webkit-transform: translateY(100%); transform: translateY(100%); } } @keyframes slideToBottom { to { -webkit-transform: translateY(100%); transform: translateY(100%); } } @-webkit-keyframes slideFromLeft { from { -webkit-transform: translateX(-100%); transform: translateX(-100%); } } @keyframes slideFromLeft { from { -webkit-transform: translateX(-100%); transform: translateX(-100%); } } @-webkit-keyframes slideToLeft { to { -webkit-transform: translateX(-100%); transform: translateX(-100%); } } @keyframes slideToLeft { to { -webkit-transform: translateX(-100%); transform: translateX(-100%); } } @-webkit-keyframes scaleUpFromBehind { from { opacity: 0; -webkit-transform: scale(0.5); transform: scale(0.5); } } @keyframes scaleUpFromBehind { from { opacity: 0; -webkit-transform: scale(0.5); transform: scale(0.5); } } @-webkit-keyframes scaleUpToFront { to { opacity: 0; -webkit-transform: scale(1.3); transform: scale(1.3); } } @keyframes scaleUpToFront { to { opacity: 0; -webkit-transform: scale(1.3); transform: scale(1.3); } } @-webkit-keyframes scaleDownToBehind { to { opacity: 0; -webkit-transform: scale(0.5); transform: scale(0.5); } } @keyframes scaleDownToBehind { to { opacity: 0; -webkit-transform: scale(0.5); transform: scale(0.5); } } @-webkit-keyframes scaleDownFromFront { from { opacity: 0; -webkit-transform: scale(1.3); transform: scale(1.3); } to { opacity: 1; } } @keyframes scaleDownFromFront { from { opacity: 0; -webkit-transform: scale(1.3); transform: scale(1.3); } to { opacity: 1; } } @-webkit-keyframes scaleDownSlideToLeft { 25% { opacity: 0.5; -webkit-transform: translateZ(-500px); transform: translateZ(-500px); } 75% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateX(-200%); transform: translateZ(-500px) translateX(-200%); } 100% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateX(-200%); transform: translateZ(-500px) translateX(-200%); } } @keyframes scaleDownSlideToLeft { 25% { opacity: 0.5; -webkit-transform: translateZ(-500px); transform: translateZ(-500px); } 75% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateX(-200%); transform: translateZ(-500px) translateX(-200%); } 100% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateX(-200%); transform: translateZ(-500px) translateX(-200%); } } @-webkit-keyframes scaleDownSlideFromRight { 0%, 25% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateX(200%); transform: translateZ(-500px) translateX(200%); } 75% { opacity: 0.5; -webkit-transform: translateZ(-500px); transform: translateZ(-500px); } 100% { opacity: 1; -webkit-transform: translateZ(0) translateX(0); transform: translateZ(0) translateX(0); } } @keyframes scaleDownSlideFromRight { 0%, 25% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateX(200%); transform: translateZ(-500px) translateX(200%); } 75% { opacity: 0.5; -webkit-transform: translateZ(-500px); transform: translateZ(-500px); } 100% { opacity: 1; -webkit-transform: translateZ(0) translateX(0); transform: translateZ(0) translateX(0); } } @-webkit-keyframes scaleDownSlideFromLeft { 0%, 25% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateX(-200%); transform: translateZ(-500px) translateX(-200%); } 75% { opacity: 0.5; -webkit-transform: translateZ(-500px); transform: translateZ(-500px); } 100% { opacity: 1; -webkit-transform: translateZ(0) translateX(0%); transform: translateZ(0) translateX(0%); } } @keyframes scaleDownSlideFromLeft { 0%, 25% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateX(-200%); transform: translateZ(-500px) translateX(-200%); } 75% { opacity: 0.5; -webkit-transform: translateZ(-500px); transform: translateZ(-500px); } 100% { opacity: 1; -webkit-transform: translateZ(0) translateX(0%); transform: translateZ(0) translateX(0%); } } @-webkit-keyframes scaleDownSlideToRight { 25% { opacity: 0.5; -webkit-transform: translateZ(-500px); transform: translateZ(-500px); } 75% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateX(200%); transform: translateZ(-500px) translateX(200%); } 100% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateX(200%); transform: translateZ(-500px) translateX(200%); } } @keyframes scaleDownSlideToRight { 25% { opacity: 0.5; -webkit-transform: translateZ(-500px); transform: translateZ(-500px); } 75% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateX(200%); transform: translateZ(-500px) translateX(200%); } 100% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateX(200%); transform: translateZ(-500px) translateX(200%); } } @-webkit-keyframes scaleDownSlideFromTop { 0%, 25% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateY(-200%); transform: translateZ(-500px) translateY(-200%); } 75% { opacity: 0.5; -webkit-transform: translateZ(-500px); transform: translateZ(-500px); } 100% { opacity: 1; -webkit-transform: translateZ(0) translateY(0%); transform: translateZ(0) translateY(0%); } } @keyframes scaleDownSlideFromTop { 0%, 25% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateY(-200%); transform: translateZ(-500px) translateY(-200%); } 75% { opacity: 0.5; -webkit-transform: translateZ(-500px); transform: translateZ(-500px); } 100% { opacity: 1; -webkit-transform: translateZ(0) translateY(0%); transform: translateZ(0) translateY(0%); } } @-webkit-keyframes scaleDownSlideToBottom { 25% { opacity: 0.5; -webkit-transform: translateZ(-500px); transform: translateZ(-500px); } 75% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateY(200%); transform: translateZ(-500px) translateY(200%); } 100% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateY(200%); transform: translateZ(-500px) translateY(200%); } } @keyframes scaleDownSlideToBottom { 25% { opacity: 0.5; -webkit-transform: translateZ(-500px); transform: translateZ(-500px); } 75% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateY(200%); transform: translateZ(-500px) translateY(200%); } 100% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateY(200%); transform: translateZ(-500px) translateY(200%); } } @-webkit-keyframes scaleDownSlideFromBottom { 0%, 25% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateY(200%); transform: translateZ(-500px) translateY(200%); } 75% { opacity: 0.5; -webkit-transform: translateZ(-500px); transform: translateZ(-500px); } 100% { opacity: 1; -webkit-transform: translateZ(0) translateY(0%); transform: translateZ(0) translateY(0%); } } @keyframes scaleDownSlideFromBottom { 0%, 25% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateY(200%); transform: translateZ(-500px) translateY(200%); } 75% { opacity: 0.5; -webkit-transform: translateZ(-500px); transform: translateZ(-500px); } 100% { opacity: 1; -webkit-transform: translateZ(0) translateY(0%); transform: translateZ(0) translateY(0%); } } @-webkit-keyframes scaleDownSlideToTop { 25% { opacity: 0.5; -webkit-transform: translateZ(-500px); transform: translateZ(-500px); } 75% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateY(-200%); transform: translateZ(-500px) translateY(-200%); } 100% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateY(-200%); transform: translateZ(-500px) translateY(-200%); } } @keyframes scaleDownSlideToTop { 25% { opacity: 0.5; -webkit-transform: translateZ(-500px); transform: translateZ(-500px); } 75% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateY(-200%); transform: translateZ(-500px) translateY(-200%); } 100% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateY(-200%); transform: translateZ(-500px) translateY(-200%); } } @-webkit-keyframes rotateToBehind { to { opacity: 0; -webkit-transform: translateZ(-500px) rotateY(90deg); transform: translateZ(-500px) rotateY(90deg); } } @keyframes rotateToBehind { to { opacity: 0; -webkit-transform: translateZ(-500px) rotateY(90deg); transform: translateZ(-500px) rotateY(90deg); } } @-webkit-keyframes rotateToFront { from { opacity: 0; -webkit-transform: translateZ(-500px) rotateY(-90deg); transform: translateZ(-500px) rotateY(-90deg); } } @keyframes rotateToFront { from { opacity: 0; -webkit-transform: translateZ(-500px) rotateY(-90deg); transform: translateZ(-500px) rotateY(-90deg); } } @-webkit-keyframes flipToRight { to { -webkit-transform: rotateY(180deg); transform: rotateY(180deg); } } @keyframes flipToRight { to { -webkit-transform: rotateY(180deg); transform: rotateY(180deg); } } @-webkit-keyframes flipToRightBack { from { -webkit-transform: rotateY(-180deg); transform: rotateY(-180deg); } } @keyframes flipToRightBack { from { -webkit-transform: rotateY(-180deg); transform: rotateY(-180deg); } } @-webkit-keyframes flipToLeft { to { -webkit-transform: rotateY(-180deg); transform: rotateY(-180deg); } } @keyframes flipToLeft { to { -webkit-transform: rotateY(-180deg); transform: rotateY(-180deg); } } @-webkit-keyframes flipToLeftBack { from { -webkit-transform: rotateY(180deg); transform: rotateY(180deg); } } @keyframes flipToLeftBack { from { -webkit-transform: rotateY(180deg); transform: rotateY(180deg); } } @-webkit-keyframes flipToTop { to { -webkit-transform: rotateX(180deg); transform: rotateX(180deg); } } @keyframes flipToTop { to { -webkit-transform: rotateX(180deg); transform: rotateX(180deg); } } @-webkit-keyframes flipToTopBack { from { -webkit-transform: rotateX(-180deg); transform: rotateX(-180deg); } } @keyframes flipToTopBack { from { -webkit-transform: rotateX(-180deg); transform: rotateX(-180deg); } } @-webkit-keyframes flipToBottom { to { -webkit-transform: rotateX(-180deg); transform: rotateX(-180deg); } } @keyframes flipToBottom { to { -webkit-transform: rotateX(-180deg); transform: rotateX(-180deg); } } @-webkit-keyframes flipToBottomBack { from { -webkit-transform: rotateX(180deg); transform: rotateX(180deg); } } @keyframes flipToBottomBack { from { -webkit-transform: rotateX(180deg); transform: rotateX(180deg); } } .page-on-top, [data-effeckt-page].scale-up-to-front.effeckt-page-animating, [data-effeckt-page].scale-down-from-front.effeckt-page-animating { z-index: 999; } .animation-delay-100 { -webkit-animation-delay: 0.1s; animation-delay: 0.1s; } .animation-delay-200 { -webkit-animation-delay: 0.2s; animation-delay: 0.2s; } .animation-delay-300, [data-effeckt-page].scale-up-from-behind { -webkit-animation-delay: 0.3s; animation-delay: 0.3s; } .animation-delay-500 { -webkit-animation-delay: 0.5s; animation-delay: 0.5s; } .animation-delay-700 { -webkit-animation-delay: 0.7s; animation-delay: 0.7s; } .animation-delay-1000 { -webkit-animation-delay: 1000s; animation-delay: 1000s; } .effeckt-tooltip[data-effeckt-tooltip-text] { position: relative; display: inline-block; } .effeckt-tooltip[data-effeckt-tooltip-text]::before, .effeckt-tooltip[data-effeckt-tooltip-text]::after { opacity: 0; transition: 0.2s; } .effeckt-tooltip[data-effeckt-tooltip-text]:hover::before, .effeckt-tooltip[data-effeckt-tooltip-text]:hover::after { visibility: visible; opacity: 1; transition: 0.2s 0.3s; } .effeckt-tooltip[data-effeckt-type="bubble"]::after { content: attr(data-effeckt-tooltip-text); position: absolute; border-radius: 10px; background: black; color: white; padding: 0.45rem 0.8rem; font-size: 90%; white-space: nowrap; visibility: hidden; z-index: 2; } .effeckt-tooltip[data-effeckt-type="bubble"]::before { content: ""; width: 0; height: 0; position: absolute; } .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="top"]::after, .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="bottom"]::after { -webkit-transform: translateX(-50%); -ms-transform: translateX(-50%); transform: translateX(-50%); left: 50%; } .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="top"]:before, .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="bottom"]:before { left: 50%; margin-left: -5px; } .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="top"]::after, .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="top"]::before { bottom: 125%; } .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="top"]::before { border-top: 5px solid black; border-left: 5px solid transparent; border-right: 5px solid transparent; margin-bottom: -4px; } .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="top"]:hover::before, .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="top"]:hover::after { bottom: 115%; } .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="bottom"]::after, .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="bottom"]::before { top: 125%; } .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="bottom"]::before { border-bottom: 5px solid black; border-left: 5px solid transparent; border-right: 5px solid transparent; margin-top: -4px; } .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="bottom"]:hover::before, .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="bottom"]:hover::after { top: 115%; } .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="right"]::after, .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="right"]:before, .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="left"]::after, .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="left"]:before { top: 45%; -webkit-transform: translateY(-45%); -ms-transform: translateY(-45%); transform: translateY(-45%); margin-top: 2px; } .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="right"]::after, .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="right"]::before { left: 115%; } .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="right"]::before { border-right: 5px solid black; border-top: 5px solid transparent; border-bottom: 5px solid transparent; margin-left: -4px; } .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="right"]:hover::before, .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="right"]:hover::after { left: 105%; } .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="left"]::after, .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="left"]::before { right: 115%; } .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="left"]::before { border-left: 5px solid black; border-top: 5px solid transparent; border-bottom: 5px solid transparent; margin-right: -4px; } .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="left"]:hover::before, .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="left"]:hover::after { right: 105%; } @media screen and (-webkit-min-device-pixel-ratio: 0) { .effeckt-ckbox-ios7[type=checkbox], .effeckt-rdio-ios7[type=radio] { -webkit-appearance: none; -moz-appearance: none; appearance: none; box-shadow: inset 0px 0px 0px 1px #e6e6e6; border-radius: 15px; cursor: pointer; display: inline-block; height: 31px; padding: 1px; position: relative; margin: 0px; width: 52px; outline: 0; transition: all 0.3s ease-out; -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1); background: #FFF; } .effeckt-ckbox-ios7[type=checkbox]:checked, .effeckt-rdio-ios7:checked { box-shadow: inset 0px 0px 0px 20px #666; } .effeckt-ckbox-ios7[type=checkbox]:after, .effeckt-rdio-ios7[type=radio]:after { box-shadow: 0px 2px 2px 1px rgba(0, 0, 0, 0.2); border-radius: 15px; content: ''; cursor: pointer; height: 29px; position: absolute; width: 29px; transition: all 0.1s ease-in 0.1s; background: #FFF; } .effeckt-ckbox-ios7[type="checkbox"]:checked:after, .effeckt-rdio-ios7[type="radio"]:checked:after { left: 22px; } .effeckt-ckbox-android[type=checkbox], .effeckt-rdio-android[type=radio] { -webkit-appearance: none; -moz-appearance: none; appearance: none; box-shadow: inset 0px 0px 0px 1px #e6e6e6; border-radius: 1px; cursor: pointer; display: inline-block; height: 21px; padding: 1px; position: relative; margin: 0px; width: 72px; outline: 0; transition: all 0.3s ease-out; -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1); background: #333; } .effeckt-ckbox-android[type=checkbox]:checked, .effeckt-rdio-android:checked { box-shadow: inset 0px 0px 0px 20px #666666; } .effeckt-ckbox-android[type=checkbox]:after, .effeckt-rdio-android[type=radio]:after { box-shadow: 0px 0px 0px 0px; border-radius: 1px; content: ''; cursor: pointer; height: 19px; position: absolute; width: 29px; transition: all 0.1s ease-in 0.1s; background: #4d4d4d; } .effeckt-ckbox-android[type="checkbox"]:checked:after, .effeckt-rdio-android[type="radio"]:checked:after { left: 43px; } } .effeckt-tabs-wrap { position: relative; } .effeckt-tabs-wrap ul.effeckt-tabs { overflow: hidden; } .effeckt-tabs-wrap .effeckt-tabs-container { position: relative; transition: all 500ms ease-in-out; } .effeckt-tabs-wrap .effeckt-tabs-container .effeckt-tab-content { position: absolute; transition: all 250ms ease-in-out; } .effeckt-tabs-wrap[data-effeckt-type='scale'] .effeckt-tab-content.effeckt-hide { -webkit-transform: scale(0.9); -ms-transform: scale(0.9); transform: scale(0.9); opacity: 0; } .effeckt-tabs-wrap[data-effeckt-type='scale'] .effeckt-tab-content.effeckt-show { -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1); transition-delay: 0.3s; opacity: 1; } .effeckt-tabs-wrap[data-effeckt-type='scale-up'] .effeckt-tab-content.effeckt-hide { -webkit-transform: scale(1.1); -ms-transform: scale(1.1); transform: scale(1.1); opacity: 0; } .effeckt-tabs-wrap[data-effeckt-type='scale-up'] .effeckt-tab-content.effeckt-show { -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1); transition-delay: 0.3s; opacity: 1; } .effeckt-tabs-wrap[data-effeckt-type='slide-left'] .effeckt-tabs-container { overflow: hidden; } .effeckt-tabs-wrap[data-effeckt-type='slide-left'] .effeckt-tabs-container .effeckt-tab-content.effeckt-hide { -webkit-transform: translateX(-100%); -ms-transform: translateX(-100%); transform: translateX(-100%); opacity: 0; } .effeckt-tabs-wrap[data-effeckt-type='slide-left'] .effeckt-tabs-container .effeckt-tab-content.effeckt-show { -webkit-transform: translateX(0%); -ms-transform: translateX(0%); transform: translateX(0%); transition-delay: 0.3s; opacity: 1; } .effeckt-tabs-wrap[data-effeckt-type='slide-right'] .effeckt-tabs-container { overflow: hidden; } .effeckt-tabs-wrap[data-effeckt-type='slide-right'] .effeckt-tabs-container .effeckt-tab-content.effeckt-hide { -webkit-transform: translateX(100%); -ms-transform: translateX(100%); transform: translateX(100%); opacity: 0; } .effeckt-tabs-wrap[data-effeckt-type='slide-right'] .effeckt-tabs-container .effeckt-tab-content.effeckt-show { -webkit-transform: translateX(0%); -ms-transform: translateX(0%); transform: translateX(0%); transition-delay: 0.3s; opacity: 1; } .effeckt-tabs-wrap[data-effeckt-type='slide-up'] .effeckt-tabs-container { overflow: hidden; } .effeckt-tabs-wrap[data-effeckt-type='slide-up'] .effeckt-tabs-container .effeckt-tab-content.effeckt-hide { -webkit-transform: translateY(-100%); -ms-transform: translateY(-100%); transform: translateY(-100%); opacity: 0; } .effeckt-tabs-wrap[data-effeckt-type='slide-up'] .effeckt-tabs-container .effeckt-tab-content.effeckt-show { -webkit-transform: translateY(0%); -ms-transform: translateY(0%); transform: translateY(0%); transition-delay: 0.3s; opacity: 1; } .effeckt-tabs-wrap[data-effeckt-type='slide-down'] .effeckt-tabs-container { overflow: hidden; } .effeckt-tabs-wrap[data-effeckt-type='slide-down'] .effeckt-tabs-container .effeckt-tab-content.effeckt-hide { -webkit-transform: translateY(100%); -ms-transform: translateY(100%); transform: translateY(100%); opacity: 0; } .effeckt-tabs-wrap[data-effeckt-type='slide-down'] .effeckt-tabs-container .effeckt-tab-content.effeckt-show { -webkit-transform: translateX(0%); -ms-transform: translateX(0%); transform: translateX(0%); transition-delay: 0.3s; opacity: 1; } .effeckt-tabs-wrap[data-effeckt-type='flip'] .effeckt-tabs-container { overflow: hidden; } .effeckt-tabs-wrap[data-effeckt-type='flip'] .effeckt-tabs-container .effeckt-tab-content.effeckt-hide { -webkit-transform: rotateY(-90deg) scale(1.1); transform: rotateY(-90deg) scale(1.1); opacity: 0; } .effeckt-tabs-wrap[data-effeckt-type='flip'] .effeckt-tabs-container .effeckt-tab-content.effeckt-show { -webkit-transform: rotateY(0deg) scale(1); transform: rotateY(0deg) scale(1); transition-delay: 0.3s; opacity: 1; } .effeckt-positional-modal-wrap { position: absolute; z-index: 10; display: none; } .effeckt-positional-modal-wrap.effeckt-front { z-index: 20; } .effeckt-positional-modal-wrap[data-effeckt-position="above"] { margin-top: -15px; } .effeckt-positional-modal-wrap[data-effeckt-position="above"] .effeckt-modal:before { content: ""; position: absolute; top: 100%; left: 50%; width: 0; height: 0; margin-left: -10px; border-top: 10px solid #ccc; border-right: 10px solid transparent; border-left: 10px solid transparent; } .effeckt-positional-modal-wrap[data-effeckt-position="below"] { margin-top: 15px; } .effeckt-positional-modal-wrap[data-effeckt-position="below"] .effeckt-modal:before { content: ""; position: absolute; bottom: 100%; left: 50%; width: 0; height: 0; margin-left: -10px; border-bottom: 10px solid #ccc; border-right: 10px solid transparent; border-left: 10px solid transparent; } .effeckt-positional-modal-wrap[data-effeckt-position="right"] { margin-left: 15px; } .effeckt-positional-modal-wrap[data-effeckt-position="right"] .effeckt-modal:before { content: ""; position: absolute; top: 50%; right: 100%; width: 0; height: 0; margin-top: -10px; border-top: 10px solid transparent; border-bottom: 10px solid transparent; border-right: 10px solid #ccc; } .effeckt-positional-modal-wrap[data-effeckt-position="left"] { margin-left: -15px; } .effeckt-positional-modal-wrap[data-effeckt-position="left"] .effeckt-modal:before { content: ""; position: absolute; top: 50%; left: 100%; width: 0; height: 0; margin-top: -10px; border-top: 10px solid transparent; border-bottom: 10px solid transparent; border-left: 10px solid #ccc; } ================================================ FILE: css/modules/buttons.css ================================================ .effeckt-button { position: relative; } .effeckt-button .spinner { position: absolute; width: 32px; height: 32px; top: 50%; margin-top: -16px; margin-left: -16px; opacity: 0; background-image: url(data:image/gif;base64,R0lGODlhIAAgAPMAAJmZmf///6+vr8nJybW1tcDAwOjo6Nvb26ioqKOjo7Ozs/Ly8vz8/AAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAIAAgAAAE5xDISWlhperN52JLhSSdRgwVo1ICQZRUsiwHpTJT4iowNS8vyW2icCF6k8HMMBkCEDskxTBDAZwuAkkqIfxIQyhBQBFvAQSDITM5VDW6XNE4KagNh6Bgwe60smQUB3d4Rz1ZBApnFASDd0hihh12BkE9kjAJVlycXIg7CQIFA6SlnJ87paqbSKiKoqusnbMdmDC2tXQlkUhziYtyWTxIfy6BE8WJt5YJvpJivxNaGmLHT0VnOgSYf0dZXS7APdpB309RnHOG5gDqXGLDaC457D1zZ/V/nmOM82XiHRLYKhKP1oZmADdEAAAh+QQJCgAAACwAAAAAIAAgAAAE6hDISWlZpOrNp1lGNRSdRpDUolIGw5RUYhhHukqFu8DsrEyqnWThGvAmhVlteBvojpTDDBUEIFwMFBRAmBkSgOrBFZogCASwBDEY/CZSg7GSE0gSCjQBMVG023xWBhklAnoEdhQEfyNqMIcKjhRsjEdnezB+A4k8gTwJhFuiW4dokXiloUepBAp5qaKpp6+Ho7aWW54wl7obvEe0kRuoplCGepwSx2jJvqHEmGt6whJpGpfJCHmOoNHKaHx61WiSR92E4lbFoq+B6QDtuetcaBPnW6+O7wDHpIiK9SaVK5GgV543tzjgGcghAgAh+QQJCgAAACwAAAAAIAAgAAAE7hDISSkxpOrN5zFHNWRdhSiVoVLHspRUMoyUakyEe8PTPCATW9A14E0UvuAKMNAZKYUZCiBMuBakSQKG8G2FzUWox2AUtAQFcBKlVQoLgQReZhQlCIJesQXI5B0CBnUMOxMCenoCfTCEWBsJColTMANldx15BGs8B5wlCZ9Po6OJkwmRpnqkqnuSrayqfKmqpLajoiW5HJq7FL1Gr2mMMcKUMIiJgIemy7xZtJsTmsM4xHiKv5KMCXqfyUCJEonXPN2rAOIAmsfB3uPoAK++G+w48edZPK+M6hLJpQg484enXIdQFSS1u6UhksENEQAAIfkECQoAAAAsAAAAACAAIAAABOcQyEmpGKLqzWcZRVUQnZYg1aBSh2GUVEIQ2aQOE+G+cD4ntpWkZQj1JIiZIogDFFyHI0UxQwFugMSOFIPJftfVAEoZLBbcLEFhlQiqGp1Vd140AUklUN3eCA51C1EWMzMCezCBBmkxVIVHBWd3HHl9JQOIJSdSnJ0TDKChCwUJjoWMPaGqDKannasMo6WnM562R5YluZRwur0wpgqZE7NKUm+FNRPIhjBJxKZteWuIBMN4zRMIVIhffcgojwCF117i4nlLnY5ztRLsnOk+aV+oJY7V7m76PdkS4trKcdg0Zc0tTcKkRAAAIfkECQoAAAAsAAAAACAAIAAABO4QyEkpKqjqzScpRaVkXZWQEximw1BSCUEIlDohrft6cpKCk5xid5MNJTaAIkekKGQkWyKHkvhKsR7ARmitkAYDYRIbUQRQjWBwJRzChi9CRlBcY1UN4g0/VNB0AlcvcAYHRyZPdEQFYV8ccwR5HWxEJ02YmRMLnJ1xCYp0Y5idpQuhopmmC2KgojKasUQDk5BNAwwMOh2RtRq5uQuPZKGIJQIGwAwGf6I0JXMpC8C7kXWDBINFMxS4DKMAWVWAGYsAdNqW5uaRxkSKJOZKaU3tPOBZ4DuK2LATgJhkPJMgTwKCdFjyPHEnKxFCDhEAACH5BAkKAAAALAAAAAAgACAAAATzEMhJaVKp6s2nIkolIJ2WkBShpkVRWqqQrhLSEu9MZJKK9y1ZrqYK9WiClmvoUaF8gIQSNeF1Er4MNFn4SRSDARWroAIETg1iVwuHjYB1kYc1mwruwXKC9gmsJXliGxc+XiUCby9ydh1sOSdMkpMTBpaXBzsfhoc5l58Gm5yToAaZhaOUqjkDgCWNHAULCwOLaTmzswadEqggQwgHuQsHIoZCHQMMQgQGubVEcxOPFAcMDAYUA85eWARmfSRQCdcMe0zeP1AAygwLlJtPNAAL19DARdPzBOWSm1brJBi45soRAWQAAkrQIykShQ9wVhHCwCQCACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiRMDjI0Fd30/iI2UA5GSS5UDj2l6NoqgOgN4gksEBgYFf0FDqKgHnyZ9OX8HrgYHdHpcHQULXAS2qKpENRg7eAMLC7kTBaixUYFkKAzWAAnLC7FLVxLWDBLKCwaKTULgEwbLA4hJtOkSBNqITT3xEgfLpBtzE/jiuL04RGEBgwWhShRgQExHBAAh+QQJCgAAACwAAAAAIAAgAAAE7xDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfZiCqGk5dTESJeaOAlClzsJsqwiJwiqnFrb2nS9kmIcgEsjQydLiIlHehhpejaIjzh9eomSjZR+ipslWIRLAgMDOR2DOqKogTB9pCUJBagDBXR6XB0EBkIIsaRsGGMMAxoDBgYHTKJiUYEGDAzHC9EACcUGkIgFzgwZ0QsSBcXHiQvOwgDdEwfFs0sDzt4S6BK4xYjkDOzn0unFeBzOBijIm1Dgmg5YFQwsCMjp1oJ8LyIAACH5BAkKAAAALAAAAAAgACAAAATwEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GGl6NoiPOH16iZKNlH6KmyWFOggHhEEvAwwMA0N9GBsEC6amhnVcEwavDAazGwIDaH1ipaYLBUTCGgQDA8NdHz0FpqgTBwsLqAbWAAnIA4FWKdMLGdYGEgraigbT0OITBcg5QwPT4xLrROZL6AuQAPUS7bxLpoWidY0JtxLHKhwwMJBTHgPKdEQAACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GAULDJCRiXo1CpGXDJOUjY+Yip9DhToJA4RBLwMLCwVDfRgbBAaqqoZ1XBMHswsHtxtFaH1iqaoGNgAIxRpbFAgfPQSqpbgGBqUD1wBXeCYp1AYZ19JJOYgH1KwA4UBvQwXUBxPqVD9L3sbp2BNk2xvvFPJd+MFCN6HAAIKgNggY0KtEBAAh+QQJCgAAACwAAAAAIAAgAAAE6BDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfYIDMaAFdTESJeaEDAIMxYFqrOUaNW4E4ObYcCXaiBVEgULe0NJaxxtYksjh2NLkZISgDgJhHthkpU4mW6blRiYmZOlh4JWkDqILwUGBnE6TYEbCgevr0N1gH4At7gHiRpFaLNrrq8HNgAJA70AWxQIH1+vsYMDAzZQPC9VCNkDWUhGkuE5PxJNwiUK4UfLzOlD4WvzAHaoG9nxPi5d+jYUqfAhhykOFwJWiAAAIfkECQoAAAAsAAAAACAAIAAABPAQyElpUqnqzaciSoVkXVUMFaFSwlpOCcMYlErAavhOMnNLNo8KsZsMZItJEIDIFSkLGQoQTNhIsFehRww2CQLKF0tYGKYSg+ygsZIuNqJksKgbfgIGepNo2cIUB3V1B3IvNiBYNQaDSTtfhhx0CwVPI0UJe0+bm4g5VgcGoqOcnjmjqDSdnhgEoamcsZuXO1aWQy8KAwOAuTYYGwi7w5h+Kr0SJ8MFihpNbx+4Erq7BYBuzsdiH1jCAzoSfl0rVirNbRXlBBlLX+BP0XJLAPGzTkAuAOqb0WT5AH7OcdCm5B8TgRwSRKIHQtaLCwg1RAAAOwAAAAAAAAAAAA==); background-size: 32px auto; } .effeckt-button, .effeckt-button .spinner, .effeckt-button .label { transition: 500ms cubic-bezier(0.175, 0.885, 0.32, 1.275) all; } .effeckt-button[data-effeckt-type="expand-right"] .spinner { right: 16px; } .effeckt-button[data-effeckt-type="expand-right"][data-loading] { padding-right: 64px; } .effeckt-button[data-effeckt-type="expand-right"][data-loading] .spinner { opacity: 1; } .effeckt-button[data-effeckt-type="expand-left"] .spinner { left: 16px; margin-left: 0; } .effeckt-button[data-effeckt-type="expand-left"][data-loading] { padding-left: 64px; } .effeckt-button[data-effeckt-type="expand-left"][data-loading] .spinner { opacity: 1; } .effeckt-button[data-effeckt-type="expand-up"] { overflow: hidden; } .effeckt-button[data-effeckt-type="expand-up"] .spinner { top: 32px; left: 50%; } .effeckt-button[data-effeckt-type="expand-up"][data-loading] { padding-top: 64px; } .effeckt-button[data-effeckt-type="expand-up"][data-loading] .spinner { opacity: 1; top: 16px; margin-top: 0; } .effeckt-button[data-effeckt-type="expand-down"] { overflow: hidden; } .effeckt-button[data-effeckt-type="expand-down"] .spinner { left: 50%; top: 100%; margin-top: -48px; } .effeckt-button[data-effeckt-type="expand-down"][data-loading] { padding-bottom: 64px; } .effeckt-button[data-effeckt-type="expand-down"][data-loading] .spinner { opacity: 1; } .effeckt-button[data-effeckt-type="slide-left"] { overflow: hidden; } .effeckt-button[data-effeckt-type="slide-left"] .label { position: relative; } .effeckt-button[data-effeckt-type="slide-left"] .spinner { left: 100%; } .effeckt-button[data-effeckt-type="slide-left"][data-loading] .label { opacity: 0; left: -100%; } .effeckt-button[data-effeckt-type="slide-left"][data-loading] .spinner { opacity: 1; left: 50%; } .effeckt-button[data-effeckt-type="slide-right"] { overflow: hidden; } .effeckt-button[data-effeckt-type="slide-right"] .label { position: relative; } .effeckt-button[data-effeckt-type="slide-right"] .spinner { left: 0%; } .effeckt-button[data-effeckt-type="slide-right"][data-loading] .label { opacity: 0; left: 100%; } .effeckt-button[data-effeckt-type="slide-right"][data-loading] .spinner { opacity: 1; left: 50%; } .effeckt-button[data-effeckt-type="slide-up"] { overflow: hidden; } .effeckt-button[data-effeckt-type="slide-up"] .label { position: relative; } .effeckt-button[data-effeckt-type="slide-up"] .spinner { left: 50%; top: 100%; } .effeckt-button[data-effeckt-type="slide-up"][data-loading] .label { opacity: 0; top: -1em; } .effeckt-button[data-effeckt-type="slide-up"][data-loading] .spinner { opacity: 1; top: 50%; } .effeckt-button[data-effeckt-type="slide-down"] { overflow: hidden; } .effeckt-button[data-effeckt-type="slide-down"] .label { position: relative; } .effeckt-button[data-effeckt-type="slide-down"] .spinner { left: 50%; top: 0%; } .effeckt-button[data-effeckt-type="slide-down"][data-loading] .label { opacity: 0; top: 1em; } .effeckt-button[data-effeckt-type="slide-down"][data-loading] .spinner { opacity: 1; top: 50%; } .effeckt-button[data-effeckt-type="zoom-in"], .effeckt-button[data-effeckt-type="zoom-in"] .spinner, .effeckt-button[data-effeckt-type="zoom-in"] .label, .effeckt-button[data-effeckt-type="zoom-out"], .effeckt-button[data-effeckt-type="zoom-out"] .spinner, .effeckt-button[data-effeckt-type="zoom-out"] .label { transition: 500ms ease all; } .effeckt-button[data-effeckt-type="zoom-out"] { overflow: hidden; } .effeckt-button[data-effeckt-type="zoom-out"] .spinner { left: 50%; -webkit-transform: scale(2.5); -ms-transform: scale(2.5); transform: scale(2.5); } .effeckt-button[data-effeckt-type="zoom-out"] .label { position: relative; display: inline-block; } .effeckt-button[data-effeckt-type="zoom-out"][data-loading] .label { opacity: 0; -webkit-transform: scale(0.5); -ms-transform: scale(0.5); transform: scale(0.5); } .effeckt-button[data-effeckt-type="zoom-out"][data-loading] .spinner { opacity: 1; -webkit-transform: none; -ms-transform: none; transform: none; } .effeckt-button[data-effeckt-type="zoom-in"] { overflow: hidden; } .effeckt-button[data-effeckt-type="zoom-in"] .spinner { left: 50%; -webkit-transform: scale(0.2); -ms-transform: scale(0.2); transform: scale(0.2); } .effeckt-button[data-effeckt-type="zoom-in"] .label { position: relative; display: inline-block; } .effeckt-button[data-effeckt-type="zoom-in"][data-loading] .label { opacity: 0; -webkit-transform: scale(2.2); -ms-transform: scale(2.2); transform: scale(2.2); } .effeckt-button[data-effeckt-type="zoom-in"][data-loading] .spinner { opacity: 1; -webkit-transform: none; -ms-transform: none; transform: none; } /*========================== FILL ==========================*/ .effeckt-button[data-effeckt-type="fill-from-left"] { overflow: hidden; position: relative; } .effeckt-button[data-effeckt-type="fill-from-left"]:after { content: ''; position: absolute; top: 0; right: 0; width: 100%; height: 100%; background: #000; -webkit-transform: translate(-100%, 0); -ms-transform: translate(-100%, 0); transform: translate(-100%, 0); transition: -webkit-transform 500ms; transition: transform 500ms; } .effeckt-button[data-effeckt-type="fill-from-left"][data-loading]:after { -webkit-transform: translate(0, 0); -ms-transform: translate(0, 0); transform: translate(0, 0); } .effeckt-button[data-effeckt-type="fill-from-left"] .effeckt-button-label { position: relative; z-index: 1; } .effeckt-button[data-effeckt-type="fill-from-right"] { overflow: hidden; position: relative; } .effeckt-button[data-effeckt-type="fill-from-right"]:after { content: ''; position: absolute; top: 0; right: 0; width: 100%; height: 100%; background: #000; -webkit-transform: translate(100%, 0); -ms-transform: translate(100%, 0); transform: translate(100%, 0); transition: -webkit-transform 500ms; transition: transform 500ms; } .effeckt-button[data-effeckt-type="fill-from-right"][data-loading]:after { -webkit-transform: translate(0, 0); -ms-transform: translate(0, 0); transform: translate(0, 0); } .effeckt-button[data-effeckt-type="fill-from-right"] .effeckt-button-label { position: relative; z-index: 1; } .effeckt-button[data-effeckt-type="fill-from-top"] { overflow: hidden; position: relative; } .effeckt-button[data-effeckt-type="fill-from-top"]:after { content: ''; position: absolute; top: 0; right: 0; width: 100%; height: 100%; background: #000; -webkit-transform: translate(0, -100%); -ms-transform: translate(0, -100%); transform: translate(0, -100%); transition: -webkit-transform 500ms; transition: transform 500ms; } .effeckt-button[data-effeckt-type="fill-from-top"][data-loading]:after { -webkit-transform: translate(0, 0); -ms-transform: translate(0, 0); transform: translate(0, 0); } .effeckt-button[data-effeckt-type="fill-from-top"] .effeckt-button-label { position: relative; z-index: 1; } .effeckt-button[data-effeckt-type="fill-from-bottom"] { overflow: hidden; position: relative; } .effeckt-button[data-effeckt-type="fill-from-bottom"]:after { content: ''; position: absolute; top: 0; right: 0; width: 100%; height: 100%; background: #000; -webkit-transform: translate(0, 100%); -ms-transform: translate(0, 100%); transform: translate(0, 100%); transition: -webkit-transform 500ms; transition: transform 500ms; } .effeckt-button[data-effeckt-type="fill-from-bottom"][data-loading]:after { -webkit-transform: translate(0, 0); -ms-transform: translate(0, 0); transform: translate(0, 0); } .effeckt-button[data-effeckt-type="fill-from-bottom"] .effeckt-button-label { position: relative; z-index: 1; } /*========================== ICON SLIDE Example markup: ==========================*/ .demo-button-icon:before { background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEljb01vb24uaW8gLS0+IDwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+IDxzdmcgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIiB2aWV3Qm94PSIwIDAgMzIgMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIGZpbGw9IiNmZmZmZmYiPjxnPjxwYXRoIGQ9Ik0gMTYsMyBDIDEyLjUyOCwzIDkuMjYzLDQuMzUyIDYuODA4LDYuODA4IEMgNC4zNTIsOS4yNjMgMywxMi41MjggMywxNiBDIDMsMTkuNDcyIDQuMzUyLDIyLjczNyA2LjgwOCwyNS4xOTIgQyA5LjI2MywyNy42NDggMTIuNTI4LDI5IDE2LDI5IEMgMTkuNDcyLDI5IDIyLjczNywyNy42NDggMjUuMTkyLDI1LjE5MiBDIDI3LjY0OCwyMi43MzcgMjksMTkuNDcyIDI5LDE2IEMgMjksMTIuNTI4IDI3LjY0OCw5LjI2MyAyNS4xOTIsNi44MDggQyAyMi43MzcsNC4zNTIgMTkuNDcyLDMgMTYsMyBaIE0gMTYsMCBMIDE2LDAgQyAyNC44MzcsMCAzMiw3LjE2MyAzMiwxNiBDIDMyLDI0LjgzNyAyNC44MzcsMzIgMTYsMzIgQyA3LjE2MywzMiAwLDI0LjgzNyAwLDE2IEMgMCw3LjE2MyA3LjE2MywwIDE2LDAgWk0gMTQsMjJMIDE4LDIyTCAxOCwyNkwgMTQsMjZ6TSAxNCw2TCAxOCw2TCAxOCwxOEwgMTQsMTh6Ij48L3BhdGg+PC9nPjwvc3ZnPg==) no-repeat center center; background-size: 30px; } .effeckt-button[data-effeckt-type~="icon-slide"] { overflow: hidden; padding: 0; } .effeckt-button[data-effeckt-type~="icon-slide"] .effeckt-button-label { padding: 0.8rem 1rem; display: block; position: relative; transition: -webkit-transform 500ms; transition: transform 500ms; } .effeckt-button[data-effeckt-type~="icon-slide"] .effeckt-button-label:before { content: ''; display: block; position: absolute; width: 100%; height: 100%; } .effeckt-button[data-effeckt-type~="icon-slide"][data-effeckt-type~="from-top"] .effeckt-button-label:before { top: -100%; left: 0; right: 0; } .effeckt-button[data-effeckt-type~="icon-slide"][data-effeckt-type~="from-bottom"] .effeckt-button-label:before { bottom: -100%; left: 0; right: 0; } .effeckt-button[data-effeckt-type~="icon-slide"][data-effeckt-type~="from-left"] .effeckt-button-label:before { left: -100%; top: 0; bottom: 0; } .effeckt-button[data-effeckt-type~="icon-slide"][data-effeckt-type~="from-right"] .effeckt-button-label:before { right: -100%; top: 0; bottom: 0; } .effeckt-button[data-effeckt-type~="icon-slide"][data-loading][data-effeckt-type~="from-top"] .effeckt-button-label { -webkit-transform: translateY(100%); -ms-transform: translateY(100%); transform: translateY(100%); } .effeckt-button[data-effeckt-type~="icon-slide"][data-loading][data-effeckt-type~="from-bottom"] .effeckt-button-label { -webkit-transform: translateY(-100%); -ms-transform: translateY(-100%); transform: translateY(-100%); } .effeckt-button[data-effeckt-type~="icon-slide"][data-loading][data-effeckt-type~="from-left"] .effeckt-button-label { -webkit-transform: translateX(100%); -ms-transform: translateX(100%); transform: translateX(100%); } .effeckt-button[data-effeckt-type~="icon-slide"][data-loading][data-effeckt-type~="from-right"] .effeckt-button-label { -webkit-transform: translateX(-100%); -ms-transform: translateX(-100%); transform: translateX(-100%); } .effeckt-button[data-effeckt-type="3d-rotate-success"], .effeckt-button[data-effeckt-type="3d-rotate-error"] { transition: all 500ms; -webkit-transform-style: preserve-3d; transform-style: preserve-3d; -webkit-backface-visibility: hidden; backface-visibility: hidden; } .effeckt-button[data-effeckt-type="3d-rotate-error"]:before, .effeckt-button[data-effeckt-type="3d-rotate-success"]:after { white-space: nowrap; width: 100%; height: 100%; position: absolute; left: 0; line-height: 2em; } .effeckt-button[data-effeckt-type="3d-rotate-error"]:before { top: 100%; content: attr(data-effeckt-message); -webkit-transform-origin: 0% 0%; -ms-transform-origin: 0% 0%; transform-origin: 0% 0%; -webkit-transform: rotateX(-90deg); transform: rotateX(-90deg); -webkit-backface-visibility: hidden; backface-visibility: hidden; } .effeckt-button[data-effeckt-type="3d-rotate-error"][data-loading] { -webkit-transform-origin: 50% 0%; -ms-transform-origin: 50% 0%; transform-origin: 50% 0%; -webkit-transform: rotateX(90deg) translateY(-100%); transform: rotateX(90deg) translateY(-100%); } .effeckt-button[data-effeckt-type="3d-rotate-success"]:after { top: -100%; content: attr(data-effeckt-message); -webkit-transform-origin: 0% 100%; -ms-transform-origin: 0% 100%; transform-origin: 0% 100%; -webkit-transform: rotateX(90deg); transform: rotateX(90deg); -webkit-backface-visibility: hidden; backface-visibility: hidden; } .effeckt-button[data-effeckt-type="3d-rotate-success"][data-loading] { -webkit-transform-origin: 50% 100%; -ms-transform-origin: 50% 100%; transform-origin: 50% 100%; -webkit-transform: rotateX(-90deg) translateY(100%); transform: rotateX(-90deg) translateY(100%); } ================================================ FILE: css/modules/captions.css ================================================ /* Captions Markup Pattern & Explanation data-effeckt-type = ""
*/ .effeckt-caption { position: relative; } .effeckt-caption img { transition: 500ms; } .effeckt-caption figcaption { position: absolute; transition: 500ms; width: 100%; } .effeckt-caption[data-effeckt-type="quarter-appear"] figcaption { bottom: 0; left: 0; opacity: 0; } .effeckt-caption[data-effeckt-type="quarter-appear"]:hover figcaption, .effeckt-caption[data-effeckt-type="quarter-appear"]:active figcaption, .effeckt-caption[data-effeckt-type="quarter-appear"].active figcaption { opacity: 1; } .effeckt-caption[data-effeckt-type="quarter-slide-up"] figcaption { bottom: 0; left: 0; opacity: 0; -webkit-transform: translateY(100%); -ms-transform: translateY(100%); transform: translateY(100%); } .effeckt-caption[data-effeckt-type="quarter-slide-up"]:hover figcaption, .effeckt-caption[data-effeckt-type="quarter-slide-up"]:active figcaption, .effeckt-caption[data-effeckt-type="quarter-slide-up"].active figcaption { opacity: 1; -webkit-transform: translateY(0); -ms-transform: translateY(0); transform: translateY(0); } .effeckt-caption[data-effeckt-type="sqkwoosh"] figcaption { top: 0; left: 0; width: 100%; height: 100%; transition: none; z-index: 0; } .effeckt-caption[data-effeckt-type="sqkwoosh"] img { position: relative; z-index: 1; transition-delay: 0.25s; } .effeckt-caption[data-effeckt-type="sqkwoosh"] .effeckt-figcaption-wrap { position: absolute; bottom: 1rem; opacity: 0; transition: opacity 0.25s linear 0s; } .effeckt-caption[data-effeckt-type="sqkwoosh"]:hover .effeckt-figcaption-wrap, .effeckt-caption[data-effeckt-type="sqkwoosh"]:active .effeckt-figcaption-wrap, .effeckt-caption[data-effeckt-type="sqkwoosh"].active .effeckt-figcaption-wrap { opacity: 1; transition-delay: 0.25s; } .effeckt-caption[data-effeckt-type="sqkwoosh"]:hover img, .effeckt-caption[data-effeckt-type="sqkwoosh"]:active img, .effeckt-caption[data-effeckt-type="sqkwoosh"].active img { -webkit-transform: scale(0.5) translateY(-80px); -ms-transform: scale(0.5) translateY(-80px); transform: scale(0.5) translateY(-80px); transition-delay: 0; } .effeckt-caption[data-effeckt-type="quarter-slide-side"] figcaption { left: 0; bottom: 0; opacity: 0; -webkit-transform: translateX(100%); -ms-transform: translateX(100%); transform: translateX(100%); } .effeckt-caption[data-effeckt-type="quarter-slide-side"]:hover figcaption, .effeckt-caption[data-effeckt-type="quarter-slide-side"]:active figcaption, .effeckt-caption[data-effeckt-type="quarter-slide-side"].active figcaption { opacity: 1; -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); } .effeckt-caption[data-effeckt-type="cover-fade"] figcaption { top: 0; left: 0; height: 100%; opacity: 0; } .effeckt-caption[data-effeckt-type="cover-fade"]:hover figcaption, .effeckt-caption[data-effeckt-type="cover-fade"]:active figcaption, .effeckt-caption[data-effeckt-type="cover-fade"].active figcaption { opacity: 1; } .effeckt-caption[data-effeckt-type="quarter-fall-in"] figcaption { top: 0; left: 0; -webkit-transform: translateX(100%) rotate(20deg); -ms-transform: translateX(100%) rotate(20deg); transform: translateX(100%) rotate(20deg); opacity: 0; } .effeckt-caption[data-effeckt-type="quarter-fall-in"]:hover figcaption, .effeckt-caption[data-effeckt-type="quarter-fall-in"]:active figcaption, .effeckt-caption[data-effeckt-type="quarter-fall-in"].active figcaption { -webkit-transform: translateX(0) rotate(0deg); -ms-transform: translateX(0) rotate(0deg); transform: translateX(0) rotate(0deg); opacity: 1; } .effeckt-caption[data-effeckt-type="quarter-two-step"] figcaption { top: 0; left: 0; -webkit-transform: translateX(-100%); -ms-transform: translateX(-100%); transform: translateX(-100%); opacity: 0; z-index: 2; } .effeckt-caption[data-effeckt-type="quarter-two-step"] .effeckt-figcaption-wrap { transition: 500ms 250ms; -webkit-transform: translateX(200%); -ms-transform: translateX(200%); transform: translateX(200%); } .effeckt-caption[data-effeckt-type="quarter-two-step"]:hover figcaption, .effeckt-caption[data-effeckt-type="quarter-two-step"]:active figcaption, .effeckt-caption[data-effeckt-type="quarter-two-step"].active figcaption { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; } .effeckt-caption[data-effeckt-type="quarter-two-step"]:hover .effeckt-figcaption-wrap, .effeckt-caption[data-effeckt-type="quarter-two-step"]:active .effeckt-figcaption-wrap, .effeckt-caption[data-effeckt-type="quarter-two-step"].active .effeckt-figcaption-wrap { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); } .effeckt-caption[data-effeckt-type="cover-push-right"] figcaption { top: 0; left: 0; height: 100%; -webkit-transform: translateX(-100%); -ms-transform: translateX(-100%); transform: translateX(-100%); opacity: 0; } .effeckt-caption[data-effeckt-type="cover-push-right"] img { transition: 500ms; -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); } .effeckt-caption[data-effeckt-type="cover-push-right"]:hover figcaption, .effeckt-caption[data-effeckt-type="cover-push-right"]:active figcaption, .effeckt-caption[data-effeckt-type="cover-push-right"].active figcaption { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; } .effeckt-caption[data-effeckt-type="cover-push-right"]:hover img, .effeckt-caption[data-effeckt-type="cover-push-right"]:active img, .effeckt-caption[data-effeckt-type="cover-push-right"].active img { -webkit-transform: translateX(100%); -ms-transform: translateX(100%); transform: translateX(100%); } .effeckt-caption[data-effeckt-type="cover-slide-top"] figcaption { top: 0; left: 0; height: 100%; -webkit-transform: translateY(-100%); -ms-transform: translateY(-100%); transform: translateY(-100%); opacity: 0; } .effeckt-caption[data-effeckt-type="cover-slide-top"] img { transition: 500ms; } .effeckt-caption[data-effeckt-type="cover-slide-top"]:hover figcaption, .effeckt-caption[data-effeckt-type="cover-slide-top"]:active figcaption, .effeckt-caption[data-effeckt-type="cover-slide-top"].active figcaption { -webkit-transform: translateY(0); -ms-transform: translateY(0); transform: translateY(0); opacity: 1; } .effeckt-caption[data-effeckt-type="quarter-zoom"] figcaption { top: 0; left: 0; -webkit-transform: scale(2); -ms-transform: scale(2); transform: scale(2); text-align: center; opacity: 0; } .effeckt-caption[data-effeckt-type="quarter-zoom"] img { transition: 500ms; } .effeckt-caption[data-effeckt-type="quarter-zoom"]:hover figcaption, .effeckt-caption[data-effeckt-type="quarter-zoom"]:active figcaption, .effeckt-caption[data-effeckt-type="quarter-zoom"].active figcaption { -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1); opacity: 1; } .effeckt-caption[data-effeckt-type="quarter-zoom"]:hover img, .effeckt-caption[data-effeckt-type="quarter-zoom"]:active img, .effeckt-caption[data-effeckt-type="quarter-zoom"].active img { -webkit-transform: scale(1.1); -ms-transform: scale(1.1); transform: scale(1.1); } .effeckt-caption[data-effeckt-type="revolving-door-left"] { overflow: visible; } .effeckt-caption[data-effeckt-type="revolving-door-left"] figcaption { top: 0; left: 0; width: 100%; height: 100%; -webkit-transform: perspective(1300px) rotateY(180deg); transform: perspective(1300px) rotateY(180deg); -webkit-backface-visibility: hidden; backface-visibility: hidden; } .effeckt-caption[data-effeckt-type="revolving-door-left"] img { -webkit-transform: perspective(1300px); transform: perspective(1300px); transition: 500ms; } .effeckt-caption[data-effeckt-type="revolving-door-left"]:hover figcaption, .effeckt-caption[data-effeckt-type="revolving-door-left"]:active figcaption, .effeckt-caption[data-effeckt-type="revolving-door-left"].active figcaption { -webkit-transform: perspective(1300px) rotateY(0deg); transform: perspective(1300px) rotateY(0deg); } .effeckt-caption[data-effeckt-type="revolving-door-left"]:hover img, .effeckt-caption[data-effeckt-type="revolving-door-left"]:active img, .effeckt-caption[data-effeckt-type="revolving-door-left"].active img { -webkit-transform: perspective(1300px) rotateY(-180deg); transform: perspective(1300px) rotateY(-180deg); } .effeckt-caption[data-effeckt-type="revolving-door-right"] { overflow: visible; } .effeckt-caption[data-effeckt-type="revolving-door-right"] figcaption { top: 0; left: 0; width: 100%; height: 100%; -webkit-transform: perspective(1300px) rotateY(180deg); transform: perspective(1300px) rotateY(180deg); -webkit-backface-visibility: hidden; backface-visibility: hidden; } .effeckt-caption[data-effeckt-type="revolving-door-right"] img { -webkit-transform: perspective(1300px); transform: perspective(1300px); transition: 500ms; } .effeckt-caption[data-effeckt-type="revolving-door-right"]:hover figcaption, .effeckt-caption[data-effeckt-type="revolving-door-right"]:active figcaption, .effeckt-caption[data-effeckt-type="revolving-door-right"].active figcaption { -webkit-transform: perspective(1300px) rotateY(360deg); transform: perspective(1300px) rotateY(360deg); } .effeckt-caption[data-effeckt-type="revolving-door-right"]:hover img, .effeckt-caption[data-effeckt-type="revolving-door-right"]:active img, .effeckt-caption[data-effeckt-type="revolving-door-right"].active img { -webkit-transform: perspective(1300px) rotateY(180deg); transform: perspective(1300px) rotateY(180deg); } .effeckt-caption[data-effeckt-type="revolving-door-top"] { overflow: visible; } .effeckt-caption[data-effeckt-type="revolving-door-top"] figcaption { top: 0; left: 0; width: 100%; height: 100%; -webkit-transform: perspective(1300px) rotateX(180deg); transform: perspective(1300px) rotateX(180deg); -webkit-backface-visibility: hidden; backface-visibility: hidden; } .effeckt-caption[data-effeckt-type="revolving-door-top"] img { -webkit-transform: perspective(1300px); transform: perspective(1300px); transition: 500ms; } .effeckt-caption[data-effeckt-type="revolving-door-top"]:hover figcaption, .effeckt-caption[data-effeckt-type="revolving-door-top"]:active figcaption, .effeckt-caption[data-effeckt-type="revolving-door-top"].active figcaption { -webkit-transform: perspective(1300px) rotateX(360deg); transform: perspective(1300px) rotateX(360deg); } .effeckt-caption[data-effeckt-type="revolving-door-top"]:hover img, .effeckt-caption[data-effeckt-type="revolving-door-top"]:active img, .effeckt-caption[data-effeckt-type="revolving-door-top"].active img { -webkit-transform: perspective(1300px) rotateX(180deg); transform: perspective(1300px) rotateX(180deg); } .effeckt-caption[data-effeckt-type="revolving-door-bottom"] { overflow: visible; } .effeckt-caption[data-effeckt-type="revolving-door-bottom"] figcaption { top: 0; left: 0; width: 100%; height: 100%; -webkit-transform: perspective(1300px) rotateX(180deg); transform: perspective(1300px) rotateX(180deg); -webkit-backface-visibility: hidden; backface-visibility: hidden; } .effeckt-caption[data-effeckt-type="revolving-door-bottom"] img { -webkit-transform: perspective(1300px); transform: perspective(1300px); transition: 500ms; } .effeckt-caption[data-effeckt-type="revolving-door-bottom"]:hover figcaption, .effeckt-caption[data-effeckt-type="revolving-door-bottom"]:active figcaption, .effeckt-caption[data-effeckt-type="revolving-door-bottom"].active figcaption { -webkit-transform: perspective(1300px) rotateX(0deg); transform: perspective(1300px) rotateX(0deg); } .effeckt-caption[data-effeckt-type="revolving-door-bottom"]:hover img, .effeckt-caption[data-effeckt-type="revolving-door-bottom"]:active img, .effeckt-caption[data-effeckt-type="revolving-door-bottom"].active img { -webkit-transform: perspective(1300px) rotateX(-180deg); transform: perspective(1300px) rotateX(-180deg); } .effeckt-caption[data-effeckt-type="offset"] { overflow: visible; } .effeckt-caption[data-effeckt-type="offset"] figcaption { top: 0; left: 0; text-align: center; opacity: 0; height: 100%; } .effeckt-caption[data-effeckt-type="offset"] img { transition: 500ms; } .effeckt-caption[data-effeckt-type="offset"]:hover figcaption, .effeckt-caption[data-effeckt-type="offset"]:active figcaption, .effeckt-caption[data-effeckt-type="offset"].active figcaption { -webkit-transform: translate(15px, 15px); -ms-transform: translate(15px, 15px); transform: translate(15px, 15px); opacity: 1; z-index: 100; overflow: hidden; } .effeckt-caption[data-effeckt-type="guillotine-reverse"] { overflow: visible; } .effeckt-caption[data-effeckt-type="guillotine-reverse"] figcaption { top: 0; left: 0; text-align: center; height: 100%; } .effeckt-caption[data-effeckt-type="guillotine-reverse"] img { display: block; position: relative; z-index: 10; transition: 500ms; } .effeckt-caption[data-effeckt-type="guillotine-reverse"]:hover img, .effeckt-caption[data-effeckt-type="guillotine-reverse"]:active img, .effeckt-caption[data-effeckt-type="guillotine-reverse"].active img { -webkit-transform: translateY(-100%); -ms-transform: translateY(-100%); transform: translateY(-100%); } .effeckt-caption[data-effeckt-type="half-slide"] figcaption { top: 0; left: 0; text-align: center; height: 100%; -webkit-transform: translateY(100%); -ms-transform: translateY(100%); transform: translateY(100%); } .effeckt-caption[data-effeckt-type="half-slide"] img { display: block; position: relative; transition: 500ms; } .effeckt-caption[data-effeckt-type="half-slide"]:hover img, .effeckt-caption[data-effeckt-type="half-slide"]:active img, .effeckt-caption[data-effeckt-type="half-slide"].active img { -webkit-transform: translateY(-50%); -ms-transform: translateY(-50%); transform: translateY(-50%); } .effeckt-caption[data-effeckt-type="half-slide"]:hover figcaption, .effeckt-caption[data-effeckt-type="half-slide"]:active figcaption, .effeckt-caption[data-effeckt-type="half-slide"].active figcaption { -webkit-transform: translateY(50%); -ms-transform: translateY(50%); transform: translateY(50%); } .effeckt-caption[data-effeckt-type="tunnel"] figcaption { top: 0; left: 0; text-align: center; height: 100%; opacity: 0; -webkit-transform: scale(0.7); -ms-transform: scale(0.7); transform: scale(0.7); } .effeckt-caption[data-effeckt-type="tunnel"] img { display: block; position: relative; z-index: 10; transition: 500ms; } .effeckt-caption[data-effeckt-type="tunnel"]:hover img, .effeckt-caption[data-effeckt-type="tunnel"]:active img, .effeckt-caption[data-effeckt-type="tunnel"].active img { -webkit-transform: scale(0.4); -ms-transform: scale(0.4); transform: scale(0.4); } .effeckt-caption[data-effeckt-type="tunnel"]:hover figcaption, .effeckt-caption[data-effeckt-type="tunnel"]:active figcaption, .effeckt-caption[data-effeckt-type="tunnel"].active figcaption { opacity: 1; -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1); } ================================================ FILE: css/modules/form-elements.css ================================================ @media screen and (-webkit-min-device-pixel-ratio: 0) { .effeckt-ckbox-ios7[type=checkbox], .effeckt-rdio-ios7[type=radio] { -webkit-appearance: none; -moz-appearance: none; appearance: none; box-shadow: inset 0px 0px 0px 1px #e6e6e6; border-radius: 15px; cursor: pointer; display: inline-block; height: 31px; padding: 1px; position: relative; margin: 0px; width: 52px; outline: 0; transition: all 0.3s ease-out; -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1); background: #FFF; } .effeckt-ckbox-ios7[type=checkbox]:checked, .effeckt-rdio-ios7:checked { box-shadow: inset 0px 0px 0px 20px #666; } .effeckt-ckbox-ios7[type=checkbox]:after, .effeckt-rdio-ios7[type=radio]:after { box-shadow: 0px 2px 2px 1px rgba(0, 0, 0, 0.2); border-radius: 15px; content: ''; cursor: pointer; height: 29px; position: absolute; width: 29px; transition: all 0.1s ease-in 0.1s; background: #FFF; } .effeckt-ckbox-ios7[type="checkbox"]:checked:after, .effeckt-rdio-ios7[type="radio"]:checked:after { left: 22px; } .effeckt-ckbox-android[type=checkbox], .effeckt-rdio-android[type=radio] { -webkit-appearance: none; -moz-appearance: none; appearance: none; box-shadow: inset 0px 0px 0px 1px #e6e6e6; border-radius: 1px; cursor: pointer; display: inline-block; height: 21px; padding: 1px; position: relative; margin: 0px; width: 72px; outline: 0; transition: all 0.3s ease-out; -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1); background: #333; } .effeckt-ckbox-android[type=checkbox]:checked, .effeckt-rdio-android:checked { box-shadow: inset 0px 0px 0px 20px #666666; } .effeckt-ckbox-android[type=checkbox]:after, .effeckt-rdio-android[type=radio]:after { box-shadow: 0px 0px 0px 0px; border-radius: 1px; content: ''; cursor: pointer; height: 19px; position: absolute; width: 29px; transition: all 0.1s ease-in 0.1s; background: #4d4d4d; } .effeckt-ckbox-android[type="checkbox"]:checked:after, .effeckt-rdio-android[type="radio"]:checked:after { left: 43px; } } ================================================ FILE: css/modules/lazy-loading.css ================================================ .effeckt-lazy-loading-element { opacity: 0; } .effeckt-lazy-loading-element.shown { opacity: 1; } [data-effeckt-type="fade"] .effeckt-lazy-loading-element.animating { opacity: 0; -webkit-animation: fadeIn 0.5s ease forwards; animation: fadeIn 0.5s ease forwards; } @-webkit-keyframes fadeIn { to { opacity: 1; } } @keyframes fadeIn { to { opacity: 1; } } [data-effeckt-type="slide-up"] .effeckt-lazy-loading-element.animating { opacity: 0; -webkit-transform: translateY(200px); -ms-transform: translateY(200px); transform: translateY(200px); -webkit-animation: slideUp 0.5s ease forwards; animation: slideUp 0.5s ease forwards; } @-webkit-keyframes slideUp { to { opacity: 1; -webkit-transform: translateY(0px); transform: translateY(0px); } } @keyframes slideUp { to { opacity: 1; -webkit-transform: translateY(0px); transform: translateY(0px); } } [data-effeckt-type="scale-up"] .effeckt-lazy-loading-element.animating { opacity: 0; -webkit-transform: scale(0.6); -ms-transform: scale(0.6); transform: scale(0.6); -webkit-animation: scaleUp 0.5s ease forwards; animation: scaleUp 0.5s ease forwards; } @-webkit-keyframes scaleUp { to { opacity: 1; -webkit-transform: scale(1); transform: scale(1); } } @keyframes scaleUp { to { opacity: 1; -webkit-transform: scale(1); transform: scale(1); } } [data-effeckt-type="scale-down"] { -webkit-perspective: 1300px; perspective: 1300px; } [data-effeckt-type="scale-down"] .effeckt-lazy-loading-element.animating { opacity: 0; -webkit-transform-style: preserve-3d; transform-style: preserve-3d; -webkit-transform: scale(1.4); -ms-transform: scale(1.4); transform: scale(1.4); -webkit-animation: scaleDown 0.5s ease forwards; animation: scaleDown 0.5s ease forwards; } @-webkit-keyframes scaleDown { to { opacity: 1; -webkit-transform: scale(1); transform: scale(1); } } @keyframes scaleDown { to { opacity: 1; -webkit-transform: scale(1); transform: scale(1); } } [data-effeckt-type="fall"] { -webkit-perspective: 1300px; perspective: 1300px; } [data-effeckt-type="fall"] .effeckt-lazy-loading-element.animating { opacity: 0; -webkit-transform-style: preserve-3d; transform-style: preserve-3d; -webkit-transform: translateZ(400px) translateY(300px) rotateX(-90deg); transform: translateZ(400px) translateY(300px) rotateX(-90deg); -webkit-animation: fall 0.75s ease forwards; animation: fall 0.75s ease forwards; } @-webkit-keyframes fall { to { opacity: 1; -webkit-transform: translateZ(0px) translateY(0px) rotateX(0deg); transform: translateZ(0px) translateY(0px) rotateX(0deg); } } @keyframes fall { to { opacity: 1; -webkit-transform: translateZ(0px) translateY(0px) rotateX(0deg); transform: translateZ(0px) translateY(0px) rotateX(0deg); } } [data-effeckt-type="fly"] { -webkit-perspective: 1300px; perspective: 1300px; } [data-effeckt-type="fly"] .effeckt-lazy-loading-element.animating { -webkit-transform-style: preserve-3d; transform-style: preserve-3d; -webkit-transform-origin: 50% 50% -300px; -ms-transform-origin: 50% 50% -300px; transform-origin: 50% 50% -300px; -webkit-transform: rotateX(-180deg); transform: rotateX(-180deg); -webkit-animation: fly 0.5s ease-in-out forwards; animation: fly 0.5s ease-in-out forwards; } @-webkit-keyframes fly { to { opacity: 1; -webkit-transform: rotateX(0deg); transform: rotateX(0deg); } } @keyframes fly { to { opacity: 1; -webkit-transform: rotateX(0deg); transform: rotateX(0deg); } } [data-effeckt-type="sign-3D"] { -webkit-perspective: 1300px; perspective: 1300px; } [data-effeckt-type="sign-3D"] .effeckt-lazy-loading-element.animating { opacity: 0; -webkit-transform-style: preserve-3d; transform-style: preserve-3d; -webkit-transform-origin: 0% 0%; -ms-transform-origin: 0% 0%; transform-origin: 0% 0%; -webkit-transform: rotateX(-80deg); transform: rotateX(-80deg); -webkit-animation: sign3D 0.5s ease-in-out forwards; animation: sign3D 0.5s ease-in-out forwards; } @-webkit-keyframes sign3D { to { opacity: 1; -webkit-transform: rotateX(0deg); transform: rotateX(0deg); } } @keyframes sign3D { to { opacity: 1; -webkit-transform: rotateX(0deg); transform: rotateX(0deg); } } [data-effeckt-type="helix"] { -webkit-perspective: 1300px; perspective: 1300px; } [data-effeckt-type="helix"] .effeckt-lazy-loading-element.animating { opacity: 0; -webkit-transform-style: preserve-3d; transform-style: preserve-3d; -webkit-transform: rotateY(-180deg); transform: rotateY(-180deg); -webkit-animation: helix 0.5s ease-in-out forwards; animation: helix 0.5s ease-in-out forwards; } @-webkit-keyframes helix { to { opacity: 1; -webkit-transform: rotateY(0deg); transform: rotateY(0deg); } } @keyframes helix { to { opacity: 1; -webkit-transform: rotateY(0deg); transform: rotateY(0deg); } } [data-effeckt-type="popup"] { -webkit-perspective: 1300px; perspective: 1300px; } [data-effeckt-type="popup"] .effeckt-lazy-loading-element.animating { opacity: 0; -webkit-transform-style: preserve-3d; transform-style: preserve-3d; -webkit-transform: scale(0.4); -ms-transform: scale(0.4); transform: scale(0.4); -webkit-animation: popup 0.5s ease-in-out forwards; animation: popup 0.5s ease-in-out forwards; } @-webkit-keyframes popup { 70% { -webkit-transform: scale(1.1); transform: scale(1.1); opacity: 0.8; -webkit-animation-timing-function: ease-out; animation-timing-function: ease-out; } 100% { opacity: 1; -webkit-transform: scale(1); transform: scale(1); } } @keyframes popup { 70% { -webkit-transform: scale(1.1); transform: scale(1.1); opacity: 0.8; -webkit-animation-timing-function: ease-out; animation-timing-function: ease-out; } 100% { opacity: 1; -webkit-transform: scale(1); transform: scale(1); } } ================================================ FILE: css/modules/list-items.css ================================================ .effeckt-list[data-effeckt-type='pop-in'] { overflow: hidden; } .effeckt-list[data-effeckt-type='pop-in'] .new-item { max-height: 0; opacity: 0; -webkit-transform: translateX(-300px); -ms-transform: translateX(-300px); transform: translateX(-300px); -webkit-animation: openSpace 500ms ease forwards, moveIn 750ms 500ms ease forwards; animation: openSpace 500ms ease forwards, moveIn 750ms 500ms ease forwards; } .effeckt-list[data-effeckt-type='pop-in'] .remove-item { max-height: 50px; opacity: 1; -webkit-animation: moveOut 750ms 500ms ease forwards, closeSpace 500ms ease forwards 750ms; animation: moveOut 750ms 500ms ease forwards, closeSpace 500ms ease forwards 750ms; } @-webkit-keyframes openSpace { to { max-height: 50px; } } @keyframes openSpace { to { max-height: 50px; } } @-webkit-keyframes moveIn { to { opacity: 1; -webkit-transform: translateX(0); transform: translateX(0); } } @keyframes moveIn { to { opacity: 1; -webkit-transform: translateX(0); transform: translateX(0); } } @-webkit-keyframes moveOut { to { opacity: 0; -webkit-transform: translateX(-300px); transform: translateX(-300px); } } @keyframes moveOut { to { opacity: 0; -webkit-transform: translateX(-300px); transform: translateX(-300px); } } @-webkit-keyframes closeSpace { to { max-height: 0px; } from { max-height: 50px; } } @keyframes closeSpace { to { max-height: 0px; } from { max-height: 50px; } } .effeckt-list[data-effeckt-type='expand-in'] .new-item { max-height: 0; opacity: 0; -webkit-transform: scale(0); -ms-transform: scale(0); transform: scale(0); -webkit-animation: growHeight 500ms ease forwards; animation: growHeight 500ms ease forwards; } .effeckt-list[data-effeckt-type='expand-in'] .remove-item { -webkit-animation: shrinkHeight 500ms ease forwards; animation: shrinkHeight 500ms ease forwards; } @-webkit-keyframes growHeight { to { max-height: 50px; opacity: 1; -webkit-transform: scale(1); transform: scale(1); } } @keyframes growHeight { to { max-height: 50px; opacity: 1; -webkit-transform: scale(1); transform: scale(1); } } @-webkit-keyframes shrinkHeight { to { max-height: 0; opacity: 1; -webkit-transform: scale(0); transform: scale(0); } from { max-height: 50px; opacity: 1; -webkit-transform: scale(1); transform: scale(1); } } @keyframes shrinkHeight { to { max-height: 0; opacity: 1; -webkit-transform: scale(0); transform: scale(0); } from { max-height: 50px; opacity: 1; -webkit-transform: scale(1); transform: scale(1); } } .effeckt-list[data-effeckt-type='wobble-in'] .new-item { -webkit-backface-visibility: visible; backface-visibility: visible; -webkit-animation: WobbleInX 2500ms both 500ms, openSpace 500ms ease forwards; animation: WobbleInX 2500ms both 500ms, openSpace 500ms ease forwards; } .effeckt-list[data-effeckt-type='wobble-in'] .remove-item { -webkit-backface-visibility: visible; backface-visibility: visible; -webkit-animation: WobbleOutX 2500ms both 500ms, closeSpace 1000ms ease forwards 1500ms; animation: WobbleOutX 2500ms both 500ms, closeSpace 1000ms ease forwards 1500ms; } @-webkit-keyframes WobbleInX { 0% { -webkit-transform: perspective(250px) rotateX(90deg); transform: perspective(250px) rotateX(90deg); opacity: 0; } 40% { -webkit-transform: perspective(250px) rotateX(-10deg); transform: perspective(250px) rotateX(-10deg); } 70% { -webkit-transform: perspective(250px) rotateX(10deg); transform: perspective(250px) rotateX(10deg); } 100% { -webkit-transform: perspective(250px) rotateX(0deg); transform: perspective(250px) rotateX(0deg); opacity: 1; } } @keyframes WobbleInX { 0% { -webkit-transform: perspective(250px) rotateX(90deg); transform: perspective(250px) rotateX(90deg); opacity: 0; } 40% { -webkit-transform: perspective(250px) rotateX(-10deg); transform: perspective(250px) rotateX(-10deg); } 70% { -webkit-transform: perspective(250px) rotateX(10deg); transform: perspective(250px) rotateX(10deg); } 100% { -webkit-transform: perspective(250px) rotateX(0deg); transform: perspective(250px) rotateX(0deg); opacity: 1; } } @-webkit-keyframes WobbleOutX { 0% { -webkit-transform: perspective(250px) rotateX(0deg); transform: perspective(250px) rotateX(0deg); opacity: 1; } 100% { -webkit-transform: perspective(250px) rotateX(90deg); transform: perspective(250px) rotateX(90deg); opacity: 0; } } @keyframes WobbleOutX { 0% { -webkit-transform: perspective(250px) rotateX(0deg); transform: perspective(250px) rotateX(0deg); opacity: 1; } 100% { -webkit-transform: perspective(250px) rotateX(90deg); transform: perspective(250px) rotateX(90deg); opacity: 0; } } .effeckt-list[data-effeckt-type='flip-in'] .new-item { -webkit-backface-visibility: visible; backface-visibility: visible; -webkit-transform-origin: top left; -ms-transform-origin: top left; transform-origin: top left; -webkit-animation: FlipIn 2500ms both 500ms, openSpace 500ms ease forwards; animation: FlipIn 2500ms both 500ms, openSpace 500ms ease forwards; } .effeckt-list[data-effeckt-type='flip-in'] .remove-item { -webkit-backface-visibility: visible; backface-visibility: visible; -webkit-transform-origin: top left; -ms-transform-origin: top left; transform-origin: top left; -webkit-animation: FlipOut 2500ms both 500ms, closeSpace 1000ms ease forwards 1000ms; animation: FlipOut 2500ms both 500ms, closeSpace 1000ms ease forwards 1000ms; } @-webkit-keyframes FlipIn { 0% { -webkit-transform: perspective(300px) rotateX(90deg); transform: perspective(300px) rotateX(90deg); opacity: 0; } 100% { -webkit-transform: perspective(300px) rotateX(0deg); transform: perspective(300px) rotateX(0deg); opacity: 1; } } @keyframes FlipIn { 0% { -webkit-transform: perspective(300px) rotateX(90deg); transform: perspective(300px) rotateX(90deg); opacity: 0; } 100% { -webkit-transform: perspective(300px) rotateX(0deg); transform: perspective(300px) rotateX(0deg); opacity: 1; } } @-webkit-keyframes FlipOut { 0% { -webkit-transform: perspective(400px) rotateX(0deg); transform: perspective(400px) rotateX(0deg); opacity: 1; } 100% { -webkit-transform: perspective(400px) rotateX(90deg); transform: perspective(400px) rotateX(90deg); opacity: 0; } } @keyframes FlipOut { 0% { -webkit-transform: perspective(400px) rotateX(0deg); transform: perspective(400px) rotateX(0deg); opacity: 1; } 100% { -webkit-transform: perspective(400px) rotateX(90deg); transform: perspective(400px) rotateX(90deg); opacity: 0; } } .effeckt-list[data-effeckt-type='fall-in'] .new-item { -webkit-backface-visibility: visible; backface-visibility: visible; -webkit-animation: openSpace 1000ms ease forwards, fallInX 1000ms both; animation: openSpace 1000ms ease forwards, fallInX 1000ms both; } .effeckt-list[data-effeckt-type='fall-in'] .remove-item { -webkit-backface-visibility: visible; backface-visibility: visible; -webkit-transform-origin: top left; -ms-transform-origin: top left; transform-origin: top left; -webkit-animation: fallOffX 1000ms both, closeSpace 750ms ease forwards 500ms; animation: fallOffX 1000ms both, closeSpace 750ms ease forwards 500ms; } @-webkit-keyframes fallInX { 0% { opacity: 0; -webkit-transform: translateY(-200px); transform: translateY(-200px); } 100% { opacity: 1; -webkit-transform: translateY(0); transform: translateY(0); } } @keyframes fallInX { 0% { opacity: 0; -webkit-transform: translateY(-200px); transform: translateY(-200px); } 100% { opacity: 1; -webkit-transform: translateY(0); transform: translateY(0); } } @-webkit-keyframes fallOffX { 0% { opacity: 1; -webkit-transform: rotateZ(0); transform: rotateZ(0); } 100% { opacity: 0; -webkit-transform: translateY(200px) rotateZ(90deg); transform: translateY(200px) rotateZ(90deg); } } @keyframes fallOffX { 0% { opacity: 1; -webkit-transform: rotateZ(0); transform: rotateZ(0); } 100% { opacity: 0; -webkit-transform: translateY(200px) rotateZ(90deg); transform: translateY(200px) rotateZ(90deg); } } .effeckt-list[data-effeckt-type='from-above'] .new-item { -webkit-backface-visibility: visible; backface-visibility: visible; -webkit-animation: openSpace 1000ms ease forwards, fromAbove 1000ms both 500ms; animation: openSpace 1000ms ease forwards, fromAbove 1000ms both 500ms; } .effeckt-list[data-effeckt-type='from-above'] .remove-item { -webkit-backface-visibility: visible; backface-visibility: visible; -webkit-animation: toAbove 1000ms both, closeSpace 500ms ease forwards 650ms; animation: toAbove 1000ms both, closeSpace 500ms ease forwards 650ms; } @-webkit-keyframes fromAbove { 0% { opacity: 0; -webkit-transform: scale(3); transform: scale(3); } 100% { opacity: 1; -webkit-transform: scale(1); transform: scale(1); } } @keyframes fromAbove { 0% { opacity: 0; -webkit-transform: scale(3); transform: scale(3); } 100% { opacity: 1; -webkit-transform: scale(1); transform: scale(1); } } @-webkit-keyframes toAbove { 0% { opacity: 1; -webkit-transform: scale(1); transform: scale(1); } 100% { opacity: 0; -webkit-transform: scale(3); transform: scale(3); } } @keyframes toAbove { 0% { opacity: 1; -webkit-transform: scale(1); transform: scale(1); } 100% { opacity: 0; -webkit-transform: scale(3); transform: scale(3); } } .effeckt-list[data-effeckt-type='wobble-out'] .new-item { -webkit-backface-visibility: visible; backface-visibility: visible; -webkit-animation: openSpace 1000ms ease forwards, fallInX 1000ms both; animation: openSpace 1000ms ease forwards, fallInX 1000ms both; } .effeckt-list[data-effeckt-type='wobble-out'] .remove-item { -webkit-backface-visibility: visible; backface-visibility: visible; -webkit-transform-origin: top left; -ms-transform-origin: top left; transform-origin: top left; -webkit-animation: wobbleOutY 1500ms both 500ms, closeSpace 500ms ease forwards 1500ms; animation: wobbleOutY 1500ms both 500ms, closeSpace 500ms ease forwards 1500ms; } @-webkit-keyframes wobbleOutY { 0% { opacity: 1; -webkit-transform: rotateZ(0); transform: rotateZ(0); } 20% { opacity: 1; -webkit-transform: rotateZ(140deg); transform: rotateZ(140deg); } 40% { opacity: 1; -webkit-transform: rotateZ(60deg); transform: rotateZ(60deg); } 60% { opacity: 1; -webkit-transform: rotateZ(110deg); transform: rotateZ(110deg); } 70% { opacity: 1; -webkit-transform: rotateZ(90deg) translateX(0); transform: rotateZ(90deg) translateX(0); } 90% { opacity: 1; -webkit-transform: rotateZ(90deg) translateX(400px); transform: rotateZ(90deg) translateX(400px); } 100% { opacity: 0; -webkit-transform: rotateZ(90deg) translateX(400px); transform: rotateZ(90deg) translateX(400px); } } @keyframes wobbleOutY { 0% { opacity: 1; -webkit-transform: rotateZ(0); transform: rotateZ(0); } 20% { opacity: 1; -webkit-transform: rotateZ(140deg); transform: rotateZ(140deg); } 40% { opacity: 1; -webkit-transform: rotateZ(60deg); transform: rotateZ(60deg); } 60% { opacity: 1; -webkit-transform: rotateZ(110deg); transform: rotateZ(110deg); } 70% { opacity: 1; -webkit-transform: rotateZ(90deg) translateX(0); transform: rotateZ(90deg) translateX(0); } 90% { opacity: 1; -webkit-transform: rotateZ(90deg) translateX(400px); transform: rotateZ(90deg) translateX(400px); } 100% { opacity: 0; -webkit-transform: rotateZ(90deg) translateX(400px); transform: rotateZ(90deg) translateX(400px); } } .effeckt-list[data-effeckt-type='bouncy-slide-in'] .new-item { -webkit-backface-visibility: visible; backface-visibility: visible; -webkit-animation: bouncySlideIn 1000ms both, openSpace 500ms ease forwards; animation: bouncySlideIn 1000ms both, openSpace 500ms ease forwards; } .effeckt-list[data-effeckt-type='bouncy-slide-in'] .remove-item { -webkit-backface-visibility: visible; backface-visibility: visible; -webkit-animation: fallOffY 1500ms both 500ms, closeSpace 500ms ease forwards 1625ms; animation: fallOffY 1500ms both 500ms, closeSpace 500ms ease forwards 1625ms; } @-webkit-keyframes bouncySlideIn { 0% { opacity: 0; -webkit-transform: translateX(300px); transform: translateX(300px); } 70% { opacity: 1; -webkit-transform: translateX(-50px); transform: translateX(-50px); } 100% { opacity: 1; -webkit-transform: translateX(0); transform: translateX(0); } } @keyframes bouncySlideIn { 0% { opacity: 0; -webkit-transform: translateX(300px); transform: translateX(300px); } 70% { opacity: 1; -webkit-transform: translateX(-50px); transform: translateX(-50px); } 100% { opacity: 1; -webkit-transform: translateX(0); transform: translateX(0); } } @-webkit-keyframes fallOffY { 0% { opacity: 1; -webkit-transform: translateX(0) translateY(0) rotateZ(0deg); transform: translateX(0) translateY(0) rotateZ(0deg); } 50% { opacity: 1; -webkit-transform: translateX(-50%) translateY(0) rotateZ(0deg); transform: translateX(-50%) translateY(0) rotateZ(0deg); } 75% { opacity: 0.75; -webkit-transform: translateX(-50%) translateY(0) rotateZ(-30deg); transform: translateX(-50%) translateY(0) rotateZ(-30deg); } 100% { opacity: 0; -webkit-transform: translateX(-50%) translateY(300px) rotateZ(-60deg); transform: translateX(-50%) translateY(300px) rotateZ(-60deg); } } @keyframes fallOffY { 0% { opacity: 1; -webkit-transform: translateX(0) translateY(0) rotateZ(0deg); transform: translateX(0) translateY(0) rotateZ(0deg); } 50% { opacity: 1; -webkit-transform: translateX(-50%) translateY(0) rotateZ(0deg); transform: translateX(-50%) translateY(0) rotateZ(0deg); } 75% { opacity: 0.75; -webkit-transform: translateX(-50%) translateY(0) rotateZ(-30deg); transform: translateX(-50%) translateY(0) rotateZ(-30deg); } 100% { opacity: 0; -webkit-transform: translateX(-50%) translateY(300px) rotateZ(-60deg); transform: translateX(-50%) translateY(300px) rotateZ(-60deg); } } ================================================ FILE: css/modules/list-scroll.css ================================================ .effeckt-list-scroll { position: relative; overflow-x: hidden; overflow-y: scroll; -webkit-perspective: 400px; perspective: 400px; } .effeckt-list-scroll > li { position: relative; z-index: 2; -webkit-transform: translateZ(0); transform: translateZ(0); } [data-effeckt-type="grow"] li { transition: all 500ms ease; -webkit-transform-origin: 50% 50%; -ms-transform-origin: 50% 50%; transform-origin: 50% 50%; } [data-effeckt-type="grow"] li.past, [data-effeckt-type="grow"] li.future { -webkit-transform: scale(0.01); -ms-transform: scale(0.01); transform: scale(0.01); } [data-effeckt-type="curl"] li { -webkit-perspective: 600px; perspective: 600px; -webkit-perspective-origin: 0% 50%; perspective-origin: 0% 50%; transition: all 500ms ease, opacity 166.6666666667ms ease; -webkit-transform-origin: 0% 0%; -ms-transform-origin: 0% 0%; transform-origin: 0% 0%; -webkit-backface-visibility: hidden; backface-visibility: hidden; } [data-effeckt-type="curl"] li.past { opacity: 0; -webkit-transform: rotateY(90deg); transform: rotateY(90deg); } [data-effeckt-type="curl"] li.future { opacity: 0; -webkit-transform: rotateY(90deg); transform: rotateY(90deg); } [data-effeckt-type="wave"] li { transition: all 500ms cubic-bezier(0.26, 0.86, 0.44, 0.985); } [data-effeckt-type="wave"] li.past { -webkit-transform: translateX(-70%); -ms-transform: translateX(-70%); transform: translateX(-70%); } [data-effeckt-type="wave"] li.future { -webkit-transform: translateX(-70%); -ms-transform: translateX(-70%); transform: translateX(-70%); } [data-effeckt-type="fan"] li { transition: all 500ms cubic-bezier(0.39, 0.575, 0.565, 1); -webkit-transform-origin: 0% 0%; -ms-transform-origin: 0% 0%; transform-origin: 0% 0%; } [data-effeckt-type="fan"] li.past { -webkit-transform: rotate(-60deg); -ms-transform: rotate(-60deg); transform: rotate(-60deg); } [data-effeckt-type="fan"] li.future { -webkit-transform: rotate(70deg); -ms-transform: rotate(70deg); transform: rotate(70deg); } [data-effeckt-type="fade"] li { transition: opacity 250ms ease-in-out; } [data-effeckt-type="fade"] li.past, [data-effeckt-type="fade"] li.future { opacity: 0; } [data-effeckt-type="fly"] { -webkit-perspective: 400px; perspective: 400px; -webkit-perspective-origin: 50% 50%; perspective-origin: 50% 50%; } [data-effeckt-type="fly"] li { transition: all 500ms ease, opacity 250ms ease; -webkit-transform-origin: 50% 50% -50px; -ms-transform-origin: 50% 50% -50px; transform-origin: 50% 50% -50px; } [data-effeckt-type="fly"] li.past, [data-effeckt-type="fly"] li.future { opacity: 0; } [data-effeckt-type="fly"] li.past { -webkit-transform: rotateX(180deg); transform: rotateX(180deg); } [data-effeckt-type="fly"] li.future { -webkit-transform: rotateX(-180deg); transform: rotateX(-180deg); } [data-effeckt-type="landing"] { -webkit-perspective: 400px; perspective: 400px; -webkit-perspective-origin: 50% 50%; perspective-origin: 50% 50%; } [data-effeckt-type="landing"] li { transition: all 500ms ease, opacity 250ms ease; -webkit-transform-origin: 50% 50%; -ms-transform-origin: 50% 50%; transform-origin: 50% 50%; } [data-effeckt-type="landing"] li.past, [data-effeckt-type="landing"] li.future { opacity: 0; } [data-effeckt-type="landing"] li.past { -webkit-transform: scale(1.5) translate(10%, -50%); -ms-transform: scale(1.5) translate(10%, -50%); transform: scale(1.5) translate(10%, -50%); } [data-effeckt-type="landing"] li.future { -webkit-transform: scale(1.5) translate(-10%, 50%); -ms-transform: scale(1.5) translate(-10%, 50%); transform: scale(1.5) translate(-10%, 50%); } [data-effeckt-type="swing-front"] { -webkit-perspective: 400px; perspective: 400px; -webkit-perspective-origin: 50% 50%; perspective-origin: 50% 50%; } [data-effeckt-type="swing-front"] li { transition: all 500ms ease, opacity 250ms ease; } [data-effeckt-type="swing-front"] li.past, [data-effeckt-type="swing-front"] li.future { opacity: 0; } [data-effeckt-type="swing-front"] li.past { -webkit-transform-origin: bottom; -ms-transform-origin: bottom; transform-origin: bottom; -webkit-transform: rotateX(140deg); transform: rotateX(140deg); } [data-effeckt-type="swing-front"] li.future { -webkit-transform-origin: top; -ms-transform-origin: top; transform-origin: top; -webkit-transform: rotateX(-140deg); transform: rotateX(-140deg); } [data-effeckt-type="swing-back"] { -webkit-perspective: 400px; perspective: 400px; -webkit-perspective-origin: 50% 50%; perspective-origin: 50% 50%; } [data-effeckt-type="swing-back"] li { transition: all 500ms ease, opacity 250ms ease; } [data-effeckt-type="swing-back"] li.past, [data-effeckt-type="swing-back"] li.future { opacity: 0; } [data-effeckt-type="swing-back"] li.past { -webkit-transform-origin: bottom; -ms-transform-origin: bottom; transform-origin: bottom; -webkit-transform: rotateX(-140deg); transform: rotateX(-140deg); } [data-effeckt-type="swing-back"] li.future { -webkit-transform-origin: top; -ms-transform-origin: top; transform-origin: top; -webkit-transform: rotateX(140deg); transform: rotateX(140deg); } [data-effeckt-type="twist"] { -webkit-perspective: 400px; perspective: 400px; -webkit-perspective-origin: 50% 50%; perspective-origin: 50% 50%; } [data-effeckt-type="twist"] li { transition: all 500ms ease, opacity 250ms ease; -webkit-transform-origin: center; -ms-transform-origin: center; transform-origin: center; } [data-effeckt-type="twist"] li.past, [data-effeckt-type="twist"] li.future { opacity: 0; } [data-effeckt-type="twist"] li.past { -webkit-transform: rotateY(-180deg); transform: rotateY(-180deg); } [data-effeckt-type="twist"] li.future { -webkit-transform: rotateY(180deg); transform: rotateY(180deg); } [data-effeckt-type="door"] { -webkit-perspective: 400px; perspective: 400px; -webkit-perspective-origin: 50% 50%; perspective-origin: 50% 50%; } [data-effeckt-type="door"] li { transition: all 500ms ease, opacity 250ms ease; -webkit-transform-origin: 0% 0%; -ms-transform-origin: 0% 0%; transform-origin: 0% 0%; } [data-effeckt-type="door"] li.past, [data-effeckt-type="door"] li.future { opacity: 0; -webkit-transform: rotateY(-90deg); transform: rotateY(-90deg); } [data-effeckt-type="climb"] { -webkit-perspective: 400px; perspective: 400px; -webkit-perspective-origin: 50% 50%; perspective-origin: 50% 50%; } [data-effeckt-type="climb"] li { transition: all 500ms ease, opacity 250ms ease; -webkit-transform-origin: 0% 0%; -ms-transform-origin: 0% 0%; transform-origin: 0% 0%; } [data-effeckt-type="climb"] li.past { -webkit-transform: translateY(-200%); -ms-transform: translateY(-200%); transform: translateY(-200%); } [data-effeckt-type="climb"] li.future { -webkit-transform: translateY(200%); -ms-transform: translateY(200%); transform: translateY(200%); } ================================================ FILE: css/modules/modal.css ================================================ .effeckt-modal-wrap { position: fixed; top: 50%; left: 50%; max-width: 320px; min-width: 320px; -webkit-transform: translate(-50%, -50%); -ms-transform: translate(-50%, -50%); transform: translate(-50%, -50%); z-index: 2000; visibility: hidden; -webkit-backface-visibility: hidden; backface-visibility: hidden; } .effeckt-modal-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; visibility: hidden; opacity: 0; transition-duration: 500ms; } .effeckt-show.effeckt-modal-wrap { visibility: visible; } .effeckt-show.effeckt-modal-wrap ~ .effeckt-modal-overlay { visibility: visible; opacity: 1; } .effeckt-modal { transition-property: all; transition-duration: 500ms; transition-timing-function: cubic-bezier(0.4, 0, 0, 1.5); -webkit-animation-duration: 1000ms; animation-duration: 1000ms; -webkit-animation-fill-mode: forwards; animation-fill-mode: forwards; -webkit-animation-timing-function: cubic-bezier(0.4, 0, 0, 1.5); animation-timing-function: cubic-bezier(0.4, 0, 0, 1.5); } .from-below .effeckt-content { -webkit-transform: scale(0.5); -ms-transform: scale(0.5); transform: scale(0.5); opacity: 0; } .effeckt-show.from-below .effeckt-content { -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1); opacity: 1; } .from-above .effeckt-content { -webkit-transform: scale(1.5); -ms-transform: scale(1.5); transform: scale(1.5); opacity: 0; } .effeckt-show.from-above .effeckt-content { -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1); opacity: 1; } .to-below .effeckt-content { -webkit-transform: scale(0.5); -ms-transform: scale(0.5); transform: scale(0.5); opacity: 0; } .to-above .effeckt-content { -webkit-transform: scale(1.5); -ms-transform: scale(1.5); transform: scale(1.5); opacity: 0; } .slide-in-top .effeckt-content { -webkit-transform: translate3d(0, -100%, 0); transform: translate3d(0, -100%, 0); opacity: 0; } .effeckt-show.slide-in-top .effeckt-content { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); opacity: 1; } .slide-in-right .effeckt-content { -webkit-transform: translate3d(30%, 0, 0); transform: translate3d(30%, 0, 0); opacity: 0; } .effeckt-show.slide-in-right .effeckt-content { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); opacity: 1; } .slide-in-bottom .effeckt-content { -webkit-transform: translate3d(0, 30%, 0); transform: translate3d(0, 30%, 0); opacity: 0; } .effeckt-show.slide-in-bottom .effeckt-content { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); opacity: 1; } .slide-in-left .effeckt-content { -webkit-transform: translate3d(-30%, 0, 0); transform: translate3d(-30%, 0, 0); opacity: 0; } .effeckt-show.slide-in-left .effeckt-content { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); opacity: 1; } .sticky-up { top: 0; -webkit-transform: translate(-50%, 0); -ms-transform: translate(-50%, 0); transform: translate(-50%, 0); } .sticky-up .effeckt-content { -webkit-transform: translate3d(0, -100%, 0); transform: translate3d(0, -100%, 0); opacity: 0; } .effeckt-show.sticky-up .effeckt-content { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); opacity: 1; } .slip-in-from-top ~ [data-effeckt-page], .slip-in-from-top ~ .effeckt-overlay { -webkit-transform-style: preserve-3d; transform-style: preserve-3d; -webkit-transform-origin: 50% 100%; -ms-transform-origin: 50% 100%; transform-origin: 50% 100%; } .slip-in-from-top .effeckt-content { -webkit-transform: translateY(-200%); -ms-transform: translateY(-200%); transform: translateY(-200%); opacity: 0; } .effeckt-show.slip-in-from-top ~ [data-effeckt-page], .effeckt-show.slip-in-from-top ~ .effeckt-overlay { -webkit-animation: OpenTop 500ms forwards ease-in; animation: OpenTop 500ms forwards ease-in; } .effeckt-show.slip-in-from-top .effeckt-content { -webkit-transform: translateY(0); -ms-transform: translateY(0); transform: translateY(0); opacity: 1; } @-webkit-keyframes OpenTop { 50% { -webkit-transform: rotateX(10deg); transform: rotateX(10deg); -webkit-animation-timing-function: ease-out; animation-timing-function: ease-out; } } @keyframes OpenTop { 50% { -webkit-transform: rotateX(10deg); transform: rotateX(10deg); -webkit-animation-timing-function: ease-out; animation-timing-function: ease-out; } } .slide-out-bottom .effeckt-content { -webkit-transform: translateY(100%); -ms-transform: translateY(100%); transform: translateY(100%); opacity: 0; } .slide-out-top .effeckt-content { -webkit-transform: translateY(-100%); -ms-transform: translateY(-100%); transform: translateY(-100%); opacity: 0; } .slide-out-right .effeckt-content { -webkit-transform: translateX(100%); -ms-transform: translateX(100%); transform: translateX(100%); opacity: 0; } .slide-out-left .effeckt-content { -webkit-transform: translateX(-100%); -ms-transform: translateX(-100%); transform: translateX(-100%); opacity: 0; } .flip-horizontal-3D { -webkit-perspective: 600px; perspective: 600px; } .flip-horizontal-3D .effeckt-content { -webkit-transform: rotateY(-70deg); transform: rotateY(-70deg); -webkit-transform-style: preserve-3d; transform-style: preserve-3d; opacity: 0; } .effeckt-show.flip-horizontal-3D .effeckt-content { -webkit-transform: rotateY(0deg); transform: rotateY(0deg); opacity: 1; } .flip-vertical-3D { -webkit-perspective: 600px; perspective: 600px; } .flip-vertical-3D .effeckt-content { -webkit-transform: rotateX(-70deg); transform: rotateX(-70deg); -webkit-transform-style: preserve-3d; transform-style: preserve-3d; opacity: 0; } .effeckt-show.flip-vertical-3D .effeckt-content { -webkit-transform: rotateX(0deg); transform: rotateX(0deg); opacity: 1; } .sign-3D { -webkit-perspective: 600px; perspective: 600px; } .sign-3D .effeckt-content { -webkit-transform: rotateX(-60deg); transform: rotateX(-60deg); -webkit-transform-origin: 50% 0; -ms-transform-origin: 50% 0; transform-origin: 50% 0; -webkit-transform-style: preserve-3d; transform-style: preserve-3d; opacity: 0; } .effeckt-show.sign-3D .effeckt-content { -webkit-transform: rotateX(0deg); transform: rotateX(0deg); opacity: 1; } .slit-3D { -webkit-perspective: 600px; perspective: 600px; } .slit-3D .effeckt-content { -webkit-transform: translateZ(-3000px) rotateY(90deg); transform: translateZ(-3000px) rotateY(90deg); -webkit-transform-style: preserve-3d; transform-style: preserve-3d; opacity: 0; } .effeckt-show.slit-3D .effeckt-content { -webkit-animation: modalSlit 0.7s forwards ease-out; animation: modalSlit 0.7s forwards ease-out; } @-webkit-keyframes modalSlit { 50% { -webkit-transform: translateZ(-250px) rotateY(89deg); transform: translateZ(-250px) rotateY(89deg); opacity: 0.75; -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; } 100% { -webkit-transform: translateZ(0) rotateY(0deg); transform: translateZ(0) rotateY(0deg); opacity: 1; } } @keyframes modalSlit { 50% { -webkit-transform: translateZ(-250px) rotateY(89deg); transform: translateZ(-250px) rotateY(89deg); opacity: 0.75; -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; } 100% { -webkit-transform: translateZ(0) rotateY(0deg); transform: translateZ(0) rotateY(0deg); opacity: 1; } } .rotate-from-bottom-3D { -webkit-perspective: 600px; perspective: 600px; } .rotate-from-bottom-3D .effeckt-content { -webkit-transform: translateY(100%) rotateX(90deg); transform: translateY(100%) rotateX(90deg); -webkit-transform-style: preserve-3d; transform-style: preserve-3d; -webkit-transform-origin: 0 100%; -ms-transform-origin: 0 100%; transform-origin: 0 100%; opacity: 0; } .effeckt-show.rotate-from-bottom-3D .effeckt-content { -webkit-transform: translateY(0%) rotateX(0deg); transform: translateY(0%) rotateX(0deg); opacity: 1; } .rotate-from-left-3D { -webkit-perspective: 600px; perspective: 600px; } .rotate-from-left-3D .effeckt-content { -webkit-transform: translateZ(100px) translateX(-30%) rotateY(90deg); transform: translateZ(100px) translateX(-30%) rotateY(90deg); -webkit-transform-style: preserve-3d; transform-style: preserve-3d; -webkit-transform-origin: 0 100%; -ms-transform-origin: 0 100%; transform-origin: 0 100%; opacity: 0; } .effeckt-show.rotate-from-left-3D .effeckt-content { -webkit-transform: translateZ(0px) translateX(0%) rotateY(0deg); transform: translateZ(0px) translateX(0%) rotateY(0deg); opacity: 1; } .let-me-in ~ [data-effeckt-page].effeckt-page-active { transition: 500ms; -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); -webkit-transform-origin: 50% 0%; -ms-transform-origin: 50% 0%; transform-origin: 50% 0%; -webkit-transform-style: preserve-3d; transform-style: preserve-3d; } .let-me-in .effeckt-content { opacity: 0; -webkit-transform: translate3d(0, 200%, 0); transform: translate3d(0, 200%, 0); } .effeckt-show.let-me-in ~ [data-effeckt-page].effeckt-page-active { -webkit-transform: rotateX(-7deg); transform: rotateX(-7deg); opacity: 1; } .effeckt-show.let-me-in ~ [data-effeckt-page].effeckt-page-active:after { opacity: 1; visibility: visible; } .effeckt-show.let-me-in .effeckt-content { -webkit-transform: translate3d(0, -50%, 0); transform: translate3d(0, -50%, 0); opacity: 1; } .make-way { -webkit-perspective: 600px; perspective: 600px; } .make-way ~ [data-effeckt-page].effeckt-page-active { -webkit-transform-style: preserve-3d; transform-style: preserve-3d; -webkit-transform-origin: 0% 50%; -ms-transform-origin: 0% 50%; transform-origin: 0% 50%; } .make-way .effeckt-content { -webkit-transform: translate3d(200%, 0, 0); transform: translate3d(200%, 0, 0); opacity: 0; } .effeckt-show.make-way ~ [data-effeckt-page].effeckt-page-active { -webkit-animation: makeWay 500ms forwards ease-in; animation: makeWay 500ms forwards ease-in; } .effeckt-show.make-way .effeckt-content { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); opacity: 1; } @-webkit-keyframes makeWay { 50% { -webkit-transform: translate3d(0, 0, -50px) rotateY(5deg); transform: translate3d(0, 0, -50px) rotateY(5deg); } 100% { -webkit-transform: translate3d(0, 0, -200px); transform: translate3d(0, 0, -200px); } } @keyframes makeWay { 50% { -webkit-transform: translate3d(0, 0, -50px) rotateY(5deg); transform: translate3d(0, 0, -50px) rotateY(5deg); } 100% { -webkit-transform: translate3d(0, 0, -200px); transform: translate3d(0, 0, -200px); } } .deep-content .effeckt-content { -webkit-transform: scale(0.8); -ms-transform: scale(0.8); transform: scale(0.8); opacity: 0; } .effeckt-show.deep-content .effeckt-content { -webkit-transform: scale(1.1); -ms-transform: scale(1.1); transform: scale(1.1); opacity: 1; } .deep-content ~ [data-effeckt-page].effeckt-page-active { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); transition: 500ms; } .effeckt-show.deep-content ~ [data-effeckt-page].effeckt-page-active { -webkit-transform: translate3d(0, 0, -85px); transform: translate3d(0, 0, -85px); -webkit-filter: blur(3px); filter: blur(3px); } .newspaper .effeckt-content { -webkit-transform: scale(0.5) rotate(720deg); -ms-transform: scale(0.5) rotate(720deg); transform: scale(0.5) rotate(720deg); opacity: 0; } .effeckt-show.newspaper .effeckt-content { -webkit-transform: scale(1) rotate(0deg); -ms-transform: scale(1) rotate(0deg); transform: scale(1) rotate(0deg); opacity: 1; } .side-fall { -webkit-perspective: 600px; perspective: 600px; -webkit-transform-style: preserve-3d; transform-style: preserve-3d; } .side-fall .effeckt-content { transition-timing-function: ease-out; -webkit-transform: translateZ(600px) translateX(30%) rotate(10deg); transform: translateZ(600px) translateX(30%) rotate(10deg); opacity: 0; } .effeckt-show.side-fall .effeckt-content { transition-timing-function: ease-in; -webkit-transform: translateZ(0) translateX(0) rotate(0deg); transform: translateZ(0) translateX(0) rotate(0deg); opacity: 1; } .fade-in .effeckt-content { opacity: 0; } .effeckt-show.fade-in .effeckt-content { opacity: 1; } .effeckt-show.blur ~ [data-effeckt-page] { -webkit-filter: blur(3px); filter: blur(3px); -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } .blur .effeckt-content { opacity: 0; } .effeckt-show.blur ~ [data-effeckt-page] { transition: all 500ms ease; } .effeckt-show.blur .effeckt-content { opacity: 1; } .tilt-fall .effeckt-content { -webkit-transform: translateY(100%) rotate(-25deg); -ms-transform: translateY(100%) rotate(-25deg); transform: translateY(100%) rotate(-25deg); opacity: 0; } .shake .effeckt-content { opacity: 0; } .effeckt-show.shake .effeckt-content { opacity: 1; -webkit-animation-name: shake; animation-name: shake; -webkit-animation-timing-function: ease; animation-timing-function: ease; } @-webkit-keyframes shake { 0%, 100% { -webkit-transform: translateX(0); transform: translateX(0); } 10%, 30%, 50%, 70%, 90% { -webkit-transform: translateX(-10px); transform: translateX(-10px); } 20%, 40%, 60%, 80% { -webkit-transform: translateX(10px); transform: translateX(10px); } } @keyframes shake { 0%, 100% { -webkit-transform: translateX(0); transform: translateX(0); } 10%, 30%, 50%, 70%, 90% { -webkit-transform: translateX(-10px); transform: translateX(-10px); } 20%, 40%, 60%, 80% { -webkit-transform: translateX(10px); transform: translateX(10px); } } .bounce .effeckt-content { opacity: 0; } .effeckt-show.bounce .effeckt-content { opacity: 1; -webkit-animation-name: bounce; animation-name: bounce; -webkit-animation-timing-function: ease; animation-timing-function: ease; } @-webkit-keyframes bounce { 0%, 20%, 50%, 80%, 100% { -webkit-transform: translateY(0); transform: translateY(0); } 40% { -webkit-transform: translateY(-30px); transform: translateY(-30px); } 60% { -webkit-transform: translateY(-15px); transform: translateY(-15px); } } @keyframes bounce { 0%, 20%, 50%, 80%, 100% { -webkit-transform: translateY(0); transform: translateY(0); } 40% { -webkit-transform: translateY(-30px); transform: translateY(-30px); } 60% { -webkit-transform: translateY(-15px); transform: translateY(-15px); } } .pulse .effeckt-content { opacity: 0; } .effeckt-show.pulse .effeckt-content { opacity: 1; -webkit-animation-name: pulse; animation-name: pulse; -webkit-animation-timing-function: ease; animation-timing-function: ease; } @-webkit-keyframes pulse { 0% { -webkit-transform: scale(1); transform: scale(1); } 50% { -webkit-transform: scale(1.1); transform: scale(1.1); } 100% { -webkit-transform: scale(1); transform: scale(1); } } @keyframes pulse { 0% { -webkit-transform: scale(1); transform: scale(1); } 50% { -webkit-transform: scale(1.1); transform: scale(1.1); } 100% { -webkit-transform: scale(1); transform: scale(1); } } .wobble .effeckt-content { opacity: 0; } .effeckt-show.wobble .effeckt-content { opacity: 1; -webkit-animation-name: wobble; animation-name: wobble; -webkit-animation-timing-function: ease; animation-timing-function: ease; } @-webkit-keyframes wobble { 0% { -webkit-transform: translateX(0%); transform: translateX(0%); } 15% { -webkit-transform: translateX(-25%) rotate(-5deg); transform: translateX(-25%) rotate(-5deg); } 30% { -webkit-transform: translateX(20%) rotate(3deg); transform: translateX(20%) rotate(3deg); } 45% { -webkit-transform: translateX(-15%) rotate(-3deg); transform: translateX(-15%) rotate(-3deg); } 60% { -webkit-transform: translateX(10%) rotate(2deg); transform: translateX(10%) rotate(2deg); } 75% { -webkit-transform: translateX(-5%) rotate(-1deg); transform: translateX(-5%) rotate(-1deg); } 100% { -webkit-transform: translateX(0%); transform: translateX(0%); } } @keyframes wobble { 0% { -webkit-transform: translateX(0%); transform: translateX(0%); } 15% { -webkit-transform: translateX(-25%) rotate(-5deg); transform: translateX(-25%) rotate(-5deg); } 30% { -webkit-transform: translateX(20%) rotate(3deg); transform: translateX(20%) rotate(3deg); } 45% { -webkit-transform: translateX(-15%) rotate(-3deg); transform: translateX(-15%) rotate(-3deg); } 60% { -webkit-transform: translateX(10%) rotate(2deg); transform: translateX(10%) rotate(2deg); } 75% { -webkit-transform: translateX(-5%) rotate(-1deg); transform: translateX(-5%) rotate(-1deg); } 100% { -webkit-transform: translateX(0%); transform: translateX(0%); } } .swing .effeckt-content { -webkit-transform-origin: 50% 0%; -ms-transform-origin: 50% 0%; transform-origin: 50% 0%; opacity: 0; } .effeckt-show.swing .effeckt-content { opacity: 1; -webkit-animation-name: swing; animation-name: swing; -webkit-animation-timing-function: ease; animation-timing-function: ease; } @-webkit-keyframes swing { 20% { -webkit-transform: rotate(15deg); transform: rotate(15deg); } 40% { -webkit-transform: rotate(-10deg); transform: rotate(-10deg); } 60% { -webkit-transform: rotate(5deg); transform: rotate(5deg); } 80% { -webkit-transform: rotate(-5deg); transform: rotate(-5deg); } 100% { -webkit-transform: rotate(0deg); transform: rotate(0deg); } } @keyframes swing { 20% { -webkit-transform: rotate(15deg); transform: rotate(15deg); } 40% { -webkit-transform: rotate(-10deg); transform: rotate(-10deg); } 60% { -webkit-transform: rotate(5deg); transform: rotate(5deg); } 80% { -webkit-transform: rotate(-5deg); transform: rotate(-5deg); } 100% { -webkit-transform: rotate(0deg); transform: rotate(0deg); } } .tada .effeckt-content { opacity: 0; } .effeckt-show.tada .effeckt-content { opacity: 1; -webkit-animation-name: tada; animation-name: tada; -webkit-animation-timing-function: ease; animation-timing-function: ease; } @-webkit-keyframes tada { 0% { -webkit-transform: scale(1); transform: scale(1); } 10%, 20% { -webkit-transform: scale(0.9) rotate(-3deg); transform: scale(0.9) rotate(-3deg); } 30%, 50%, 70%, 90% { -webkit-transform: scale(1.1) rotate(3deg); transform: scale(1.1) rotate(3deg); } 40%, 60%, 80% { -webkit-transform: scale(1.1) rotate(-3deg); transform: scale(1.1) rotate(-3deg); } 100% { -webkit-transform: scale(1) rotate(0); transform: scale(1) rotate(0); } } @keyframes tada { 0% { -webkit-transform: scale(1); transform: scale(1); } 10%, 20% { -webkit-transform: scale(0.9) rotate(-3deg); transform: scale(0.9) rotate(-3deg); } 30%, 50%, 70%, 90% { -webkit-transform: scale(1.1) rotate(3deg); transform: scale(1.1) rotate(3deg); } 40%, 60%, 80% { -webkit-transform: scale(1.1) rotate(-3deg); transform: scale(1.1) rotate(-3deg); } 100% { -webkit-transform: scale(1) rotate(0); transform: scale(1) rotate(0); } } ================================================ FILE: css/modules/modals.css ================================================ .effeckt-modal-wrap { position: fixed; top: 50%; left: 50%; max-width: 320px; min-width: 320px; -webkit-transform: translate(-50%, -50%); -ms-transform: translate(-50%, -50%); transform: translate(-50%, -50%); z-index: 2000; visibility: hidden; -webkit-backface-visibility: hidden; -ms-backface-visibility: hidden; -o-backface-visibility: hidden; backface-visibility: hidden; } .effeckt-modal-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; visibility: hidden; opacity: 0; transition-duration: 300ms; } .effeckt-show.effeckt-modal-wrap { visibility: visible; } .effeckt-show.effeckt-modal-wrap ~ .effeckt-modal-overlay { visibility: visible; opacity: 1; } .effeckt-modal { transition-property: all; transition-duration: 300ms; -webkit-animation-duration: 900ms; animation-duration: 900ms; -webkit-animation-fill-mode: forwards; animation-fill-mode: forwards; } .from-below .effeckt-content { -webkit-transform: scale(0.7); -ms-transform: scale(0.7); transform: scale(0.7); opacity: 0; } .effeckt-show.from-below .effeckt-content { -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1); opacity: 1; } .from-above .effeckt-content { -webkit-transform: scale(1.3); -ms-transform: scale(1.3); transform: scale(1.3); opacity: 0; } .effeckt-show.from-above .effeckt-content { -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1); opacity: 1; } .to-below .effeckt-content { -webkit-transform: scale(0.7); -ms-transform: scale(0.7); transform: scale(0.7); opacity: 0; } .to-above .effeckt-content { -webkit-transform: scale(1.3); -ms-transform: scale(1.3); transform: scale(1.3); opacity: 0; } .slide-in-top .effeckt-content { -webkit-transform: translate3d(0, -100%, 0); -ms-transform: translate3d(0, -100%, 0); transform: translate3d(0, -100%, 0); opacity: 0; } .effeckt-show.slide-in-top .effeckt-content { -webkit-transform: translate3d(0, 0, 0); -ms-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); opacity: 1; } .slide-in-right .effeckt-content { -webkit-transform: translate3d(30%, 0, 0); -ms-transform: translate3d(30%, 0, 0); transform: translate3d(30%, 0, 0); opacity: 0; } .effeckt-show.slide-in-right .effeckt-content { -webkit-transform: translate3d(0, 0, 0); -ms-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); opacity: 1; } .slide-in-bottom .effeckt-content { -webkit-transform: translate3d(0, 30%, 0); -ms-transform: translate3d(0, 30%, 0); transform: translate3d(0, 30%, 0); opacity: 0; } .effeckt-show.slide-in-bottom .effeckt-content { -webkit-transform: translate3d(0, 0, 0); -ms-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); opacity: 1; } .slide-in-left .effeckt-content { -webkit-transform: translate3d(-30%, 0, 0); -ms-transform: translate3d(-30%, 0, 0); transform: translate3d(-30%, 0, 0); opacity: 0; } .effeckt-show.slide-in-left .effeckt-content { -webkit-transform: translate3d(0, 0, 0); -ms-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); opacity: 1; } .sticky-up { top: 0; -webkit-transform: translate(-50%, 0); -ms-transform: translate(-50%, 0); transform: translate(-50%, 0); } .sticky-up .effeckt-content { -webkit-transform: translate3d(0, -100%, 0); -ms-transform: translate3d(0, -100%, 0); transform: translate3d(0, -100%, 0); opacity: 0; } .effeckt-show.sticky-up .effeckt-content { -webkit-transform: translate3d(0, 0, 0); -ms-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); opacity: 1; } .slip-in-from-top ~ [data-effeckt-page], .slip-in-from-top ~ .effeckt-overlay { -webkit-transform-style: preserve-3d; -ms-transform-style: preserve-3d; -o-transform-style: preserve-3d; transform-style: preserve-3d; -webkit-transform-origin: 50% 100%; -ms-transform-origin: 50% 100%; transform-origin: 50% 100%; } .slip-in-from-top .effeckt-content { -webkit-transform: translateY(-200%); -ms-transform: translateY(-200%); transform: translateY(-200%); opacity: 0; } .effeckt-show.slip-in-from-top ~ [data-effeckt-page], .effeckt-show.slip-in-from-top ~ .effeckt-overlay { -webkit-animation: OpenTop 300ms forwards ease-in; animation: OpenTop 300ms forwards ease-in; } .effeckt-show.slip-in-from-top .effeckt-content { -webkit-transform: translateY(0); -ms-transform: translateY(0); transform: translateY(0); opacity: 1; } @-webkit-keyframes OpenTop { 50% { -webkit-transform: rotateX(10deg); transform: rotateX(10deg); -webkit-animation-timing-function: ease-out; animation-timing-function: ease-out; } } @keyframes OpenTop { 50% { -webkit-transform: rotateX(10deg); -ms-transform: rotateX(10deg); transform: rotateX(10deg); -webkit-animation-timing-function: ease-out; animation-timing-function: ease-out; } } .slide-out-bottom .effeckt-content { -webkit-transform: translateY(100%); -ms-transform: translateY(100%); transform: translateY(100%); opacity: 0; } .slide-out-top .effeckt-content { -webkit-transform: translateY(-100%); -ms-transform: translateY(-100%); transform: translateY(-100%); opacity: 0; } .slide-out-right .effeckt-content { -webkit-transform: translateX(100%); -ms-transform: translateX(100%); transform: translateX(100%); opacity: 0; } .slide-out-left .effeckt-content { -webkit-transform: translateX(-100%); -ms-transform: translateX(-100%); transform: translateX(-100%); opacity: 0; } .flip-horizontal-3D { -webkit-perspective: 600px; -ms-perspective: 600px; -o-perspective: 600px; perspective: 600px; } .flip-horizontal-3D .effeckt-content { -webkit-transform: rotateY(-70deg); -ms-transform: rotateY(-70deg); transform: rotateY(-70deg); -webkit-transform-style: preserve-3d; -ms-transform-style: preserve-3d; -o-transform-style: preserve-3d; transform-style: preserve-3d; opacity: 0; } .effeckt-show.flip-horizontal-3D .effeckt-content { -webkit-transform: rotateY(0deg); -ms-transform: rotateY(0deg); transform: rotateY(0deg); opacity: 1; } .flip-vertical-3D { -webkit-perspective: 600px; -ms-perspective: 600px; -o-perspective: 600px; perspective: 600px; } .flip-vertical-3D .effeckt-content { -webkit-transform: rotateX(-70deg); -ms-transform: rotateX(-70deg); transform: rotateX(-70deg); -webkit-transform-style: preserve-3d; -ms-transform-style: preserve-3d; -o-transform-style: preserve-3d; transform-style: preserve-3d; opacity: 0; } .effeckt-show.flip-vertical-3D .effeckt-content { -webkit-transform: rotateX(0deg); -ms-transform: rotateX(0deg); transform: rotateX(0deg); opacity: 1; } .sign-3D { -webkit-perspective: 600px; -ms-perspective: 600px; -o-perspective: 600px; perspective: 600px; } .sign-3D .effeckt-content { -webkit-transform: rotateX(-60deg); -ms-transform: rotateX(-60deg); transform: rotateX(-60deg); -webkit-transform-origin: 50% 0; -ms-transform-origin: 50% 0; transform-origin: 50% 0; -webkit-transform-style: preserve-3d; -ms-transform-style: preserve-3d; -o-transform-style: preserve-3d; transform-style: preserve-3d; opacity: 0; } .effeckt-show.sign-3D .effeckt-content { -webkit-transform: rotateX(0deg); -ms-transform: rotateX(0deg); transform: rotateX(0deg); opacity: 1; } .slit-3D { -webkit-perspective: 600px; -ms-perspective: 600px; -o-perspective: 600px; perspective: 600px; } .slit-3D .effeckt-content { -webkit-transform: translateZ(-3000px) rotateY(90deg); -ms-transform: translateZ(-3000px) rotateY(90deg); transform: translateZ(-3000px) rotateY(90deg); -webkit-transform-style: preserve-3d; -ms-transform-style: preserve-3d; -o-transform-style: preserve-3d; transform-style: preserve-3d; opacity: 0; } .effeckt-show.slit-3D .effeckt-content { -webkit-animation: modalSlit 0.7s forwards ease-out; animation: modalSlit 0.7s forwards ease-out; } @-webkit-keyframes modalSlit { 50% { -webkit-transform: translateZ(-250px) rotateY(89deg); transform: translateZ(-250px) rotateY(89deg); opacity: 0.75; -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; } 100% { -webkit-transform: translateZ(0) rotateY(0deg); transform: translateZ(0) rotateY(0deg); opacity: 1; } } @keyframes modalSlit { 50% { -webkit-transform: translateZ(-250px) rotateY(89deg); -ms-transform: translateZ(-250px) rotateY(89deg); transform: translateZ(-250px) rotateY(89deg); opacity: 0.75; -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; } 100% { -webkit-transform: translateZ(0) rotateY(0deg); -ms-transform: translateZ(0) rotateY(0deg); transform: translateZ(0) rotateY(0deg); opacity: 1; } } .rotate-from-bottom-3D { -webkit-perspective: 600px; -ms-perspective: 600px; -o-perspective: 600px; perspective: 600px; } .rotate-from-bottom-3D .effeckt-content { -webkit-transform: translateY(100%) rotateX(90deg); -ms-transform: translateY(100%) rotateX(90deg); transform: translateY(100%) rotateX(90deg); -webkit-transform-style: preserve-3d; -ms-transform-style: preserve-3d; -o-transform-style: preserve-3d; transform-style: preserve-3d; -webkit-transform-origin: 0 100%; -ms-transform-origin: 0 100%; transform-origin: 0 100%; opacity: 0; } .effeckt-show.rotate-from-bottom-3D .effeckt-content { -webkit-transform: translateY(0%) rotateX(0deg); -ms-transform: translateY(0%) rotateX(0deg); transform: translateY(0%) rotateX(0deg); opacity: 1; } .rotate-from-left-3D { -webkit-perspective: 600px; -ms-perspective: 600px; -o-perspective: 600px; perspective: 600px; } .rotate-from-left-3D .effeckt-content { -webkit-transform: translateZ(100px) translateX(-30%) rotateY(90deg); -ms-transform: translateZ(100px) translateX(-30%) rotateY(90deg); transform: translateZ(100px) translateX(-30%) rotateY(90deg); -webkit-transform-style: preserve-3d; -ms-transform-style: preserve-3d; -o-transform-style: preserve-3d; transform-style: preserve-3d; -webkit-transform-origin: 0 100%; -ms-transform-origin: 0 100%; transform-origin: 0 100%; opacity: 0; } .effeckt-show.rotate-from-left-3D .effeckt-content { -webkit-transform: translateZ(0px) translateX(0%) rotateY(0deg); -ms-transform: translateZ(0px) translateX(0%) rotateY(0deg); transform: translateZ(0px) translateX(0%) rotateY(0deg); opacity: 1; } .let-me-in ~ [data-effeckt-page] { transition: 300ms; } .let-me-in ~ [data-effeckt-page], .let-me-in ~ .effeckt-overlay { -webkit-transform-origin: 50% 0%; -ms-transform-origin: 50% 0%; transform-origin: 50% 0%; -webkit-transform-style: preserve-3d; -ms-transform-style: preserve-3d; -o-transform-style: preserve-3d; transform-style: preserve-3d; } .let-me-in .effeckt-content { opacity: 0; -webkit-transform: translateY(200%); -ms-transform: translateY(200%); transform: translateY(200%); } .effeckt-show.let-me-in ~ [data-effeckt-page], .effeckt-show.let-me-in ~ .effeckt-overlay { -webkit-transform: rotateX(-2deg); -ms-transform: rotateX(-2deg); transform: rotateX(-2deg); opacity: 1; } .effeckt-show.let-me-in .effeckt-content { -webkit-transform: translateY(-50%); -ms-transform: translateY(-50%); transform: translateY(-50%); opacity: 1; } .make-way { -webkit-perspective: 600px; -ms-perspective: 600px; -o-perspective: 600px; perspective: 600px; } .make-way ~ [data-effeckt-page] { -webkit-transform-style: preserve-3d; -ms-transform-style: preserve-3d; -o-transform-style: preserve-3d; transform-style: preserve-3d; -webkit-transform-origin: 0% 50%; -ms-transform-origin: 0% 50%; transform-origin: 0% 50%; } .make-way .effeckt-content { -webkit-transform: translateX(200%); -ms-transform: translateX(200%); transform: translateX(200%); opacity: 0; } .effeckt-show.make-way ~ [data-effeckt-page] { -webkit-animation: makeWay 300ms forwards ease-in; animation: makeWay 300ms forwards ease-in; overflow: visible; } .effeckt-show.make-way .effeckt-content { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; } @-webkit-keyframes makeWay { 50% { -webkit-transform: translateZ(-50px) rotateY(5deg); transform: translateZ(-50px) rotateY(5deg); -webkit-animation-timing-function: ease-out; animation-timing-function: ease-out; } 100% { -webkit-transform: translateZ(-200px); transform: translateZ(-200px); } } @keyframes makeWay { 50% { -webkit-transform: translateZ(-50px) rotateY(5deg); -ms-transform: translateZ(-50px) rotateY(5deg); transform: translateZ(-50px) rotateY(5deg); -webkit-animation-timing-function: ease-out; animation-timing-function: ease-out; } 100% { -webkit-transform: translateZ(-200px); -ms-transform: translateZ(-200px); transform: translateZ(-200px); } } .deep-content .effeckt-content { -webkit-transform: scale(0.7); -ms-transform: scale(0.7); transform: scale(0.7); opacity: 0; } .deep-content ~ [data-effeckt-page] { -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1); transition: 300ms; height: 100%; overflow: hidden; } .effeckt-show.deep-content ~ [data-effeckt-page] { -webkit-transform: scale(0.85); -ms-transform: scale(0.85); transform: scale(0.85); -webkit-filter: blur(3px); filter: blur(3px); } .effeckt-show.deep-content .effeckt-content { -webkit-transform: scale(1.1); -ms-transform: scale(1.1); transform: scale(1.1); opacity: 1; } .newspaper .effeckt-content { -webkit-transform: scale(0.5) rotate(720deg); -ms-transform: scale(0.5) rotate(720deg); transform: scale(0.5) rotate(720deg); opacity: 0; } .effeckt-show.newspaper .effeckt-content { -webkit-transform: scale(1) rotate(0deg); -ms-transform: scale(1) rotate(0deg); transform: scale(1) rotate(0deg); opacity: 1; } .side-fall { -webkit-perspective: 600px; -ms-perspective: 600px; -o-perspective: 600px; perspective: 600px; -webkit-transform-style: preserve-3d; -ms-transform-style: preserve-3d; -o-transform-style: preserve-3d; transform-style: preserve-3d; } .side-fall .effeckt-content { transition-timing-function: ease-out; -webkit-transform: translateZ(600px) translateX(30%) rotate(10deg); -ms-transform: translateZ(600px) translateX(30%) rotate(10deg); transform: translateZ(600px) translateX(30%) rotate(10deg); opacity: 0; } .effeckt-show.side-fall .effeckt-content { transition-timing-function: ease-in; -webkit-transform: translateZ(0) translateX(0) rotate(0deg); -ms-transform: translateZ(0) translateX(0) rotate(0deg); transform: translateZ(0) translateX(0) rotate(0deg); opacity: 1; } .fade-in .effeckt-content { opacity: 0; } .effeckt-show.fade-in .effeckt-content { opacity: 1; } .effeckt-show.blur ~ [data-effeckt-page] { -webkit-filter: blur(3px); filter: blur(3px); } .blur .effeckt-content { opacity: 0; } .effeckt-show.blur ~ [data-effeckt-page] { transition: all 300ms ease; } .effeckt-show.blur .effeckt-content { opacity: 1; } .tilt-fall .effeckt-content { -webkit-transform: translateY(100%) rotate(-25deg); -ms-transform: translateY(100%) rotate(-25deg); transform: translateY(100%) rotate(-25deg); opacity: 0; } .shake .effeckt-content { opacity: 0; } .effeckt-show.shake .effeckt-content { opacity: 1; -webkit-animation-name: shake; animation-name: shake; } @-webkit-keyframes shake { 0%, 100% { -webkit-transform: translateX(0); transform: translateX(0); } 10%, 30%, 50%, 70%, 90% { -webkit-transform: translateX(-10px); transform: translateX(-10px); } 20%, 40%, 60%, 80% { -webkit-transform: translateX(10px); transform: translateX(10px); } } @keyframes shake { 0%, 100% { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); } 10%, 30%, 50%, 70%, 90% { -webkit-transform: translateX(-10px); -ms-transform: translateX(-10px); transform: translateX(-10px); } 20%, 40%, 60%, 80% { -webkit-transform: translateX(10px); -ms-transform: translateX(10px); transform: translateX(10px); } } .bounce .effeckt-content { opacity: 0; } .effeckt-show.bounce .effeckt-content { opacity: 1; -webkit-animation-name: bounce; animation-name: bounce; } @-webkit-keyframes bounce { 0%, 20%, 50%, 80%, 100% { -webkit-transform: translateY(0); transform: translateY(0); } 40% { -webkit-transform: translateY(-30px); transform: translateY(-30px); } 60% { -webkit-transform: translateY(-15px); transform: translateY(-15px); } } @keyframes bounce { 0%, 20%, 50%, 80%, 100% { -webkit-transform: translateY(0); -ms-transform: translateY(0); transform: translateY(0); } 40% { -webkit-transform: translateY(-30px); -ms-transform: translateY(-30px); transform: translateY(-30px); } 60% { -webkit-transform: translateY(-15px); -ms-transform: translateY(-15px); transform: translateY(-15px); } } .pulse .effeckt-content { opacity: 0; } .effeckt-show.pulse .effeckt-content { opacity: 1; -webkit-animation-name: pulse; animation-name: pulse; } @-webkit-keyframes pulse { 0% { -webkit-transform: scale(1); transform: scale(1); } 50% { -webkit-transform: scale(1.1); transform: scale(1.1); } 100% { -webkit-transform: scale(1); transform: scale(1); } } @keyframes pulse { 0% { -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1); } 50% { -webkit-transform: scale(1.1); -ms-transform: scale(1.1); transform: scale(1.1); } 100% { -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1); } } .wobble .effeckt-content { opacity: 0; } .effeckt-show.wobble .effeckt-content { opacity: 1; -webkit-animation-name: wobble; animation-name: wobble; } @-webkit-keyframes wobble { 0% { -webkit-transform: translateX(0%); transform: translateX(0%); } 15% { -webkit-transform: translateX(-25%) rotate(-5deg); transform: translateX(-25%) rotate(-5deg); } 30% { -webkit-transform: translateX(20%) rotate(3deg); transform: translateX(20%) rotate(3deg); } 45% { -webkit-transform: translateX(-15%) rotate(-3deg); transform: translateX(-15%) rotate(-3deg); } 60% { -webkit-transform: translateX(10%) rotate(2deg); transform: translateX(10%) rotate(2deg); } 75% { -webkit-transform: translateX(-5%) rotate(-1deg); transform: translateX(-5%) rotate(-1deg); } 100% { -webkit-transform: translateX(0%); transform: translateX(0%); } } @keyframes wobble { 0% { -webkit-transform: translateX(0%); -ms-transform: translateX(0%); transform: translateX(0%); } 15% { -webkit-transform: translateX(-25%) rotate(-5deg); -ms-transform: translateX(-25%) rotate(-5deg); transform: translateX(-25%) rotate(-5deg); } 30% { -webkit-transform: translateX(20%) rotate(3deg); -ms-transform: translateX(20%) rotate(3deg); transform: translateX(20%) rotate(3deg); } 45% { -webkit-transform: translateX(-15%) rotate(-3deg); -ms-transform: translateX(-15%) rotate(-3deg); transform: translateX(-15%) rotate(-3deg); } 60% { -webkit-transform: translateX(10%) rotate(2deg); -ms-transform: translateX(10%) rotate(2deg); transform: translateX(10%) rotate(2deg); } 75% { -webkit-transform: translateX(-5%) rotate(-1deg); -ms-transform: translateX(-5%) rotate(-1deg); transform: translateX(-5%) rotate(-1deg); } 100% { -webkit-transform: translateX(0%); -ms-transform: translateX(0%); transform: translateX(0%); } } .swing .effeckt-content { -webkit-transform-origin: 50% 0%; -ms-transform-origin: 50% 0%; transform-origin: 50% 0%; opacity: 0; } .effeckt-show.swing .effeckt-content { opacity: 1; -webkit-animation-name: swing; animation-name: swing; } @-webkit-keyframes swing { 20% { -webkit-transform: rotate(15deg); transform: rotate(15deg); } 40% { -webkit-transform: rotate(-10deg); transform: rotate(-10deg); } 60% { -webkit-transform: rotate(5deg); transform: rotate(5deg); } 80% { -webkit-transform: rotate(-5deg); transform: rotate(-5deg); } 100% { -webkit-transform: rotate(0deg); transform: rotate(0deg); } } @keyframes swing { 20% { -webkit-transform: rotate(15deg); -ms-transform: rotate(15deg); transform: rotate(15deg); } 40% { -webkit-transform: rotate(-10deg); -ms-transform: rotate(-10deg); transform: rotate(-10deg); } 60% { -webkit-transform: rotate(5deg); -ms-transform: rotate(5deg); transform: rotate(5deg); } 80% { -webkit-transform: rotate(-5deg); -ms-transform: rotate(-5deg); transform: rotate(-5deg); } 100% { -webkit-transform: rotate(0deg); -ms-transform: rotate(0deg); transform: rotate(0deg); } } .tada .effeckt-content { opacity: 0; } .effeckt-show.tada .effeckt-content { opacity: 1; -webkit-animation-name: tada; animation-name: tada; } @-webkit-keyframes tada { 0% { -webkit-transform: scale(1); transform: scale(1); } 10%, 20% { -webkit-transform: scale(0.9) rotate(-3deg); transform: scale(0.9) rotate(-3deg); } 30%, 50%, 70%, 90% { -webkit-transform: scale(1.1) rotate(3deg); transform: scale(1.1) rotate(3deg); } 40%, 60%, 80% { -webkit-transform: scale(1.1) rotate(-3deg); transform: scale(1.1) rotate(-3deg); } 100% { -webkit-transform: scale(1) rotate(0); transform: scale(1) rotate(0); } } @keyframes tada { 0% { -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1); } 10%, 20% { -webkit-transform: scale(0.9) rotate(-3deg); -ms-transform: scale(0.9) rotate(-3deg); transform: scale(0.9) rotate(-3deg); } 30%, 50%, 70%, 90% { -webkit-transform: scale(1.1) rotate(3deg); -ms-transform: scale(1.1) rotate(3deg); transform: scale(1.1) rotate(3deg); } 40%, 60%, 80% { -webkit-transform: scale(1.1) rotate(-3deg); -ms-transform: scale(1.1) rotate(-3deg); transform: scale(1.1) rotate(-3deg); } 100% { -webkit-transform: scale(1) rotate(0); -ms-transform: scale(1) rotate(0); transform: scale(1) rotate(0); } } ================================================ FILE: css/modules/off-screen-nav.css ================================================ .effeckt-off-screen-nav ~ [data-effeckt-page].effeckt-page-active:after { position: absolute; top: 0; left: 0; width: 100%; height: 100%; content: ""; background: rgba(0, 0, 0, 0.2); opacity: 0; visibility: hidden; transition: 500ms; } .effeckt-off-screen-nav.effeckt-show ~ [data-effeckt-page].effeckt-page-active:after { opacity: 1; visibility: visible; } .effeckt-off-screen-nav-left-overlay { -webkit-transform: translateX(-100%); -ms-transform: translateX(-100%); transform: translateX(-100%); transition: 500ms cubic-bezier(0.09, 0.68, 0, 0.99); } .effeckt-off-screen-nav-left-overlay.effeckt-show { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); } .effeckt-off-screen-nav-left-push { -webkit-transform: translateX(-12rem); -ms-transform: translateX(-12rem); transform: translateX(-12rem); transition: 500ms; } .effeckt-off-screen-nav-left-push.effeckt-show { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); } .effeckt-off-screen-nav-left-push.effeckt-show ~ [data-effeckt-page].effeckt-page-active { -webkit-transform: translateX(12rem); -ms-transform: translateX(12rem); transform: translateX(12rem); } .effeckt-off-screen-nav-left-push ~ [data-effeckt-page].effeckt-page-active { transition: 500ms; -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); } .effeckt-off-screen-nav-left-reveal { width: 0px; -webkit-transform: translate3D(0, 0, 0); -ms-transform: translate3D(0, 0, 0); transform: translate3D(0, 0, 0); transition: 500ms; } .effeckt-off-screen-nav-left-reveal h4 { width: 10rem; } .effeckt-off-screen-nav-left-reveal.effeckt-show { width: 12rem; -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); } .effeckt-off-screen-nav-left-reveal.effeckt-show ~ [data-effeckt-page] { -webkit-transform: translateX(12rem); -ms-transform: translateX(12rem); transform: translateX(12rem); } .effeckt-off-screen-nav-left-reveal ~ [data-effeckt-page] { transition: 500ms; } .effeckt-off-screen-nav-left-squeeze { width: 40%; -webkit-transform: translateX(-100%); -ms-transform: translateX(-100%); transform: translateX(-100%); transition: 500ms; } .effeckt-off-screen-nav-left-squeeze.effeckt-show { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); } .effeckt-off-screen-nav-left-squeeze.effeckt-show ~ [data-effeckt-page] { width: 60%; } .effeckt-off-screen-nav-left-squeeze ~ [data-effeckt-page] { float: right; transition: width 500ms; max-width: none; } .effeckt-off-screen-nav-right-overlay { right: 0; left: auto; -webkit-transform: translateX(100%); -ms-transform: translateX(100%); transform: translateX(100%); transition: 500ms cubic-bezier(0.09, 0.68, 0, 0.99); } .effeckt-off-screen-nav-right-overlay.effeckt-show { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); } .effeckt-off-screen-nav-right-push { left: auto; right: 0; -webkit-transform: translateX(12rem); -ms-transform: translateX(12rem); transform: translateX(12rem); transition: 500ms; } .effeckt-off-screen-nav-right-push.effeckt-show { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); } .effeckt-off-screen-nav-right-push.effeckt-show ~ [data-effeckt-page] { -webkit-transform: translateX(-12rem); -ms-transform: translateX(-12rem); transform: translateX(-12rem); } .effeckt-off-screen-nav-right-push ~ [data-effeckt-page] { transition: 500ms; } .effeckt-off-screen-nav-right-reveal { width: 0; overflow: hidden; left: auto; right: 0; -webkit-transform: translate3D(0, 0, 0); -ms-transform: translate3D(0, 0, 0); transform: translate3D(0, 0, 0); transition: 500ms; } .effeckt-off-screen-nav-right-reveal h4 { width: 10rem; position: absolute; top: 0px; right: 0; } .effeckt-off-screen-nav-right-reveal ul { width: 12rem; position: absolute; top: 3.2rem; right: 0; } .effeckt-off-screen-nav-right-reveal.effeckt-show { width: 12rem; } .effeckt-off-screen-nav-right-reveal.effeckt-show ~ [data-effeckt-page] { -webkit-transform: translateX(-12rem); -ms-transform: translateX(-12rem); transform: translateX(-12rem); } .effeckt-off-screen-nav-right-reveal ~ [data-effeckt-page] { transition: 500ms; } .effeckt-off-screen-nav-right-squeeze { left: auto; right: 0; width: 40%; -webkit-transform: translateX(100%); -ms-transform: translateX(100%); transform: translateX(100%); transition: 500ms; } .effeckt-off-screen-nav-right-squeeze.effeckt-show { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); } .effeckt-off-screen-nav-right-squeeze.effeckt-show ~ [data-effeckt-page] { width: 60%; } .effeckt-off-screen-nav-right-squeeze ~ [data-effeckt-page] { float: left; transition: width 500ms; max-width: none; } .effeckt-off-screen-nav-left-rotate { -webkit-transform-origin: 100% 50%; -ms-transform-origin: 100% 50%; transform-origin: 100% 50%; transition: 500ms; -webkit-transform: translateX(-100%) scale(1.01) rotateY(-30deg); transform: translateX(-100%) scale(1.01) rotateY(-30deg); } .effeckt-off-screen-nav-left-rotate ~ [data-effeckt-page].effeckt-page-active { -webkit-transform-origin: 0 50%; -ms-transform-origin: 0 50%; transform-origin: 0 50%; transition: 500ms; } .effeckt-off-screen-nav-left-rotate ~ .effeckt-overlay { z-index: 900; visibility: visible; opacity: 1; } .effeckt-off-screen-nav-left-rotate.effeckt-show { -webkit-transform: none; -ms-transform: none; transform: none; } .effeckt-off-screen-nav-left-rotate.effeckt-show ~ [data-effeckt-page].effeckt-page-active { -webkit-transform: translateX(260px) rotateY(15deg); transform: translateX(260px) rotateY(15deg); overflow: hidden; } .effeckt-off-screen-nav-left-rotate.effeckt-show ~ [data-effeckt-page].effeckt-page-active:after { background: none; } .effeckt-off-screen-nav-left-rotate.effeckt-show ~ [data-effeckt-page] .off-screen-nav-cover { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } .effeckt-off-screen-nav-top-overlay { width: 100%; bottom: auto; transition: 500ms; -webkit-transform: translateY(-100%); -ms-transform: translateY(-100%); transform: translateY(-100%); } .effeckt-off-screen-nav-top-overlay.effeckt-show { visibility: visible; -webkit-transform: translateY(0%); -ms-transform: translateY(0%); transform: translateY(0%); } .effeckt-off-screen-nav-bottom-overlay { width: 100%; top: auto; transition: 500ms; -webkit-transform: translateY(100%); -ms-transform: translateY(100%); transform: translateY(100%); } .effeckt-off-screen-nav-bottom-overlay.effeckt-show { -webkit-transform: translateY(0%); -ms-transform: translateY(0%); transform: translateY(0%); } .effeckt-off-screen-nav-top-bounce { width: 100%; bottom: auto; transition: 500ms; } .effeckt-off-screen-nav-top-bounce.effeckt-show { visibility: visible; -webkit-animation: navFromTopBounceIn 500ms both ease; animation: navFromTopBounceIn 500ms both ease; } .effeckt-off-screen-nav-top-bounce.effeckt-hide { -webkit-animation: navFromTopBounceOut 500ms both ease; animation: navFromTopBounceOut 500ms both ease; } .effeckt-off-screen-nav-top-bounce-out { width: 100%; bottom: auto; -webkit-transform: translateY(-100%); -ms-transform: translateY(-100%); transform: translateY(-100%); transition: 500ms; } .effeckt-off-screen-nav-top-bounce-out.effeckt-show { visibility: visible; -webkit-transform: translateY(0%); -ms-transform: translateY(0%); transform: translateY(0%); } .effeckt-off-screen-nav-top-bounce-out.effeckt-hide { -webkit-animation: navFromTopBounceOut 500ms both ease; animation: navFromTopBounceOut 500ms both ease; } @-webkit-keyframes navFromTopBounceIn { 0% { -webkit-transform: translateY(-100%); transform: translateY(-100%); } 20% { padding-top: 0px; -webkit-transform: translateY(0%); transform: translateY(0%); } 60% { padding-top: 20px; } 100% { padding-top: 0; } } @keyframes navFromTopBounceIn { 0% { -webkit-transform: translateY(-100%); transform: translateY(-100%); } 20% { padding-top: 0px; -webkit-transform: translateY(0%); transform: translateY(0%); } 60% { padding-top: 20px; } 100% { padding-top: 0; } } @-webkit-keyframes navFromTopBounceOut { 0% { -webkit-transform: translateY(0%); transform: translateY(0%); padding-top: 0px; } 40% { -webkit-transform: translateY(0%); transform: translateY(0%); padding-top: 20px; } 80% { padding-top: 0px; } 90%, 100% { -webkit-transform: translateY(-100%); transform: translateY(-100%); } } @keyframes navFromTopBounceOut { 0% { -webkit-transform: translateY(0%); transform: translateY(0%); padding-top: 0px; } 40% { -webkit-transform: translateY(0%); transform: translateY(0%); padding-top: 20px; } 80% { padding-top: 0px; } 90%, 100% { -webkit-transform: translateY(-100%); transform: translateY(-100%); } } .effeckt-off-screen-nav-bottom-bounce { width: 100%; top: auto; transition: 500ms; } .effeckt-off-screen-nav-bottom-bounce.effeckt-show { -webkit-animation: navFromBottomBounceIn 500ms both ease; animation: navFromBottomBounceIn 500ms both ease; } .effeckt-off-screen-nav-bottom-bounce.effeckt-hide { -webkit-animation: navFromBottomBounceOut 500ms both ease; animation: navFromBottomBounceOut 500ms both ease; } .effeckt-off-screen-nav-bottom-bounce-out { width: 100%; top: auto; -webkit-transform: translateY(100%); -ms-transform: translateY(100%); transform: translateY(100%); transition: 500ms; } .effeckt-off-screen-nav-bottom-bounce-out.effeckt-show { -webkit-transform: translateY(0%); -ms-transform: translateY(0%); transform: translateY(0%); } .effeckt-off-screen-nav-bottom-bounce-out.effeckt-hide { -webkit-animation: navFromBottomBounceOut 500ms both ease; animation: navFromBottomBounceOut 500ms both ease; } @-webkit-keyframes navFromBottomBounceIn { 0% { -webkit-transform: translateY(100%); transform: translateY(100%); } 20% { padding-bottom: 0px; -webkit-transform: translateY(0%); transform: translateY(0%); } 60% { padding-bottom: 20px; } 100% { padding-bottom: 0; } } @keyframes navFromBottomBounceIn { 0% { -webkit-transform: translateY(100%); transform: translateY(100%); } 20% { padding-bottom: 0px; -webkit-transform: translateY(0%); transform: translateY(0%); } 60% { padding-bottom: 20px; } 100% { padding-bottom: 0; } } @-webkit-keyframes navFromBottomBounceOut { 0% { -webkit-transform: translateY(0%); transform: translateY(0%); padding-bottom: 0px; } 40% { -webkit-transform: translateY(0%); transform: translateY(0%); padding-bottom: 20px; } 80% { padding-bottom: 0; } 90%, 100% { -webkit-transform: translateY(100%); transform: translateY(100%); } } @keyframes navFromBottomBounceOut { 0% { -webkit-transform: translateY(0%); transform: translateY(0%); padding-bottom: 0px; } 40% { -webkit-transform: translateY(0%); transform: translateY(0%); padding-bottom: 20px; } 80% { padding-bottom: 0; } 90%, 100% { -webkit-transform: translateY(100%); transform: translateY(100%); } } .effeckt-off-screen-nav-push-top { width: 100%; bottom: auto; transition: 500ms; -webkit-transform: translateY(-100%); -ms-transform: translateY(-100%); transform: translateY(-100%); } .effeckt-off-screen-nav-push-top.effeckt-show { visibility: visible; -webkit-transform: translateY(0%); -ms-transform: translateY(0%); transform: translateY(0%); } .effeckt-off-screen-nav-push-top.effeckt-show ~ [data-effeckt-page] { -webkit-transform: translateY(12rem); -ms-transform: translateY(12rem); transform: translateY(12rem); } .effeckt-off-screen-nav-push-top ~ [data-effeckt-page] { transition: 500ms; } .effeckt-off-screen-nav-push-bottom { width: 100%; top: auto; transition: 500ms; -webkit-transform: translateY(100%); -ms-transform: translateY(100%); transform: translateY(100%); } .effeckt-off-screen-nav-push-bottom.effeckt-show { visibility: visible; -webkit-transform: translateY(0%); -ms-transform: translateY(0%); transform: translateY(0%); } .effeckt-off-screen-nav-push-bottom.effeckt-show ~ [data-effeckt-page] { -webkit-transform: translateY(-12rem); -ms-transform: translateY(-12rem); transform: translateY(-12rem); } .effeckt-off-screen-nav-push-bottom ~ [data-effeckt-page] { transition: 500ms; } .effeckt-off-screen-nav-right-rotate { left: auto; right: 0; -webkit-transform-origin: 100% 50%; -ms-transform-origin: 100% 50%; transform-origin: 100% 50%; transition: 500ms; -webkit-transform: rotateY(30deg) translateX(100%) scale(1.01); transform: rotateY(30deg) translateX(100%) scale(1.01); } .effeckt-off-screen-nav-right-rotate ~ [data-effeckt-page] { -webkit-transform-origin: 100% 50%; -ms-transform-origin: 100% 50%; transform-origin: 100% 50%; transition: 500ms; } .effeckt-off-screen-nav-right-rotate ~ .effeckt-overlay { z-index: 900; visibility: visible; opacity: 1; } .effeckt-off-screen-nav-right-rotate.effeckt-show { -webkit-transform: none; -ms-transform: none; transform: none; } .effeckt-off-screen-nav-right-rotate.effeckt-show ~ [data-effeckt-page] { -webkit-transform: translateX(-260px) rotateY(-15deg); transform: translateX(-260px) rotateY(-15deg); overflow: hidden; } .effeckt-off-screen-nav-right-rotate.effeckt-show ~ [data-effeckt-page]:after { background: none; } .effeckt-off-screen-nav-right-rotate.effeckt-show ~ [data-effeckt-page] .off-screen-nav-cover { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } .effeckt-off-screen-nav-top-card-deck { -webkit-perspective: 800px; perspective: 800px; bottom: auto; -webkit-transform: translateY(-100%); -ms-transform: translateY(-100%); transform: translateY(-100%); width: 100%; overflow: visible; transition: -webkit-transform 250ms; transition: transform 250ms; } .effeckt-off-screen-nav-top-card-deck.effeckt-show { -webkit-transform: translateY(0%); -ms-transform: translateY(0%); transform: translateY(0%); } .effeckt-off-screen-nav-top-card-deck h4 { position: relative; z-index: 300; -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-transform-style: preserve-3d; transform-style: preserve-3d; -webkit-transform-origin: 50% 0%; -ms-transform-origin: 50% 0%; transform-origin: 50% 0%; transition: all 250ms ease-out; display: block; } .effeckt-off-screen-nav-top-card-deck h4:active { -webkit-transform: rotateX(60deg); transform: rotateX(60deg); } .effeckt-off-screen-nav-top-card-deck ul { position: absolute; width: 100%; height: 100%; top: 0; margin: 0; } .effeckt-off-screen-nav-top-card-deck ul li { transition: all 250ms ease-out; position: absolute; top: 0; z-index: 0; width: 100%; height: 100%; -webkit-transform: translateY(0px); -ms-transform: translateY(0px); transform: translateY(0px); } .effeckt-off-screen-nav-bottom-card-deck { -webkit-perspective: 800px; perspective: 800px; top: auto; -webkit-transform: translateY(100%); -ms-transform: translateY(100%); transform: translateY(100%); width: 100%; overflow: visible; transition: -webkit-transform 250ms; transition: transform 250ms; } .effeckt-off-screen-nav-bottom-card-deck.effeckt-show { -webkit-transform: translateY(0%); -ms-transform: translateY(0%); transform: translateY(0%); } .effeckt-off-screen-nav-bottom-card-deck h4 { position: relative; z-index: 300; -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-transform-style: preserve-3d; transform-style: preserve-3d; -webkit-transform-origin: 50% 100%; -ms-transform-origin: 50% 100%; transform-origin: 50% 100%; transition: all 250ms ease-out; display: block; } .effeckt-off-screen-nav-bottom-card-deck h4:active { -webkit-transform: rotateX(-60deg); transform: rotateX(-60deg); } .effeckt-off-screen-nav-bottom-card-deck ul { position: absolute; width: 100%; height: 100%; bottom: 0; margin: 0; } .effeckt-off-screen-nav-bottom-card-deck ul li { transition: all 250ms ease-out; position: absolute; top: 0; z-index: 0; width: 100%; height: 100%; -webkit-transform: translateY(300px); -ms-transform: translateY(300px); transform: translateY(300px); } .effeckt-off-screen-nav-left-bounce { transition: 500ms; -webkit-transform: translateX(-100%); -ms-transform: translateX(-100%); transform: translateX(-100%); } .effeckt-off-screen-nav-left-bounce.effeckt-show { visibility: visible; -webkit-transform: translateX(0%); -ms-transform: translateX(0%); transform: translateX(0%); -webkit-animation: navFromLeftBounceIn 500ms both ease; animation: navFromLeftBounceIn 500ms both ease; } .effeckt-off-screen-nav-left-bounce.effeckt-hide { -webkit-transform: translateX(-100%); -ms-transform: translateX(-100%); transform: translateX(-100%); -webkit-animation: navFromLeftBounceOut 500ms both ease; animation: navFromLeftBounceOut 500ms both ease; } @-webkit-keyframes navFromLeftBounceIn { 0% { -webkit-transform: translateX(-100%); transform: translateX(-100%); } 20% { padding-left: 0px; -webkit-transform: translateX(0%); transform: translateX(0%); } 60% { padding-left: 20px; } 100% { padding-left: 0px; } } @keyframes navFromLeftBounceIn { 0% { -webkit-transform: translateX(-100%); transform: translateX(-100%); } 20% { padding-left: 0px; -webkit-transform: translateX(0%); transform: translateX(0%); } 60% { padding-left: 20px; } 100% { padding-left: 0px; } } @-webkit-keyframes navFromLeftBounceOut { 0% { -webkit-transform: translateX(0%); transform: translateX(0%); padding-left: 0px; } 40% { -webkit-transform: translateX(0%); transform: translateX(0%); padding-left: 20px; } 80% { padding-left: 0px; } 90%, 100% { -webkit-transform: translateX(-100%); transform: translateX(-100%); } } @keyframes navFromLeftBounceOut { 0% { -webkit-transform: translateX(0%); transform: translateX(0%); padding-left: 0px; } 40% { -webkit-transform: translateX(0%); transform: translateX(0%); padding-left: 20px; } 80% { padding-left: 0px; } 90%, 100% { -webkit-transform: translateX(-100%); transform: translateX(-100%); } } .effeckt-off-screen-nav-left-bounce-out { -webkit-transform: translateX(-100%); -ms-transform: translateX(-100%); transform: translateX(-100%); transition: 500ms; } .effeckt-off-screen-nav-left-bounce-out.effeckt-show { visibility: visible; -webkit-transform: translateY(0%); -ms-transform: translateY(0%); transform: translateY(0%); } .effeckt-off-screen-nav-left-bounce-out.effeckt-hide { -webkit-animation: navFromLeftBounceOut 500ms both ease; animation: navFromLeftBounceOut 500ms both ease; } .effeckt-off-screen-nav-right-bounce { left: auto; right: 0; transition: 500ms; } .effeckt-off-screen-nav-right-bounce.effeckt-show { visibility: visible; -webkit-animation: navFromRightBounceIn 500ms both ease; animation: navFromRightBounceIn 500ms both ease; } .effeckt-off-screen-nav-right-bounce.effeckt-hide { -webkit-animation: navFromRightBounceOut 500ms both ease; animation: navFromRightBounceOut 500ms both ease; } @-webkit-keyframes navFromRightBounceIn { 0% { -webkit-transform: translateX(100%); transform: translateX(100%); } 20% { padding-right: 0px; -webkit-transform: translateX(0%); transform: translateX(0%); } 60% { padding-right: 20px; } 100% { padding-right: 0px; } } @keyframes navFromRightBounceIn { 0% { -webkit-transform: translateX(100%); transform: translateX(100%); } 20% { padding-right: 0px; -webkit-transform: translateX(0%); transform: translateX(0%); } 60% { padding-right: 20px; } 100% { padding-right: 0px; } } @-webkit-keyframes navFromRightBounceOut { 0% { -webkit-transform: translateX(0%); transform: translateX(0%); padding-right: 0px; } 40% { -webkit-transform: translateX(0%); transform: translateX(0%); padding-right: 20px; } 80% { padding-right: 0px; } 90%, 100% { -webkit-transform: translateX(100%); transform: translateX(100%); } } @keyframes navFromRightBounceOut { 0% { -webkit-transform: translateX(0%); transform: translateX(0%); padding-right: 0px; } 40% { -webkit-transform: translateX(0%); transform: translateX(0%); padding-right: 20px; } 80% { padding-right: 0px; } 90%, 100% { -webkit-transform: translateX(100%); transform: translateX(100%); } } .effeckt-off-screen-nav-right-bounce-out { left: auto; right: 0; -webkit-transform: translateX(100%); -ms-transform: translateX(100%); transform: translateX(100%); transition: 500ms; } .effeckt-off-screen-nav-right-bounce-out.effeckt-show { visibility: visible; -webkit-transform: translateY(0%); -ms-transform: translateY(0%); transform: translateY(0%); } .effeckt-off-screen-nav-right-bounce-out.effeckt-hide { -webkit-animation: navFromRightBounceOut 500ms both ease; animation: navFromRightBounceOut 500ms both ease; } .effeckt-off-screen-nav-bottom-rotate { top: auto; width: 100%; -webkit-transform-origin: 100% 50%; -ms-transform-origin: 100% 50%; transform-origin: 100% 50%; transition: 500ms; -webkit-transform: translateY(100%) scale(1.01) rotateX(-30deg); transform: translateY(100%) scale(1.01) rotateX(-30deg); } .effeckt-off-screen-nav-bottom-rotate ~ [data-effeckt-page].effeckt-page-active { -webkit-transform-origin: 0% 100%; -ms-transform-origin: 0% 100%; transform-origin: 0% 100%; transition: 500ms; } .effeckt-off-screen-nav-bottom-rotate ~ .effeckt-overlay { z-index: 900; visibility: visible; opacity: 1; } .effeckt-off-screen-nav-bottom-rotate.effeckt-show { -webkit-transform: none; -ms-transform: none; transform: none; } .effeckt-off-screen-nav-bottom-rotate.effeckt-show ~ [data-effeckt-page].effeckt-page-active { -webkit-transform: translateY(-260px) rotateX(15deg); transform: translateY(-260px) rotateX(15deg); overflow: hidden; } .effeckt-off-screen-nav-bottom-rotate.effeckt-show ~ [data-effeckt-page].effeckt-page-active:after { background: none; } .effeckt-off-screen-nav-bottom-rotate.effeckt-show ~ [data-effeckt-page] .off-screen-nav-cover { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } .effeckt-off-screen-nav-top-rotate { bottom: auto; width: 100%; -webkit-transform-origin: 50% 0%; -ms-transform-origin: 50% 0%; transform-origin: 50% 0%; transition: 500ms; -webkit-transform: translateY(-100%) scale(1.01) rotateX(30deg); transform: translateY(-100%) scale(1.01) rotateX(30deg); } .effeckt-off-screen-nav-top-rotate ~ [data-effeckt-page].effeckt-page-active { -webkit-transform-origin: 100% 0%; -ms-transform-origin: 100% 0%; transform-origin: 100% 0%; transition: 500ms; } .effeckt-off-screen-nav-top-rotate ~ .effeckt-overlay { z-index: 900; visibility: visible; opacity: 1; } .effeckt-off-screen-nav-top-rotate.effeckt-show { -webkit-transform: none; -ms-transform: none; transform: none; } .effeckt-off-screen-nav-top-rotate.effeckt-show ~ [data-effeckt-page].effeckt-page-active { -webkit-transform: translateY(260px) rotateX(-15deg); transform: translateY(260px) rotateX(-15deg); overflow: hidden; } .effeckt-off-screen-nav-top-rotate.effeckt-show ~ [data-effeckt-page].effeckt-page-active:after { background: none; } .effeckt-off-screen-nav-top-rotate.effeckt-show ~ [data-effeckt-page] .off-screen-nav-cover { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } .effeckt-off-screen-nav-minimize-reaveal { width: 100%; transition: 500ms; } .effeckt-off-screen-nav-minimize-reaveal ~ [data-effeckt-page].effeckt-page-active { transition: 500ms; box-shadow: 0px 0px 50px #CACACA; z-index: 1000; } .effeckt-off-screen-nav-minimize-reaveal li, .effeckt-off-screen-nav-minimize-reaveal h4 { transition: 500ms cubic-bezier(0.16, 0.86, 0.33, 0.97); -webkit-transform: translateX(5%); -ms-transform: translateX(5%); transform: translateX(5%); opacity: 0; } .effeckt-off-screen-nav-minimize-reaveal.effeckt-show h4 { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 500ms; } .effeckt-off-screen-nav-minimize-reaveal.effeckt-show li:nth-child(1) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 1125ms; } .effeckt-off-screen-nav-minimize-reaveal.effeckt-show li:nth-child(2) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 1250ms; } .effeckt-off-screen-nav-minimize-reaveal.effeckt-show li:nth-child(3) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 1375ms; } .effeckt-off-screen-nav-minimize-reaveal.effeckt-show li:nth-child(4) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 1500ms; } .effeckt-off-screen-nav-minimize-reaveal.effeckt-show li:nth-child(5) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 1625ms; } .effeckt-off-screen-nav-minimize-reaveal.effeckt-show li:nth-child(6) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 1750ms; } .effeckt-off-screen-nav-minimize-reaveal.effeckt-show li:nth-child(7) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 1875ms; } .effeckt-off-screen-nav-minimize-reaveal.effeckt-show li:nth-child(8) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 2000ms; } .effeckt-off-screen-nav-minimize-reaveal.effeckt-show li:nth-child(9) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 2125ms; } .effeckt-off-screen-nav-minimize-reaveal.effeckt-show li:nth-child(10) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 2250ms; } .effeckt-off-screen-nav-minimize-reaveal.effeckt-show li:nth-child(11) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 2375ms; } .effeckt-off-screen-nav-minimize-reaveal.effeckt-show li:nth-child(12) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 2500ms; } .effeckt-off-screen-nav-minimize-reaveal.effeckt-show li:nth-child(13) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 2625ms; } .effeckt-off-screen-nav-minimize-reaveal.effeckt-show li:nth-child(14) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 2750ms; } .effeckt-off-screen-nav-minimize-reaveal.effeckt-show li:nth-child(15) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 2875ms; } .effeckt-off-screen-nav-minimize-reaveal.effeckt-show ~ [data-effeckt-page].effeckt-page-active { transition: 750ms cubic-bezier(0.16, 0.86, 0.33, 0.97); -webkit-transform: translateX(50%) scale3d(0.5, 0.5, 1); transform: translateX(50%) scale3d(0.5, 0.5, 1); overflow: hidden; } .effeckt-off-screen-nav-minimize-reaveal.effeckt-show ~ [data-effeckt-page] .off-screen-nav-cover { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } .effeckt-off-screen-nav-minimize-flip { width: 100%; transition: 500ms; } .effeckt-off-screen-nav-minimize-flip ~ [data-effeckt-page].effeckt-page-active { transition: 500ms; box-shadow: 0px 0px 50px #CACACA; z-index: 1000; } .effeckt-off-screen-nav-minimize-flip li, .effeckt-off-screen-nav-minimize-flip h4 { transition: 500ms cubic-bezier(0.16, 0.86, 0.33, 0.97); -webkit-transform: translateX(5%); -ms-transform: translateX(5%); transform: translateX(5%); opacity: 0; } .effeckt-off-screen-nav-minimize-flip.effeckt-show h4 { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 500ms; } .effeckt-off-screen-nav-minimize-flip.effeckt-show li:nth-child(1) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 1125ms; } .effeckt-off-screen-nav-minimize-flip.effeckt-show li:nth-child(2) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 1250ms; } .effeckt-off-screen-nav-minimize-flip.effeckt-show li:nth-child(3) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 1375ms; } .effeckt-off-screen-nav-minimize-flip.effeckt-show li:nth-child(4) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 1500ms; } .effeckt-off-screen-nav-minimize-flip.effeckt-show li:nth-child(5) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 1625ms; } .effeckt-off-screen-nav-minimize-flip.effeckt-show li:nth-child(6) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 1750ms; } .effeckt-off-screen-nav-minimize-flip.effeckt-show li:nth-child(7) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 1875ms; } .effeckt-off-screen-nav-minimize-flip.effeckt-show li:nth-child(8) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 2000ms; } .effeckt-off-screen-nav-minimize-flip.effeckt-show li:nth-child(9) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 2125ms; } .effeckt-off-screen-nav-minimize-flip.effeckt-show li:nth-child(10) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 2250ms; } .effeckt-off-screen-nav-minimize-flip.effeckt-show li:nth-child(11) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 2375ms; } .effeckt-off-screen-nav-minimize-flip.effeckt-show li:nth-child(12) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 2500ms; } .effeckt-off-screen-nav-minimize-flip.effeckt-show li:nth-child(13) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 2625ms; } .effeckt-off-screen-nav-minimize-flip.effeckt-show li:nth-child(14) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 2750ms; } .effeckt-off-screen-nav-minimize-flip.effeckt-show li:nth-child(15) { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); opacity: 1; transition-delay: 2875ms; } .effeckt-off-screen-nav-minimize-flip.effeckt-show ~ [data-effeckt-page].effeckt-page-active { transition: 750ms cubic-bezier(0.16, 0.86, 0.33, 0.97); -webkit-transform: translateX(50%) rotateY(-15deg) scale3d(0.5, 0.5, 1); transform: translateX(50%) rotateY(-15deg) scale3d(0.5, 0.5, 1); overflow: hidden; } .effeckt-off-screen-nav-minimize-flip.effeckt-show ~ [data-effeckt-page] .off-screen-nav-cover { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } ================================================ FILE: css/modules/page-transitions.css ================================================ [data-effeckt-page] { position: relative; top: 0; left: 0; width: 100%; height: 100%; -webkit-overflow-scrolling: touch; overflow-x: hidden; visibility: hidden; z-index: 0; padding: 2rem 4rem 0; -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); -webkit-transform-style: preserve-3d; transform-style: preserve-3d; display: none; } [data-effeckt-page].effeckt-page-active { display: block; visibility: visible; z-index: 10; } [data-effeckt-page].effeckt-page-animating { overflow: hidden; z-index: 100; position: absolute; } [data-effeckt-page].slide-from-left { -webkit-animation: slideFromLeft 1000ms forwards ease-in-out; animation: slideFromLeft 1000ms forwards ease-in-out; } [data-effeckt-page].slide-to-left { -webkit-animation: slideToLeft 1000ms forwards ease-in-out; animation: slideToLeft 1000ms forwards ease-in-out; } [data-effeckt-page].slide-from-right { -webkit-animation: slideFromRight 1000ms forwards ease-in-out; animation: slideFromRight 1000ms forwards ease-in-out; } [data-effeckt-page].slide-to-right { -webkit-animation: slideToRight 1000ms forwards ease-in-out; animation: slideToRight 1000ms forwards ease-in-out; } [data-effeckt-page].slide-from-top { -webkit-animation: slideFromTop 1000ms forwards ease-in-out; animation: slideFromTop 1000ms forwards ease-in-out; } [data-effeckt-page].slide-to-top { -webkit-animation: slideToTop 1000ms forwards ease-in-out; animation: slideToTop 1000ms forwards ease-in-out; } [data-effeckt-page].slide-from-bottom { -webkit-animation: slideFromBottom 1000ms forwards ease-in-out; animation: slideFromBottom 1000ms forwards ease-in-out; } [data-effeckt-page].slide-to-bottom { -webkit-animation: slideToBottom 1000ms forwards ease-in-out; animation: slideToBottom 1000ms forwards ease-in-out; } [data-effeckt-page].scale-up-from-behind { -webkit-animation: scaleUpFromBehind 1000ms forwards ease-in-out; animation: scaleUpFromBehind 1000ms forwards ease-in-out; } [data-effeckt-page].scale-up-to-front { -webkit-animation: scaleUpToFront 1000ms forwards ease-in-out; animation: scaleUpToFront 1000ms forwards ease-in-out; } [data-effeckt-page].scale-down-to-behind { -webkit-animation: scaleDownToBehind 1000ms forwards ease-in-out; animation: scaleDownToBehind 1000ms forwards ease-in-out; } [data-effeckt-page].scale-down-from-front { -webkit-animation: scaleDownFromFront 1000ms forwards ease-in-out; animation: scaleDownFromFront 1000ms forwards ease-in-out; } [data-effeckt-page].scale-down-slide-to-left { -webkit-animation: scaleDownSlideToLeft 2000ms forwards ease-in-out; animation: scaleDownSlideToLeft 2000ms forwards ease-in-out; } [data-effeckt-page].scale-down-slide-from-right { -webkit-animation: scaleDownSlideFromRight 2000ms forwards ease-in-out; animation: scaleDownSlideFromRight 2000ms forwards ease-in-out; } [data-effeckt-page].scale-down-slide-from-left { -webkit-animation: scaleDownSlideFromLeft 2000ms forwards ease-in-out; animation: scaleDownSlideFromLeft 2000ms forwards ease-in-out; } [data-effeckt-page].scale-down-slide-to-right { -webkit-animation: scaleDownSlideToRight 2000ms forwards ease-in-out; animation: scaleDownSlideToRight 2000ms forwards ease-in-out; } [data-effeckt-page].scale-down-slide-from-top { -webkit-animation: scaleDownSlideFromTop 2000ms forwards ease-in-out; animation: scaleDownSlideFromTop 2000ms forwards ease-in-out; } [data-effeckt-page].scale-down-slide-to-bottom { -webkit-animation: scaleDownSlideToBottom 2000ms forwards ease-in-out; animation: scaleDownSlideToBottom 2000ms forwards ease-in-out; } [data-effeckt-page].scale-down-slide-from-bottom { -webkit-animation: scaleDownSlideFromBottom 2000ms forwards ease-in-out; animation: scaleDownSlideFromBottom 2000ms forwards ease-in-out; } [data-effeckt-page].scale-down-slide-to-top { -webkit-animation: scaleDownSlideToTop 2000ms forwards ease-in-out; animation: scaleDownSlideToTop 2000ms forwards ease-in-out; } [data-effeckt-page].rotate-to-behind { -webkit-transform-origin: -50% 50%; -ms-transform-origin: -50% 50%; transform-origin: -50% 50%; -webkit-animation: rotateToBehind 500ms both ease-in; animation: rotateToBehind 500ms both ease-in; } [data-effeckt-page].rotate-to-front { -webkit-transform-origin: 150% 50%; -ms-transform-origin: 150% 50%; transform-origin: 150% 50%; -webkit-animation: rotateToFront 500ms both ease-out; animation: rotateToFront 500ms both ease-out; } [data-effeckt-page].flip-to-right-front { -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-animation: flipToRightBack 1000ms forwards ease; animation: flipToRightBack 1000ms forwards ease; } [data-effeckt-page].flip-to-right-back { -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-animation: flipToRight 1000ms forwards ease; animation: flipToRight 1000ms forwards ease; } [data-effeckt-page].flip-to-left-front { -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-animation: flipToLeftBack 1000ms forwards ease; animation: flipToLeftBack 1000ms forwards ease; } [data-effeckt-page].flip-to-left-back { -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-animation: flipToLeft 1000ms forwards ease; animation: flipToLeft 1000ms forwards ease; } [data-effeckt-page].flip-to-top-front { -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-animation: flipToTopBack 1000ms forwards ease; animation: flipToTopBack 1000ms forwards ease; } [data-effeckt-page].flip-to-top-back { -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-animation: flipToTop 1000ms forwards ease; animation: flipToTop 1000ms forwards ease; } [data-effeckt-page].flip-to-bottom-front { -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-animation: flipToBottomBack 1000ms forwards ease; animation: flipToBottomBack 1000ms forwards ease; } [data-effeckt-page].flip-to-bottom-back { -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-animation: flipToBottom 1000ms forwards ease; animation: flipToBottom 1000ms forwards ease; } @-webkit-keyframes slideFromTop { from { -webkit-transform: translateY(-100%); transform: translateY(-100%); } } @keyframes slideFromTop { from { -webkit-transform: translateY(-100%); transform: translateY(-100%); } } @-webkit-keyframes slideToTop { to { -webkit-transform: translateY(-100%); transform: translateY(-100%); } } @keyframes slideToTop { to { -webkit-transform: translateY(-100%); transform: translateY(-100%); } } @-webkit-keyframes slideFromRight { from { -webkit-transform: translateX(100%); transform: translateX(100%); } } @keyframes slideFromRight { from { -webkit-transform: translateX(100%); transform: translateX(100%); } } @-webkit-keyframes slideToRight { to { -webkit-transform: translateX(100%); transform: translateX(100%); } } @keyframes slideToRight { to { -webkit-transform: translateX(100%); transform: translateX(100%); } } @-webkit-keyframes slideFromBottom { from { -webkit-transform: translateY(100%); transform: translateY(100%); } } @keyframes slideFromBottom { from { -webkit-transform: translateY(100%); transform: translateY(100%); } } @-webkit-keyframes slideToBottom { to { -webkit-transform: translateY(100%); transform: translateY(100%); } } @keyframes slideToBottom { to { -webkit-transform: translateY(100%); transform: translateY(100%); } } @-webkit-keyframes slideFromLeft { from { -webkit-transform: translateX(-100%); transform: translateX(-100%); } } @keyframes slideFromLeft { from { -webkit-transform: translateX(-100%); transform: translateX(-100%); } } @-webkit-keyframes slideToLeft { to { -webkit-transform: translateX(-100%); transform: translateX(-100%); } } @keyframes slideToLeft { to { -webkit-transform: translateX(-100%); transform: translateX(-100%); } } @-webkit-keyframes scaleUpFromBehind { from { opacity: 0; -webkit-transform: scale(0.5); transform: scale(0.5); } } @keyframes scaleUpFromBehind { from { opacity: 0; -webkit-transform: scale(0.5); transform: scale(0.5); } } @-webkit-keyframes scaleUpToFront { to { opacity: 0; -webkit-transform: scale(1.3); transform: scale(1.3); } } @keyframes scaleUpToFront { to { opacity: 0; -webkit-transform: scale(1.3); transform: scale(1.3); } } @-webkit-keyframes scaleDownToBehind { to { opacity: 0; -webkit-transform: scale(0.5); transform: scale(0.5); } } @keyframes scaleDownToBehind { to { opacity: 0; -webkit-transform: scale(0.5); transform: scale(0.5); } } @-webkit-keyframes scaleDownFromFront { from { opacity: 0; -webkit-transform: scale(1.3); transform: scale(1.3); } to { opacity: 1; } } @keyframes scaleDownFromFront { from { opacity: 0; -webkit-transform: scale(1.3); transform: scale(1.3); } to { opacity: 1; } } @-webkit-keyframes scaleDownSlideToLeft { 25% { opacity: 0.5; -webkit-transform: translateZ(-500px); transform: translateZ(-500px); } 75% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateX(-200%); transform: translateZ(-500px) translateX(-200%); } 100% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateX(-200%); transform: translateZ(-500px) translateX(-200%); } } @keyframes scaleDownSlideToLeft { 25% { opacity: 0.5; -webkit-transform: translateZ(-500px); transform: translateZ(-500px); } 75% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateX(-200%); transform: translateZ(-500px) translateX(-200%); } 100% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateX(-200%); transform: translateZ(-500px) translateX(-200%); } } @-webkit-keyframes scaleDownSlideFromRight { 0%, 25% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateX(200%); transform: translateZ(-500px) translateX(200%); } 75% { opacity: 0.5; -webkit-transform: translateZ(-500px); transform: translateZ(-500px); } 100% { opacity: 1; -webkit-transform: translateZ(0) translateX(0); transform: translateZ(0) translateX(0); } } @keyframes scaleDownSlideFromRight { 0%, 25% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateX(200%); transform: translateZ(-500px) translateX(200%); } 75% { opacity: 0.5; -webkit-transform: translateZ(-500px); transform: translateZ(-500px); } 100% { opacity: 1; -webkit-transform: translateZ(0) translateX(0); transform: translateZ(0) translateX(0); } } @-webkit-keyframes scaleDownSlideFromLeft { 0%, 25% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateX(-200%); transform: translateZ(-500px) translateX(-200%); } 75% { opacity: 0.5; -webkit-transform: translateZ(-500px); transform: translateZ(-500px); } 100% { opacity: 1; -webkit-transform: translateZ(0) translateX(0%); transform: translateZ(0) translateX(0%); } } @keyframes scaleDownSlideFromLeft { 0%, 25% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateX(-200%); transform: translateZ(-500px) translateX(-200%); } 75% { opacity: 0.5; -webkit-transform: translateZ(-500px); transform: translateZ(-500px); } 100% { opacity: 1; -webkit-transform: translateZ(0) translateX(0%); transform: translateZ(0) translateX(0%); } } @-webkit-keyframes scaleDownSlideToRight { 25% { opacity: 0.5; -webkit-transform: translateZ(-500px); transform: translateZ(-500px); } 75% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateX(200%); transform: translateZ(-500px) translateX(200%); } 100% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateX(200%); transform: translateZ(-500px) translateX(200%); } } @keyframes scaleDownSlideToRight { 25% { opacity: 0.5; -webkit-transform: translateZ(-500px); transform: translateZ(-500px); } 75% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateX(200%); transform: translateZ(-500px) translateX(200%); } 100% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateX(200%); transform: translateZ(-500px) translateX(200%); } } @-webkit-keyframes scaleDownSlideFromTop { 0%, 25% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateY(-200%); transform: translateZ(-500px) translateY(-200%); } 75% { opacity: 0.5; -webkit-transform: translateZ(-500px); transform: translateZ(-500px); } 100% { opacity: 1; -webkit-transform: translateZ(0) translateY(0%); transform: translateZ(0) translateY(0%); } } @keyframes scaleDownSlideFromTop { 0%, 25% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateY(-200%); transform: translateZ(-500px) translateY(-200%); } 75% { opacity: 0.5; -webkit-transform: translateZ(-500px); transform: translateZ(-500px); } 100% { opacity: 1; -webkit-transform: translateZ(0) translateY(0%); transform: translateZ(0) translateY(0%); } } @-webkit-keyframes scaleDownSlideToBottom { 25% { opacity: 0.5; -webkit-transform: translateZ(-500px); transform: translateZ(-500px); } 75% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateY(200%); transform: translateZ(-500px) translateY(200%); } 100% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateY(200%); transform: translateZ(-500px) translateY(200%); } } @keyframes scaleDownSlideToBottom { 25% { opacity: 0.5; -webkit-transform: translateZ(-500px); transform: translateZ(-500px); } 75% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateY(200%); transform: translateZ(-500px) translateY(200%); } 100% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateY(200%); transform: translateZ(-500px) translateY(200%); } } @-webkit-keyframes scaleDownSlideFromBottom { 0%, 25% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateY(200%); transform: translateZ(-500px) translateY(200%); } 75% { opacity: 0.5; -webkit-transform: translateZ(-500px); transform: translateZ(-500px); } 100% { opacity: 1; -webkit-transform: translateZ(0) translateY(0%); transform: translateZ(0) translateY(0%); } } @keyframes scaleDownSlideFromBottom { 0%, 25% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateY(200%); transform: translateZ(-500px) translateY(200%); } 75% { opacity: 0.5; -webkit-transform: translateZ(-500px); transform: translateZ(-500px); } 100% { opacity: 1; -webkit-transform: translateZ(0) translateY(0%); transform: translateZ(0) translateY(0%); } } @-webkit-keyframes scaleDownSlideToTop { 25% { opacity: 0.5; -webkit-transform: translateZ(-500px); transform: translateZ(-500px); } 75% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateY(-200%); transform: translateZ(-500px) translateY(-200%); } 100% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateY(-200%); transform: translateZ(-500px) translateY(-200%); } } @keyframes scaleDownSlideToTop { 25% { opacity: 0.5; -webkit-transform: translateZ(-500px); transform: translateZ(-500px); } 75% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateY(-200%); transform: translateZ(-500px) translateY(-200%); } 100% { opacity: 0.5; -webkit-transform: translateZ(-500px) translateY(-200%); transform: translateZ(-500px) translateY(-200%); } } @-webkit-keyframes rotateToBehind { to { opacity: 0; -webkit-transform: translateZ(-500px) rotateY(90deg); transform: translateZ(-500px) rotateY(90deg); } } @keyframes rotateToBehind { to { opacity: 0; -webkit-transform: translateZ(-500px) rotateY(90deg); transform: translateZ(-500px) rotateY(90deg); } } @-webkit-keyframes rotateToFront { from { opacity: 0; -webkit-transform: translateZ(-500px) rotateY(-90deg); transform: translateZ(-500px) rotateY(-90deg); } } @keyframes rotateToFront { from { opacity: 0; -webkit-transform: translateZ(-500px) rotateY(-90deg); transform: translateZ(-500px) rotateY(-90deg); } } @-webkit-keyframes flipToRight { to { -webkit-transform: rotateY(180deg); transform: rotateY(180deg); } } @keyframes flipToRight { to { -webkit-transform: rotateY(180deg); transform: rotateY(180deg); } } @-webkit-keyframes flipToRightBack { from { -webkit-transform: rotateY(-180deg); transform: rotateY(-180deg); } } @keyframes flipToRightBack { from { -webkit-transform: rotateY(-180deg); transform: rotateY(-180deg); } } @-webkit-keyframes flipToLeft { to { -webkit-transform: rotateY(-180deg); transform: rotateY(-180deg); } } @keyframes flipToLeft { to { -webkit-transform: rotateY(-180deg); transform: rotateY(-180deg); } } @-webkit-keyframes flipToLeftBack { from { -webkit-transform: rotateY(180deg); transform: rotateY(180deg); } } @keyframes flipToLeftBack { from { -webkit-transform: rotateY(180deg); transform: rotateY(180deg); } } @-webkit-keyframes flipToTop { to { -webkit-transform: rotateX(180deg); transform: rotateX(180deg); } } @keyframes flipToTop { to { -webkit-transform: rotateX(180deg); transform: rotateX(180deg); } } @-webkit-keyframes flipToTopBack { from { -webkit-transform: rotateX(-180deg); transform: rotateX(-180deg); } } @keyframes flipToTopBack { from { -webkit-transform: rotateX(-180deg); transform: rotateX(-180deg); } } @-webkit-keyframes flipToBottom { to { -webkit-transform: rotateX(-180deg); transform: rotateX(-180deg); } } @keyframes flipToBottom { to { -webkit-transform: rotateX(-180deg); transform: rotateX(-180deg); } } @-webkit-keyframes flipToBottomBack { from { -webkit-transform: rotateX(180deg); transform: rotateX(180deg); } } @keyframes flipToBottomBack { from { -webkit-transform: rotateX(180deg); transform: rotateX(180deg); } } .page-on-top, [data-effeckt-page].scale-up-to-front.effeckt-page-animating, [data-effeckt-page].scale-down-from-front.effeckt-page-animating { z-index: 999; } .animation-delay-100 { -webkit-animation-delay: 0.1s; animation-delay: 0.1s; } .animation-delay-200 { -webkit-animation-delay: 0.2s; animation-delay: 0.2s; } .animation-delay-300, [data-effeckt-page].scale-up-from-behind { -webkit-animation-delay: 0.3s; animation-delay: 0.3s; } .animation-delay-500 { -webkit-animation-delay: 0.5s; animation-delay: 0.5s; } .animation-delay-700 { -webkit-animation-delay: 0.7s; animation-delay: 0.7s; } .animation-delay-1000 { -webkit-animation-delay: 1000s; animation-delay: 1000s; } ================================================ FILE: css/modules/positional-modals.css ================================================ .effeckt-positional-modal-wrap { position: absolute; z-index: 10; display: none; } .effeckt-positional-modal-wrap.effeckt-front { z-index: 20; } .effeckt-positional-modal-wrap[data-effeckt-position="above"] { margin-top: -15px; } .effeckt-positional-modal-wrap[data-effeckt-position="above"] .effeckt-modal:before { content: ""; position: absolute; top: 100%; left: 50%; width: 0; height: 0; margin-left: -10px; border-top: 10px solid #ccc; border-right: 10px solid transparent; border-left: 10px solid transparent; } .effeckt-positional-modal-wrap[data-effeckt-position="below"] { margin-top: 15px; } .effeckt-positional-modal-wrap[data-effeckt-position="below"] .effeckt-modal:before { content: ""; position: absolute; bottom: 100%; left: 50%; width: 0; height: 0; margin-left: -10px; border-bottom: 10px solid #ccc; border-right: 10px solid transparent; border-left: 10px solid transparent; } .effeckt-positional-modal-wrap[data-effeckt-position="right"] { margin-left: 15px; } .effeckt-positional-modal-wrap[data-effeckt-position="right"] .effeckt-modal:before { content: ""; position: absolute; top: 50%; right: 100%; width: 0; height: 0; margin-top: -10px; border-top: 10px solid transparent; border-bottom: 10px solid transparent; border-right: 10px solid #ccc; } .effeckt-positional-modal-wrap[data-effeckt-position="left"] { margin-left: -15px; } .effeckt-positional-modal-wrap[data-effeckt-position="left"] .effeckt-modal:before { content: ""; position: absolute; top: 50%; left: 100%; width: 0; height: 0; margin-top: -10px; border-top: 10px solid transparent; border-bottom: 10px solid transparent; border-left: 10px solid #ccc; } ================================================ FILE: css/modules/tabs.css ================================================ .effeckt-tabs-wrap { position: relative; } .effeckt-tabs-wrap ul.effeckt-tabs { overflow: hidden; } .effeckt-tabs-wrap .effeckt-tabs-container { position: relative; transition: all 500ms ease-in-out; } .effeckt-tabs-wrap .effeckt-tabs-container .effeckt-tab-content { position: absolute; transition: all 250ms ease-in-out; } .effeckt-tabs-wrap[data-effeckt-type='scale'] .effeckt-tab-content.effeckt-hide { -webkit-transform: scale(0.9); -ms-transform: scale(0.9); transform: scale(0.9); opacity: 0; } .effeckt-tabs-wrap[data-effeckt-type='scale'] .effeckt-tab-content.effeckt-show { -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1); transition-delay: 0.3s; opacity: 1; } .effeckt-tabs-wrap[data-effeckt-type='scale-up'] .effeckt-tab-content.effeckt-hide { -webkit-transform: scale(1.1); -ms-transform: scale(1.1); transform: scale(1.1); opacity: 0; } .effeckt-tabs-wrap[data-effeckt-type='scale-up'] .effeckt-tab-content.effeckt-show { -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1); transition-delay: 0.3s; opacity: 1; } .effeckt-tabs-wrap[data-effeckt-type='slide-left'] .effeckt-tabs-container { overflow: hidden; } .effeckt-tabs-wrap[data-effeckt-type='slide-left'] .effeckt-tabs-container .effeckt-tab-content.effeckt-hide { -webkit-transform: translateX(-100%); -ms-transform: translateX(-100%); transform: translateX(-100%); opacity: 0; } .effeckt-tabs-wrap[data-effeckt-type='slide-left'] .effeckt-tabs-container .effeckt-tab-content.effeckt-show { -webkit-transform: translateX(0%); -ms-transform: translateX(0%); transform: translateX(0%); transition-delay: 0.3s; opacity: 1; } .effeckt-tabs-wrap[data-effeckt-type='slide-right'] .effeckt-tabs-container { overflow: hidden; } .effeckt-tabs-wrap[data-effeckt-type='slide-right'] .effeckt-tabs-container .effeckt-tab-content.effeckt-hide { -webkit-transform: translateX(100%); -ms-transform: translateX(100%); transform: translateX(100%); opacity: 0; } .effeckt-tabs-wrap[data-effeckt-type='slide-right'] .effeckt-tabs-container .effeckt-tab-content.effeckt-show { -webkit-transform: translateX(0%); -ms-transform: translateX(0%); transform: translateX(0%); transition-delay: 0.3s; opacity: 1; } .effeckt-tabs-wrap[data-effeckt-type='slide-up'] .effeckt-tabs-container { overflow: hidden; } .effeckt-tabs-wrap[data-effeckt-type='slide-up'] .effeckt-tabs-container .effeckt-tab-content.effeckt-hide { -webkit-transform: translateY(-100%); -ms-transform: translateY(-100%); transform: translateY(-100%); opacity: 0; } .effeckt-tabs-wrap[data-effeckt-type='slide-up'] .effeckt-tabs-container .effeckt-tab-content.effeckt-show { -webkit-transform: translateY(0%); -ms-transform: translateY(0%); transform: translateY(0%); transition-delay: 0.3s; opacity: 1; } .effeckt-tabs-wrap[data-effeckt-type='slide-down'] .effeckt-tabs-container { overflow: hidden; } .effeckt-tabs-wrap[data-effeckt-type='slide-down'] .effeckt-tabs-container .effeckt-tab-content.effeckt-hide { -webkit-transform: translateY(100%); -ms-transform: translateY(100%); transform: translateY(100%); opacity: 0; } .effeckt-tabs-wrap[data-effeckt-type='slide-down'] .effeckt-tabs-container .effeckt-tab-content.effeckt-show { -webkit-transform: translateX(0%); -ms-transform: translateX(0%); transform: translateX(0%); transition-delay: 0.3s; opacity: 1; } .effeckt-tabs-wrap[data-effeckt-type='flip'] .effeckt-tabs-container { overflow: hidden; } .effeckt-tabs-wrap[data-effeckt-type='flip'] .effeckt-tabs-container .effeckt-tab-content.effeckt-hide { -webkit-transform: rotateY(-90deg) scale(1.1); transform: rotateY(-90deg) scale(1.1); opacity: 0; } .effeckt-tabs-wrap[data-effeckt-type='flip'] .effeckt-tabs-container .effeckt-tab-content.effeckt-show { -webkit-transform: rotateY(0deg) scale(1); transform: rotateY(0deg) scale(1); transition-delay: 0.3s; opacity: 1; } ================================================ FILE: css/modules/tooltips.css ================================================ .effeckt-tooltip[data-effeckt-tooltip-text] { position: relative; display: inline-block; } .effeckt-tooltip[data-effeckt-tooltip-text]::before, .effeckt-tooltip[data-effeckt-tooltip-text]::after { opacity: 0; transition: 0.2s; } .effeckt-tooltip[data-effeckt-tooltip-text]:hover::before, .effeckt-tooltip[data-effeckt-tooltip-text]:hover::after { visibility: visible; opacity: 1; transition: 0.2s 0.3s; } .effeckt-tooltip[data-effeckt-type="bubble"]::after { content: attr(data-effeckt-tooltip-text); position: absolute; border-radius: 10px; background: black; color: white; padding: 0.45rem 0.8rem; font-size: 90%; white-space: nowrap; visibility: hidden; z-index: 2; } .effeckt-tooltip[data-effeckt-type="bubble"]::before { content: ""; width: 0; height: 0; position: absolute; } .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="top"]::after, .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="bottom"]::after { -webkit-transform: translateX(-50%); -ms-transform: translateX(-50%); transform: translateX(-50%); left: 50%; } .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="top"]:before, .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="bottom"]:before { left: 50%; margin-left: -5px; } .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="top"]::after, .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="top"]::before { bottom: 125%; } .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="top"]::before { border-top: 5px solid black; border-left: 5px solid transparent; border-right: 5px solid transparent; margin-bottom: -4px; } .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="top"]:hover::before, .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="top"]:hover::after { bottom: 115%; } .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="bottom"]::after, .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="bottom"]::before { top: 125%; } .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="bottom"]::before { border-bottom: 5px solid black; border-left: 5px solid transparent; border-right: 5px solid transparent; margin-top: -4px; } .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="bottom"]:hover::before, .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="bottom"]:hover::after { top: 115%; } .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="right"]::after, .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="right"]:before, .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="left"]::after, .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="left"]:before { top: 45%; -webkit-transform: translateY(-45%); -ms-transform: translateY(-45%); transform: translateY(-45%); margin-top: 2px; } .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="right"]::after, .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="right"]::before { left: 115%; } .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="right"]::before { border-right: 5px solid black; border-top: 5px solid transparent; border-bottom: 5px solid transparent; margin-left: -4px; } .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="right"]:hover::before, .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="right"]:hover::after { left: 105%; } .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="left"]::after, .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="left"]::before { right: 115%; } .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="left"]::before { border-left: 5px solid black; border-top: 5px solid transparent; border-bottom: 5px solid transparent; margin-right: -4px; } .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="left"]:hover::before, .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="left"]:hover::after { right: 105%; } ================================================ FILE: js/core.js ================================================ ;(function(window){ var // Is Modernizr defined on the global scope Modernizr = typeof Modernizr !== "undefined" ? Modernizr : false, // Always expect both kinds of event buttonPressedEvent = 'touchstart click', // List of all animation/transition properties // with its animationEnd/transitionEnd event animationEndEventNames = { 'WebkitAnimation' : 'webkitAnimationEnd', 'OAnimation' : 'oAnimationEnd', 'msAnimation' : 'MSAnimationEnd', 'animation' : 'animationend' }, transitionEndEventNames = { 'WebkitTransition' : 'webkitTransitionEnd', 'OTransition' : 'oTransitionEnd', 'msTransition' : 'MSTransitionEnd', 'transition' : 'transitionend' }, Effeckt = function() { this.init(); }; // Current version. Effeckt.version = '0.0.1'; // Initialization method Effeckt.prototype.init = function() { this.buttonPressedEvent = buttonPressedEvent; //event trigger after animation/transition end. this.transitionEndEventName = Modernizr ? transitionEndEventNames[Modernizr.prefixed('transition')] : getTransitionEndEventNames(); this.animationEndEventName = Modernizr ? animationEndEventNames[Modernizr.prefixed('animation')] : getAnimationEndEventNames(); this.transitionAnimationEndEvent = this.animationEndEventName + ' ' + this.transitionEndEventName; }; Effeckt.prototype.getViewportHeight = function() { var docElement = document.documentElement, client = docElement['clientHeight'], inner = window['innerHeight']; if( client < inner ) return inner; else return client; }; // Get all the properties for transition/animation end function getTransitionEndEventNames() { return _getEndEventNames( transitionEndEventNames ); } function getAnimationEndEventNames() { return _getEndEventNames( animationEndEventNames ); } function _getEndEventNames(obj) { var events = []; for ( var eventName in obj ) { events.push( obj[ eventName ] ); } return events.join(' '); } // Creates a Effeckt object. window.Effeckt = new Effeckt(); })(this); ================================================ FILE: js/demo/demo.js ================================================ var EffecktDemos = { contribURL: 'https://api.github.com/repos/h5bp/Effeckt.css/contributors?callback=?', init: function() { $(window).load(function() { $(".no-transitions").removeClass("no-transitions"); }); stroll.bind('.effeckt-demo-list-scroll ul'); this.getContributorsData(); }, getContributorsData: function() { var self = this; $.ajax({ type: 'GET', url: this.contribURL, async: false, contentType: "application/json", dataType: 'jsonp', success: function(data){ self.listContributors(data.data); }, error: function(e) { console.log(e.message); } }); }, listContributors: function(data) { var html = ''; $(data).each(function(i, user){ html += '
  • '+ user.login +'
  • '; }); $(html).appendTo('#contributors-list'); } } EffecktDemos.init(); ================================================ FILE: js/demo/lazy-loading.js ================================================ // This is on Demo to reminds you all that most of this are demo interactions // For me the only thing here that is necessary for animation is perspective // because it's change according to the scroll var EffecktLazyLoading = { init: function() { var self = this; this.bindUIActions(); this.elements = $('.effeckt-lazy-loading-element'); this.wrapper = $('.effeckt-lazy-loading'); this.needsPerspective = this.wrapper.data('effeckt-needs-perspective')?true:false; this.viewportHeight = this.getViewportHeight(); this.elements.each( function( i, el ) { if ( self.isElementVisible( el ) ) { $(el).addClass('shown'); } }); }, bindUIActions: function() { var self = this; $('.effeckt-page-active').on( 'scroll', function(){ self._onScrollMethod(); }); $(window).on( 'resize', function() { self.viewportHeight = self.getViewportHeight(); }); $('.effeckt-lazy-loading-options input[type=radio]').on( 'click', function(){ self.wrapper.attr('data-effeckt-type', $(this).val()); }); }, _scrollPage: function() { var self = this; this.didScroll = false; if ( self.needsPerspective ) { // This only work with page transition var perspectiveY = $('.effeckt-page-active').scrollTop() + self.viewportHeight / 2; $('.effeckt-lazy-loading').css(Modernizr.prefixed('perspectiveOrigin'), '50% ' + perspectiveY + 'px'); } this.elements.each( function( i, el ) { if( !$(el).hasClass( 'shown' ) && !$(el).hasClass( 'animating' ) && self.isElementVisible( el ) ) { $(el).on( Effeckt.transitionAnimationEndEvent, function() { $(el).off( Effeckt.transitionAnimationEndEvent ); $(el).removeClass( 'animating' ); }); $(el).addClass( 'shown animating' ); } }); }, isElementVisible: function( el ) { var elHeight = el.offsetHeight, // This only work with page transition scrolled = $('.effeckt-page-active').scrollTop(), viewed = scrolled + this.viewportHeight, elTop = $(el).offset().top, elBottom = elTop + elHeight, // if 0, the element is considered in the viewport as soon as it enters. // if 1, the element is considered in the viewport only when it's fully inside // value in percentage (1 >= h >= 0) h = 0.75; return (elTop + (elHeight * h) + scrolled) <= viewed; }, getViewportHeight: function() { var docElement = document.documentElement, client = docElement['clientHeight'], inner = window['innerHeight']; if( client < inner ) return inner; else return client; }, _onScrollMethod : function() { var self = this; if( !this.didScroll ) { this.didScroll = true; setTimeout(function(){ self._scrollPage(); }, 1000 / 60); } }, }; EffecktLazyLoading.init(); ================================================ FILE: js/modules/_template.js ================================================ var Effeckt = { init: function() { this.bindUIActions(); }, bindUIActions: function() { // event handlers }, specificAction: function() { } }; Effeckt.init(); ================================================ FILE: js/modules/buttons.js ================================================ var EffecktButtons = { init: function() { this.bindUIActions(); }, bindUIActions: function() { var self = this; $('.effeckt-button').on( Effeckt.buttonPressedEvent, function(){ self.showLoader(this); }); }, showLoader: function(el) { var button = $(el), resetTimeout; if(button.attr( 'data-loading' )){ button.removeAttr( 'data-loading' ); } else { button.attr( 'data-loading', true ); } clearTimeout( resetTimeout ); resetTimeout = setTimeout( function() { button.removeAttr( 'data-loading' ); }, 2000 ); } }; EffecktButtons.init(); ================================================ FILE: js/modules/captions.js ================================================ /*! * captions.js * * author: Effeckt.css * * Licensed under the MIT license */ var effecktCaptions = { init: function() { this.bindUIActions(); }, bindUIActions: function() { var self = this; //keep a reference to this (Captions) object. $('[data-effeckt-type]').on(Effeckt.buttonPressedEvent, function(event) { self.activateCaptions(this); event.preventDefault(); }); }, activateCaptions: function(el) { var activeClass = 'active'; if (document.documentElement.classList) { el.classList.toggle(activeClass); } else { var $caption = $(el); $caption.toggleClass(activeClass); } } }; effecktCaptions.init(); ================================================ FILE: js/modules/list-items.js ================================================ var EffecktListItems = { init: function() { this.bindUIActions(); }, bindUIActions: function() { var self = this; $(".effeckt-list-wrap button.add").on( Effeckt.buttonPressedEvent, function() { self.addListItem(this); }); $(".effeckt-list-wrap button.remove").on( Effeckt.buttonPressedEvent, function() { self.removeListItem(this); }); $("button.remove").hide(); }, addListItem: function(el) { var insertPoint = $(el).parent().find("li:nth-child(3)"); $(el).parent().find("button.remove").show(); $("
  • ", { 'text': "new item", 'class': "new-item" }).insertAfter(insertPoint); }, removeListItem: function(el) { var $parent = $(el).parent(), self = this; var elToRemove = $parent.find("li.new-item").last(); elToRemove.on( Effeckt.transitionAnimationEndEvent, function () { elToRemove.off( Effeckt.transitionAnimationEndEvent ); elToRemove.remove(); }); elToRemove.toggleClass("remove-item new-item"); if (!$parent.find("li.new-item").length) { $parent.find("button.remove").hide(); } } }; EffecktListItems.init(); ================================================ FILE: js/modules/list-scroll.js ================================================ /*! * stroll.js 1.2 - CSS scroll effects * http://lab.hakim.se/scroll-effects * MIT licensed * * Modified to use Modernizer * * Copyright (C) 2012 Hakim El Hattab, http://hakim.se */ (function(){ "use strict"; // When a list is configured as 'live', this is how frequently // the DOM will be polled for changes var LIVE_INTERVAL = 500; var IS_TOUCH_DEVICE = Modernizr.touch; // All of the lists that are currently bound var lists = []; // Set to true when there are lists to refresh var active = false; /** * Updates all currently bound lists. */ function refresh() { if( active ) { requestAnimFrame( refresh ); for( var i = 0, len = lists.length; i < len; i++ ) { lists[i].update(); } } } /** * Starts monitoring a list and applies classes to each of * its contained elements based on its position relative to * the list's viewport. * * @param {HTMLElement} element * @param {Object} options Additional arguments; * - live; Flags if the DOM should be repeatedly checked for changes * repeatedly. Useful if the list contents is changing. Use * scarcely as it has an impact on performance. */ function add( element, options ) { // Only allow ul/ol if( !element.nodeName || /^(ul|li)$/i.test( element.nodeName ) === false ) { return false; } // Delete duplicates (but continue and re-bind this list to get the // latest properties and list items) else if( contains( element ) ) { remove( element ); } var list = IS_TOUCH_DEVICE ? new TouchList( element ) : new List( element ); // Handle options if( options && options.live ) { list.syncInterval = setInterval( function() { list.sync.call( list ); }, LIVE_INTERVAL ); } // Synchronize the list with the DOM list.sync(); // Add this element to the collection lists.push( list ); // Start refreshing if this was the first list to be added if( lists.length === 1 ) { active = true; refresh(); } } /** * Stops monitoring a list element and removes any classes * that were applied to its list items. * * @param {HTMLElement} element */ function remove( element ) { for( var i = 0; i < lists.length; i++ ) { var list = lists[i]; if( list.element == element ) { list.destroy(); lists.splice( i, 1 ); i--; } } // Stopped refreshing if the last list was removed if( lists.length === 0 ) { active = false; } } /** * Checks if the specified element has already been bound. */ function contains( element ) { for( var i = 0, len = lists.length; i < len; i++ ) { if( lists[i].element == element ) { return true; } } return false; } /** * Calls 'method' for each DOM element discovered in * 'target'. * * @param target String selector / array of UL elements / * jQuery object / single UL element * @param method A function to call for each element target */ function batch( target, method, options ) { var i, len; // Selector if( typeof target === 'string' ) { var targets = document.querySelectorAll( target ); for( i = 0, len = targets.length; i < len; i++ ) { method.call( null, targets[i], options ); } } // Array (jQuery) else if( typeof target === 'object' && typeof target.length === 'number' ) { for( i = 0, len = target.length; i < len; i++ ) { method.call( null, target[i], options ); } } // Single element else if( target.nodeName ) { method.call( null, target, options ); } else { throw 'Stroll target was of unexpected type.'; } } /** * Checks if the client is capable of running the library. */ function isCapable() { return !!document.body.classList; } /** * The basic type of list; applies past & future classes to * list items based on scroll state. */ function List( element ) { this.element = element; } /** * Fetches the latest properties from the DOM to ensure that * this list is in sync with its contents. */ List.prototype.sync = function() { this.items = Array.prototype.slice.apply( this.element.children ); // Caching some heights so we don't need to go back to the DOM so much this.listHeight = this.element.offsetHeight; // One loop to get the offsets from the DOM for( var i = 0, len = this.items.length; i < len; i++ ) { var item = this.items[i]; item._offsetHeight = item.offsetHeight; item._offsetTop = item.offsetTop; item._offsetBottom = item._offsetTop + item._offsetHeight; item._state = ''; } // Force an update this.update( true ); } /** * Apply past/future classes to list items outside of the viewport */ List.prototype.update = function( force ) { var scrollTop = this.element.pageYOffset || this.element.scrollTop, scrollBottom = scrollTop + this.listHeight; // Quit if nothing changed if( scrollTop !== this.lastTop || force ) { this.lastTop = scrollTop; // One loop to make our changes to the DOM for( var i = 0, len = this.items.length; i < len; i++ ) { var item = this.items[i]; // Above list viewport if( item._offsetBottom < scrollTop ) { // Exclusion via string matching improves performance if( item._state !== 'past' ) { item._state = 'past'; item.classList.add( 'past' ); item.classList.remove( 'future' ); } } // Below list viewport else if( item._offsetTop > scrollBottom ) { // Exclusion via string matching improves performance if( item._state !== 'future' ) { item._state = 'future'; item.classList.add( 'future' ); item.classList.remove( 'past' ); } } // Inside of list viewport else if( item._state ) { if( item._state === 'past' ) item.classList.remove( 'past' ); if( item._state === 'future' ) item.classList.remove( 'future' ); item._state = ''; } } } } /** * Cleans up after this list and disposes of it. */ List.prototype.destroy = function() { clearInterval( this.syncInterval ); for( var j = 0, len = this.items.length; j < len; j++ ) { var item = this.items[j]; item.classList.remove( 'past' ); item.classList.remove( 'future' ); } } /** * A list specifically for touch devices. Simulates the style * of scrolling you'd see on a touch device but does not rely * on webkit-overflow-scrolling since that makes it impossible * to read the up-to-date scroll position. */ function TouchList( element ) { this.element = element; this.element.style.overflow = 'hidden'; this.top = { value: 0, natural: 0 }; this.touch = { value: 0, offset: 0, start: 0, previous: 0, lastMove: Date.now(), accellerateTimeout: -1, isAccellerating: false, isActive: false }; this.velocity = 0; } TouchList.prototype = new List(); /** * Fetches the latest properties from the DOM to ensure that * this list is in sync with its contents. This is typically * only used once (per list) at initialization. */ TouchList.prototype.sync = function() { this.items = Array.prototype.slice.apply( this.element.children ); this.listHeight = this.element.offsetHeight; var item; // One loop to get the properties we need from the DOM for( var i = 0, len = this.items.length; i < len; i++ ) { item = this.items[i]; item._offsetHeight = item.offsetHeight; item._offsetTop = item.offsetTop; item._offsetBottom = item._offsetTop + item._offsetHeight; item._state = ''; // Animating opacity is a MAJOR performance hit on mobile so we can't allow it item.style.opacity = 1; } this.top.natural = this.element.scrollTop; this.top.value = this.top.natural; this.top.max = item._offsetBottom - this.listHeight; // Force an update this.update( true ); this.bind(); } /** * Binds the events for this list. References to proxy methods * are kept for unbinding if the list is disposed of. */ TouchList.prototype.bind = function() { var scope = this; this.touchStartDelegate = function( event ) { scope.onTouchStart( event ); }; this.touchMoveDelegate = function( event ) { scope.onTouchMove( event ); }; this.touchEndDelegate = function( event ) { scope.onTouchEnd( event ); }; this.element.addEventListener( 'touchstart', this.touchStartDelegate, false ); this.element.addEventListener( 'touchmove', this.touchMoveDelegate, false ); this.element.addEventListener( 'touchend', this.touchEndDelegate, false ); } TouchList.prototype.onTouchStart = function( event ) { event.preventDefault(); if( event.touches.length === 1 ) { this.touch.isActive = true; this.touch.start = event.touches[0].clientY; this.touch.previous = this.touch.start; this.touch.value = this.touch.start; this.touch.offset = 0; if( this.velocity ) { this.touch.isAccellerating = true; var scope = this; this.touch.accellerateTimeout = setTimeout( function() { scope.touch.isAccellerating = false; scope.velocity = 0; }, 500 ); } else { this.velocity = 0; } } } TouchList.prototype.onTouchMove = function( event ) { if( event.touches.length === 1 ) { var previous = this.touch.value; this.touch.value = event.touches[0].clientY; this.touch.lastMove = Date.now(); var sameDirection = ( this.touch.value > this.touch.previous && this.velocity < 0 ) || ( this.touch.value < this.touch.previous && this.velocity > 0 ); if( this.touch.isAccellerating && sameDirection ) { clearInterval( this.touch.accellerateTimeout ); // Increase velocity significantly this.velocity += ( this.touch.previous - this.touch.value ) / 10; } else { this.velocity = 0; this.touch.isAccellerating = false; this.touch.offset = Math.round( this.touch.start - this.touch.value ); } this.touch.previous = previous; } } TouchList.prototype.onTouchEnd = function( event ) { var distanceMoved = this.touch.start - this.touch.value; if( !this.touch.isAccellerating ) { // Apply velocity based on the start position of the touch this.velocity = ( this.touch.start - this.touch.value ) / 10; } // Don't apply any velocity if the touch ended in a still state if( Date.now() - this.touch.lastMove > 200 || Math.abs( this.touch.previous - this.touch.value ) < 5 ) { this.velocity = 0; } this.top.value += this.touch.offset; // Reset the variables used to determne swipe speed this.touch.offset = 0; this.touch.start = 0; this.touch.value = 0; this.touch.isActive = false; this.touch.isAccellerating = false; clearInterval( this.touch.accellerateTimeout ); // If a swipe was captured, prevent event propagation if( Math.abs( this.velocity ) > 4 || Math.abs( distanceMoved ) > 10 ) { event.preventDefault(); } }; /** * Apply past/future classes to list items outside of the viewport */ TouchList.prototype.update = function( force ) { // Determine the desired scroll top position var scrollTop = this.top.value + this.velocity + this.touch.offset; // Only scroll the list if there's input if( this.velocity || this.touch.offset ) { // Scroll the DOM and add on the offset from touch this.element.scrollTop = scrollTop; // Keep the scroll value within bounds scrollTop = Math.max( 0, Math.min( this.element.scrollTop, this.top.max ) ); // Cache the currently set scroll top and touch offset this.top.value = scrollTop - this.touch.offset; } // If there is no active touch, decay velocity if( !this.touch.isActive || this.touch.isAccellerating ) { this.velocity *= 0.95; } // Cut off early, the last fraction of velocity doesn't have // much impact on movement if( Math.abs( this.velocity ) < 0.15 ) { this.velocity = 0; } // Only proceed if the scroll position has changed if( scrollTop !== this.top.natural || force ) { this.top.natural = scrollTop; this.top.value = scrollTop - this.touch.offset; var scrollBottom = scrollTop + this.listHeight; // One loop to make our changes to the DOM for( var i = 0, len = this.items.length; i < len; i++ ) { var item = this.items[i]; // Above list viewport if( item._offsetBottom < scrollTop ) { // Exclusion via string matching improves performance if( this.velocity <= 0 && item._state !== 'past' ) { item.classList.add( 'past' ); item._state = 'past'; } } // Below list viewport else if( item._offsetTop > scrollBottom ) { // Exclusion via string matching improves performance if( this.velocity >= 0 && item._state !== 'future' ) { item.classList.add( 'future' ); item._state = 'future'; } } // Inside of list viewport else if( item._state ) { if( item._state === 'past' ) item.classList.remove( 'past' ); if( item._state === 'future' ) item.classList.remove( 'future' ); item._state = ''; } } } }; /** * Cleans up after this list and disposes of it. */ TouchList.prototype.destroy = function() { List.prototype.destroy.apply( this ); this.element.removeEventListener( 'touchstart', this.touchStartDelegate, false ); this.element.removeEventListener( 'touchmove', this.touchMoveDelegate, false ); this.element.removeEventListener( 'touchend', this.touchEndDelegate, false ); } /** * Public API */ window.stroll = { /** * Binds one or more lists for scroll effects. * * @see #add() */ bind: function( target, options ) { if( isCapable() ) { batch( target, add, options ); } }, /** * Unbinds one or more lists from scroll effects. * * @see #remove() */ unbind: function( target ) { if( isCapable() ) { batch( target, remove ); } } } window.requestAnimFrame = (function(){ return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function( callback ){ window.setTimeout(callback, 1000 / 60); }; })() })(); ================================================ FILE: js/modules/modal.js ================================================ /** * modalEffects.js v1.1.0 * http://www.codrops.com * * Rewritten for effeckts project * * Licensed under the MIT license. * http://www.opensource.org/licenses/mit-license.php * * Copyright 2013, Codrops * http://www.codrops.com */ ;(function(window){ var Effeckt = window.Effeckt; var EffecktModal = function() { if ( !(this instanceof EffecktModal) ) { return new EffecktModal(); } this.init(); }; EffecktModal.version = '0.0.1'; EffecktModal.prototype.init = function() { this.$body = $('body'); this.$element = null; this.$overlay = null; this.isShown = false; this.hasPerspective = false; this.modalEffeckt = ''; this.modalEffecktOut = ''; this.modalEffecktProvided = true; //it's suppose to be provided this.bindUIActions(); }; EffecktModal.prototype.bindUIActions = function() { $(document).on( Effeckt.buttonPressedEvent, '.effeckt-modal-button', $.proxy(this.open, this) ); $(document).on( Effeckt.buttonPressedEvent, '.effeckt-modal-close, [data-effeckt-dismiss="modal"]', $.proxy(this.close, this) ); var self = this; $(window).on( 'keyup', function( e ) { if ( e.keyCode === 27 ) self.close(e); }); }; EffecktModal.prototype.open = function( e ) { e.preventDefault(); if ( this.isShown ) { return; } var $button = $(e.target); var target = $button.data('effeckt-target'); this.$element = $(target || '#effeckt-modal-wrap'); if ( !this.$element.length ) return; // Modal Effeckt-Type this.modalEffeckt = $button.data( 'effeckt-type' ); this.modalEffecktOut = $button.data( 'effeckt-out-type' ); if ( $button.data( 'effeckt-needs-perspective' ) ) { this.$body.addClass( 'effeckt-perspective' ); this.hasPerspective = true; } // check if the effeckt class is already added if ( this.$element.hasClass( this.modalEffeckt ) || this.modalEffeckt === undefined ) { this.showModal(); } else { this.modalEffecktProvided = false; this.$element.addClass( this.modalEffeckt ); this.$element.on( Effeckt.transitionAnimationEndEvent, $.proxy(function() { this.$element.off( Effeckt.transitionAnimationEndEvent ); this.showModal(); }, this)); } }; EffecktModal.prototype.close = function( e ) { e.preventDefault(); if ( !this.isShown ) { return; } this.$element.on( Effeckt.transitionAnimationEndEvent, $.proxy(function () { this.$element.off( Effeckt.transitionAnimationEndEvent ); this.hideModal(); }, this)); this.$element.removeClass( 'effeckt-show' ); this.isShown = false; if ( this.modalEffecktOut ) { this.$element.addClass( this.modalEffecktOut ); } }; EffecktModal.prototype.showModal = function() { this.addOverlay(); this.$element.addClass( 'effeckt-show' ); this.isShown = true; }; EffecktModal.prototype.hideModal = function() { // Only remove effeckt-hide class if it's any if ( this.modalEffecktOut ){ this.$element.removeClass( this.modalEffecktOut ); this.modalEffecktOut = ''; } if ( this.hasPerspective ) { this.$body.removeClass( 'effeckt-perspective' ); this.hasPerspective = false; } this.removeOverlay(); this.$element.removeClass( this.modalEffeckt ); this.modalEffeckt = ''; } EffecktModal.prototype.addOverlay = function() { // just for fun var atts = []; atts.push('class="effeckt-overlay effeckt-modal-overlay"'); atts.push('id="effeckt-modal-overlay"'); atts.push('data-effeckt-dismiss="modal"') this.$overlay = $('
    ') .insertAfter( this.$element ); this.$overlay[0].offsetWidth; // force reflow }; EffecktModal.prototype.removeOverlay = function() { this.$overlay.remove(); this.$overlay = null; }; window.Effeckt.Modal = EffecktModal(); })(this); ================================================ FILE: js/modules/off-screen-nav.js ================================================ var EffecktOffScreenNav = { nav: $("#effeckt-off-screen-nav"), closeButton: $("#effeckt-off-screen-nav-close"), effeckt_type: '', threedee: false, _checkForMore: { 'effeckt-off-screen-nav-top-card-deck': { 'showMethod': '_showCardDeckTop', 'hideMethod': '_hideCardDeckTop', 'initMethod': '_initCardDeckTop', 'endMethod': '_endCardDeck' }, 'effeckt-off-screen-nav-bottom-card-deck': { 'showMethod': '_showCardDeckBottom', 'hideMethod': '_hideCardDeckBottom', 'initMethod': '_initCardDeckBottom', 'endMethod': '_endCardDeck' } }, init: function() { this.bindUIActions(); }, bindUIActions: function() { var self = this; $(".off-screen-nav-button, #effeckt-off-screen-nav-close").on( Effeckt.buttonPressedEvent, function() { self.toggleNav(this); }); }, toggleNav: function(el) { var button = $(el), self = this; this.effeckt_type = button.data("effeckt-type"); this.threedee = button.data("threedee"); // Show if (!this.nav.hasClass("effeckt-show")) { this.nav.addClass(this.effeckt_type); this.closeButton.data("effeckt-type", this.effeckt_type); if (this.threedee) { $("body").addClass("effeckt-perspective"); } if (button.data("effeckt-needs-hide-class")) { this.nav.data("effeckt-needs-hide-class", button.data("effeckt-needs-hide-class")); } this.nav.on( Effeckt.transitionAnimationEndEvent, function () { self.nav.off( Effeckt.transitionAnimationEndEvent ); self.nav.addClass("effeckt-show"); $('[data-effeckt-page].effeckt-page-active, .effeckt-overlay').on( Effeckt.buttonPressedEvent, self.toggleNav.bind(self)); }); // check if need more coding done // to make the effect works // beyond css this._checkForMoreOnShow(); // Hide } else { var self = this; this.nav.removeClass("effeckt-show"); this.nav.on( Effeckt.transitionAnimationEndEvent, function () { self.nav.off( Effeckt.transitionAnimationEndEvent ); self.hideNav(); $('[data-effeckt-page].effeckt-page-active, .effeckt-overlay').off( Effeckt.buttonPressedEvent ); }); if( this.nav.data("effeckt-needs-hide-class") ){ this.nav.addClass("effeckt-hide"); } // check if need more coding done // to make the effect works // beyond css this._checkForMoreOnHide(); } }, hideNav: function() { //var self = this; this.nav.removeClass(this.closeButton.data("effeckt-type")); this.nav.removeClass("effeckt-hide"); this.nav.removeData("effeckt-needs-hide-class"); $("body").removeClass("effeckt-perspective"); }, // Check for more thing to do using javascript // that is beyond CSS _checkForMoreOnShow: function() { // Iterate each effeckt_type declared before // which need more thing do to for ( effeckt_type in this._checkForMore ) { if ( effeckt_type !== this.effeckt_type ) { continue; } var hideMethod = this._checkForMore[effeckt_type]['hideMethod'], initMethod = this._checkForMore[effeckt_type]['initMethod']; this._callThisMethod(hideMethod); this._callThisMethod(initMethod); // Break on first match // because we are only working with only one effect at time break; } }, _checkForMoreOnHide: function() { for ( effeckt_type in this._checkForMore ) { if ( effeckt_type !== this.effeckt_type ) { continue; } var hideMethod = this._checkForMore[effeckt_type]['hideMethod'], endMethod = this._checkForMore[effeckt_type]['endMethod']; this._callThisMethod(hideMethod); this._callThisMethod(endMethod); // Break on first match // because we are only working with only one effect at time break; } }, //-------------------------------- // Methods for Card Deck From Top //-------------------------------- _initCardDeckTop: function() { var self = this; this.nav.find('h4').on( Effeckt.buttonPressedEvent, function(e){ e.preventDefault(); if ( self.nav.hasClass('shown') ) { self._hideCardDeckTop(); } else { self._showCardDeckTop(); } }); }, _hideCardDeckTop: function() { var li = this.nav.find('li'); li.removeAttr('style'); this.nav.removeClass('shown'); li.each(function(index){ $(this).css(Modernizr.prefixed('transform'), 'translateY(' + (index*2) + 'px)') .css('z-index', li.length - index) .css("width" , (100 - index/2)+'%') .css("margin-left" , index/4+'%'); }); }, _showCardDeckTop: function() { var li = this.nav.find('li'); li.removeAttr('style'); this.nav.addClass('shown'); li.each(function(index){ var height = $(this).height(); $(this).css(Modernizr.prefixed('transform'), 'translateY(' + (index+1) * height + 'px)') .css("width" , '100%'); }); }, //-------------------------------- // Methods for Card Deck From Bottom //-------------------------------- _initCardDeckBottom: function() { var self = this; this.nav.find('h4').on( Effeckt.buttonPressedEvent, function(e){ e.preventDefault(); if ( self.nav.hasClass('shown') ) { self._hideCardDeckBottom(); } else { self._showCardDeckBottom(); } }); }, _hideCardDeckBottom: function() { var li = this.nav.find('li'); li.removeAttr('style'); this.nav.removeClass('shown'); li.each(function(index){ $(this).css(Modernizr.prefixed('transform'), 'translateY(-' + (index*2) + 'px)') .css('z-index', li.length - index) .css("width" , (100 - index/2)+'%') .css("margin-left" , index/4+'%'); }); }, _showCardDeckBottom: function() { var li = this.nav.find('li'); li.removeAttr('style'); this.nav.addClass('shown'); li.each(function(index){ var height = $(this).height(); $(this).css(Modernizr.prefixed('transform'), 'translateY(-' + (index+1) * height + 'px)') .css("width" , '100%'); }); }, // Card Deck // unbind on click event // after we closed the nav _endCardDeck: function() { var li = this.nav.find('li'); li.removeAttr('style'); this.nav.find('h4').off( Effeckt.buttonPressedEvent ); }, // This check if the method exists first // before call it _callThisMethod: function(methodName){ // TODO: check if is an existing method if ( typeof methodName !== 'undefined' ) { this[methodName](); } } }; EffecktOffScreenNav.init(); ================================================ FILE: js/modules/page-transitions.js ================================================ var EffecktPageTransitions = { fromPage: '', toPage: '', isAnimating: false, isNextPageEnd: false, isCurrentPageEnd: false, transitionInEffect: '', transitionOutEffect: '', init: function() { this.initPages(); this.bindUIActions(); }, initPages: function(){ var $pages = $('[data-effeckt-page]'); this.fromPage = $pages.first().addClass('effeckt-page-active'); }, bindUIActions: function() { var self = this; $('.effeckt-page-transition-button').on( Effeckt.buttonPressedEvent, function(e){ e.preventDefault(); var transitionInEffect = $(this).data('effeckt-transition-in'), transitionOutEffect = $(this).data('effeckt-transition-out') transitionPage = $(this).data('effeckt-transition-page'); if ( $(this).data("effeckt-needs-perspective")) { $("html").addClass("md-perspective"); } self.transitionPage( transitionPage, transitionInEffect, transitionOutEffect ); }); }, transitionPage: function( transitionPage, transitionInEffect, transitionOutEffect ) { if ( this.isAnimating ) { return false; } this.isAnimating = true; this.isCurrentPageEnd = false; this.isNextPageEnd = false; this.transitionInEffect = transitionInEffect; this.transitionOutEffect= transitionOutEffect; // Get Pages this.fromPage = $('[data-effeckt-page].effeckt-page-active'); this.toPage = $('[data-effeckt-page="' + transitionPage + '"]'); // Add this class to prevent scroll to be displayed this.toPage.addClass('effeckt-page-animating effeckt-page-active ' + this.transitionInEffect); this.fromPage.addClass('effeckt-page-animating'); // Set Transition Class this.fromPage.addClass(this.transitionOutEffect); var self= this; this.toPage.on( Effeckt.transitionAnimationEndEvent, function() { self.toPage.off( Effeckt.transitionAnimationEndEvent ); self.isNextPageEnd = true; if ( self.isCurrentPageEnd ) { self.resetTransition(); } }); this.fromPage.on( Effeckt.transitionAnimationEndEvent, function () { self.fromPage.off( Effeckt.transitionAnimationEndEvent ); self.isCurrentPageEnd = true; if ( self.isNextPageEnd ) { self.resetTransition(); } }); }, resetTransition: function() { this.isAnimating = false; this.isCurrentPageEnd = false; this.isNextPageEnd = false; this.fromPage.removeClass('effeckt-page-animating effeckt-page-active ' + this.transitionOutEffect);//.hide(); this.toPage.removeClass('effeckt-page-animating ' + this.transitionInEffect); $("html").removeClass("md-perspective"); } }; EffecktPageTransitions.init(); ================================================ FILE: js/modules/positional-modals.js ================================================ var EffecktPositionalModals = { modalButtonClass: '.effeckt-positional-modal-button', modalCloseButtonClass: '.effeckt-modal-close', modalWrapClass: 'effeckt-positional-modal-wrap', modalsList: [], init: function() { this.bindUIActions(); }, bindUIActions: function() { var self = this; $(this.modalButtonClass).on( Effeckt.buttonPressedEvent, function(e) { e.preventDefault(); self.openModal($(this)); }); $(document).on( Effeckt.buttonPressedEvent, this.modalCloseButtonClass, function(e) { e.preventDefault(); self.close($(this)); }); }, openModal: function($el) { var self = this, style = $el.data('effeckt-type'), position = $el.data('effeckt-position'), buttonPosition = $el.offset(), buttonSize = { 'width': $el.outerWidth(), 'height': $el.outerHeight() }, // This only work with page transition scrollTop = $('.effeckt-page-active').scrollTop(); // don't open if already open if (this.contains($el)) { return false; } var modal = this.createModal($("#effeckt-modal-wrap").html(), style, position); modal.show(); console.log(modal.width()); // append to dom, add to list this.add($el, modal); // TODO: check if modal window is outside the view. // If it's outside switch position // change based on position switch ( position ) { case 'below': modal.css({ 'top': buttonPosition.top + buttonSize.height + scrollTop, 'left': buttonPosition.left - (modal.outerWidth()/2) + buttonSize.width/2 }); break; case 'right': modal.css({ 'top': buttonPosition.top - (modal.outerHeight()/2) + scrollTop + (buttonSize.height/2), 'left': buttonPosition.left + buttonSize.width }); break; case 'left': modal.css({ 'top': buttonPosition.top - (modal.outerHeight()/2) + scrollTop + (buttonSize.height/2), 'left': buttonPosition.left - (modal.outerWidth()) }); break; default: case 'above': modal.css({ 'top': buttonPosition.top - modal.outerHeight() + scrollTop, 'left': buttonPosition.left - (modal.outerWidth()/2) + (buttonSize.width/2) }); break; } // todo: ensure is on top here. // apply effect modal.addClass('effeckt-show'); }, close: function($el) { var self = this; var modal = $el.parents('[class~="'+this.modalWrapClass+'"]'), sender = this.getSenderButton(modal); modal.removeClass("effeckt-show"); modal.on( Effeckt.transitionAnimationEndEvent, function() { modal.off( Effeckt.transitionAnimationEndEvent ); modal.hide().remove(); }); this.remove(modal); modal.find('.effeckt-positional-modal').removeClass('effeckt-show'); if (sender && sender.data("effeckt-needs-hide-class")) { modal.addClass("effeckt-hide"); } }, createModal: function(content, style, position) { var modalWrap = $('
    ') .addClass('effeckt-positional-modal-wrap ' + style) .attr('data-effeckt-position', position); modalWrap.html(content); return modalWrap; }, getSenderButton: function(modal) { var i; for (var i = 0, len = this.modalsList.length; i < len; i++) { if ( this.modalsList[i].modal.get(0) == modal.get(0) ) { return this.modalsList[i].element; } } return false; }, add: function($el, modal) { // add element to dom // on the active page wrap $('.effeckt-page-active').append(modal); // add element to modal list this.modalsList.push({ element: $el, 'modal': modal }); }, remove: function(modal){ var i; for (var i = 0, len = this.modalsList.length; i < len; i++) { if ( this.modalsList[i].modal.get(0) == modal.get(0) ) { this.modalsList.splice( i, 1 ); return true; } } }, // check if already has modal open contains: function($el) { var i; for (var i = 0, len = this.modalsList.length; i < len; i++) { if ( this.modalsList[i].element.get(0) == $el.get(0) ) { return true; } } return false; } }; EffecktPositionalModals.init(); ================================================ FILE: js/modules/tabs.js ================================================ /*! * strength.js * Original author: @aaronlumsden * Further changes, comments: @aaronlumsden * * Rewritten for effeckts project * * Licensed under the MIT license */ var Tabs = { tabsWrapClass: '.effeckt-tabs-wrap', tabsClass: '.effeckt-tabs a.effeckt-tab', tabContentClass:'.effeckt-tab-content', init: function() { this.initComponent(); this.bindUIActions(); }, initComponent: function() { //keep a reference to this (Tabs) object. var self = this; $(this.tabsWrapClass).each(function(){ var $el = $(this); var effect = $el.data('effeckt-type'); var tabContents = $el.find(self.tabContentClass); var firstTabContent = tabContents.first(); var tabs = $el.find(self.tabsClass); tabs.removeClass('active').first().addClass('active'); tabContents.not(':eq(0)').addClass('effeckt-hide'); firstTabContent.addClass('effeckt-show'); tabContents.parent().height(firstTabContent.height()); }); }, bindUIActions: function() { //keep a reference to this (Tabs) object. var self = this; $(this.tabsClass).on( Effeckt.buttonPressedEvent, function(e) { e.preventDefault(); self.showTab(this); }); }, showTab: function(el) { var tab = $(el); var tabsWrap = tab.parents(this.tabsWrapClass); var tabs = tabsWrap.find(this.tabsClass); var tabContents = tabsWrap.find(this.tabContentClass); var effect = tabsWrap.data('effeckt-type'); //set active to this current clicked tab tabs.removeClass('active'); tab.addClass('active'); var tabID = tab.attr('href'); var tabContent = tabContents.filter(tabID); tabContents.removeClass('effeckt-show').addClass('effeckt-hide'); tabContent.addClass('effeckt-show'); //add parent height, just because of position: absolute; tabContents.parent().height(tabContent.height()); } }; Tabs.init(); ================================================ FILE: package.json ================================================ { "name": "Effeckt", "version": "0.5.0", "devDependencies": { "assemble": "^0.4.42", "autoprefixer": "^3.1.0", "grunt": "^0.4.5", "grunt-autoprefixer": "^1.0.1", "grunt-contrib-concat": "^0.5.0", "grunt-contrib-connect": "^0.8.0", "grunt-contrib-copy": "^0.6.0", "grunt-contrib-watch": "^0.6.1", "grunt-dev-update": "^0.9.0", "grunt-gh-pages": "^0.9.1", "grunt-sass": "^0.14.2", "jit-grunt": "^0.8.0" }, "engines": { "node": ">=0.10" } } ================================================ FILE: readme.md ================================================ # This repo is archived Effeckt.css =========== **A Performant Transitions and Animations Library** : [http://h5bp.github.io/Effeckt.css](http://h5bp.github.io/Effeckt.css) Ever notice how small flourishes and subtle transitions dramatically increases the value of the experience you enjoy with an app or site? Designing and developing UIs for the mobile web is tricky, but it's extremely difficult to do that while delivering something that performs at 60fps. The best opportunities to getting jank-free transitions on phones/tablets are CSS transition and keyframe animation based, especially tapping into hardware-accelerated transforms and opacity changes. @daneden did really nice work with [Animate.css](http://daneden.me/animate/) but I think the web would benefit if we could take that work to the next level. There's already been fantastic experiments and demos exploring CSS-based transitions, but it's distributed all over. Originally started at [h5bp/lazyweb-requests#122](https://github.com/h5bp/lazyweb-requests/issues/122) #### Effeckt Trailer ![image](https://f.cloud.github.com/assets/39191/725426/aa3af38c-e067-11e2-82e4-269086cb845d.png) ## Examples To Add * [tympanus.net/Development/ModalWindowEffects/](http://tympanus.net/Development/ModalWindowEffects/) * [tympanus.net/Development/PageTransitions/](http://tympanus.net/Development/PageTransitions/) * [tympanus.net/Development/PFold/index2.html](http://tympanus.net/Development/PFold/index2.html) * [leaverou.github.io/animatable/](http://leaverou.github.io/animatable/) * [lab.hakim.se/ladda/](http://lab.hakim.se/ladda/) * [lab.hakim.se/kontext/](http://lab.hakim.se/kontext/) * [lab.hakim.se/avgrund/](http://lab.hakim.se/avgrund/) * [lab.hakim.se/meny/](http://lab.hakim.se/meny/) Because there are so many, I expect we could **group things by role**: * button/touch effects * state transition * modal/notification transition * attention attractors ## Goals 1. Provide a minimal UI. Only use style hooks for transitions and animations. 1. Designer-curated set of classy and reasonable effects. (no [`easeInBounce`](http://easings.net/#easeInBounce)) 1. Establish browser support guidelines (e.g. Android 2.3 would gracefully degrade) 1. CSS performance regression testing (a la [bench.topcoat.io](http://bench.topcoat.io)) 1. Deliver jank-free *60fps* performance on target browsers/devices 1. If a particular effect cannot deliver target performance (hey `blur()` css filter), it cannot be included. 1. Guidelines on what to avoid when styling these affected elements (avoid expensive CSS) 1. Deliver a builder so users can pull only the CSS they need. 1. There is no hover on the mobile web, so any hover-based effects would be excluded or have a tap-based equivalent. ## Action * If you know other transition/animation based demos/experiments that make sense to include here, file a ticket. * If you're interested in helping to define the API, let's hear it! File a ticket. * A web-based builder is a must. A command-line builder isn't important for this. ## Getting Started - [https://github.com/h5bp/Effeckt.css/wiki/Getting-Started](https://github.com/h5bp/Effeckt.css/wiki/Getting-Started) ## Code Style Guide - [https://github.com/h5bp/Effeckt.css/wiki/Code-Style-Guide](https://github.com/h5bp/Effeckt.css/wiki/Code-Style-Guide) ## General Inquiries & Support - Effeckt.css Mailing List [https://groups.google.com/d/forum/effeckt](https://groups.google.com/d/forum/effeckt) ## Bug Reports & Feature Requests - [http://github.com/h5bp/Effeckt.css/issues](https://github.com/h5bp/Effeckt.css/issues) ================================================ FILE: scss/_global.scss ================================================ .effeckt-perspective { perspective: $effeckt-perspective; } .effeckt-show { visibility: visible; } ================================================ FILE: scss/_variables.scss ================================================ // Overall $effeckt-transition-duration: 500ms !default; $effeckt-perspective: 600px !default; // Modals $effeckt-modal-transition-duration: 500ms !default; $effeckt-modal-animation-duration: $effeckt-modal-transition-duration*2 !default; // Forcing size so we can center w/o translate() $effeckt-modal-min-width: 320px !default; $effeckt-modal-max-width: 320px !default; $effeckt-modal-z-index: 2000 !default; // Buttons $effeckt-buttons-transition-duration: $effeckt-transition-duration !default; $effeckt-buttons-spinner-size: 32px !default; $effeckt-button-icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEljb01vb24uaW8gLS0+IDwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+IDxzdmcgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIiB2aWV3Qm94PSIwIDAgMzIgMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIGZpbGw9IiNmZmZmZmYiPjxnPjxwYXRoIGQ9Ik0gMTYsMyBDIDEyLjUyOCwzIDkuMjYzLDQuMzUyIDYuODA4LDYuODA4IEMgNC4zNTIsOS4yNjMgMywxMi41MjggMywxNiBDIDMsMTkuNDcyIDQuMzUyLDIyLjczNyA2LjgwOCwyNS4xOTIgQyA5LjI2MywyNy42NDggMTIuNTI4LDI5IDE2LDI5IEMgMTkuNDcyLDI5IDIyLjczNywyNy42NDggMjUuMTkyLDI1LjE5MiBDIDI3LjY0OCwyMi43MzcgMjksMTkuNDcyIDI5LDE2IEMgMjksMTIuNTI4IDI3LjY0OCw5LjI2MyAyNS4xOTIsNi44MDggQyAyMi43MzcsNC4zNTIgMTkuNDcyLDMgMTYsMyBaIE0gMTYsMCBMIDE2LDAgQyAyNC44MzcsMCAzMiw3LjE2MyAzMiwxNiBDIDMyLDI0LjgzNyAyNC44MzcsMzIgMTYsMzIgQyA3LjE2MywzMiAwLDI0LjgzNyAwLDE2IEMgMCw3LjE2MyA3LjE2MywwIDE2LDAgWk0gMTQsMjJMIDE4LDIyTCAxOCwyNkwgMTQsMjZ6TSAxNCw2TCAxOCw2TCAxOCwxOEwgMTQsMTh6Ij48L3BhdGg+PC9nPjwvc3ZnPg=="; $effeckt-button-spinner: "data:image/gif;base64,R0lGODlhIAAgAPMAAJmZmf///6+vr8nJybW1tcDAwOjo6Nvb26ioqKOjo7Ozs/Ly8vz8/AAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAIAAgAAAE5xDISWlhperN52JLhSSdRgwVo1ICQZRUsiwHpTJT4iowNS8vyW2icCF6k8HMMBkCEDskxTBDAZwuAkkqIfxIQyhBQBFvAQSDITM5VDW6XNE4KagNh6Bgwe60smQUB3d4Rz1ZBApnFASDd0hihh12BkE9kjAJVlycXIg7CQIFA6SlnJ87paqbSKiKoqusnbMdmDC2tXQlkUhziYtyWTxIfy6BE8WJt5YJvpJivxNaGmLHT0VnOgSYf0dZXS7APdpB309RnHOG5gDqXGLDaC457D1zZ/V/nmOM82XiHRLYKhKP1oZmADdEAAAh+QQJCgAAACwAAAAAIAAgAAAE6hDISWlZpOrNp1lGNRSdRpDUolIGw5RUYhhHukqFu8DsrEyqnWThGvAmhVlteBvojpTDDBUEIFwMFBRAmBkSgOrBFZogCASwBDEY/CZSg7GSE0gSCjQBMVG023xWBhklAnoEdhQEfyNqMIcKjhRsjEdnezB+A4k8gTwJhFuiW4dokXiloUepBAp5qaKpp6+Ho7aWW54wl7obvEe0kRuoplCGepwSx2jJvqHEmGt6whJpGpfJCHmOoNHKaHx61WiSR92E4lbFoq+B6QDtuetcaBPnW6+O7wDHpIiK9SaVK5GgV543tzjgGcghAgAh+QQJCgAAACwAAAAAIAAgAAAE7hDISSkxpOrN5zFHNWRdhSiVoVLHspRUMoyUakyEe8PTPCATW9A14E0UvuAKMNAZKYUZCiBMuBakSQKG8G2FzUWox2AUtAQFcBKlVQoLgQReZhQlCIJesQXI5B0CBnUMOxMCenoCfTCEWBsJColTMANldx15BGs8B5wlCZ9Po6OJkwmRpnqkqnuSrayqfKmqpLajoiW5HJq7FL1Gr2mMMcKUMIiJgIemy7xZtJsTmsM4xHiKv5KMCXqfyUCJEonXPN2rAOIAmsfB3uPoAK++G+w48edZPK+M6hLJpQg484enXIdQFSS1u6UhksENEQAAIfkECQoAAAAsAAAAACAAIAAABOcQyEmpGKLqzWcZRVUQnZYg1aBSh2GUVEIQ2aQOE+G+cD4ntpWkZQj1JIiZIogDFFyHI0UxQwFugMSOFIPJftfVAEoZLBbcLEFhlQiqGp1Vd140AUklUN3eCA51C1EWMzMCezCBBmkxVIVHBWd3HHl9JQOIJSdSnJ0TDKChCwUJjoWMPaGqDKannasMo6WnM562R5YluZRwur0wpgqZE7NKUm+FNRPIhjBJxKZteWuIBMN4zRMIVIhffcgojwCF117i4nlLnY5ztRLsnOk+aV+oJY7V7m76PdkS4trKcdg0Zc0tTcKkRAAAIfkECQoAAAAsAAAAACAAIAAABO4QyEkpKqjqzScpRaVkXZWQEximw1BSCUEIlDohrft6cpKCk5xid5MNJTaAIkekKGQkWyKHkvhKsR7ARmitkAYDYRIbUQRQjWBwJRzChi9CRlBcY1UN4g0/VNB0AlcvcAYHRyZPdEQFYV8ccwR5HWxEJ02YmRMLnJ1xCYp0Y5idpQuhopmmC2KgojKasUQDk5BNAwwMOh2RtRq5uQuPZKGIJQIGwAwGf6I0JXMpC8C7kXWDBINFMxS4DKMAWVWAGYsAdNqW5uaRxkSKJOZKaU3tPOBZ4DuK2LATgJhkPJMgTwKCdFjyPHEnKxFCDhEAACH5BAkKAAAALAAAAAAgACAAAATzEMhJaVKp6s2nIkolIJ2WkBShpkVRWqqQrhLSEu9MZJKK9y1ZrqYK9WiClmvoUaF8gIQSNeF1Er4MNFn4SRSDARWroAIETg1iVwuHjYB1kYc1mwruwXKC9gmsJXliGxc+XiUCby9ydh1sOSdMkpMTBpaXBzsfhoc5l58Gm5yToAaZhaOUqjkDgCWNHAULCwOLaTmzswadEqggQwgHuQsHIoZCHQMMQgQGubVEcxOPFAcMDAYUA85eWARmfSRQCdcMe0zeP1AAygwLlJtPNAAL19DARdPzBOWSm1brJBi45soRAWQAAkrQIykShQ9wVhHCwCQCACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiRMDjI0Fd30/iI2UA5GSS5UDj2l6NoqgOgN4gksEBgYFf0FDqKgHnyZ9OX8HrgYHdHpcHQULXAS2qKpENRg7eAMLC7kTBaixUYFkKAzWAAnLC7FLVxLWDBLKCwaKTULgEwbLA4hJtOkSBNqITT3xEgfLpBtzE/jiuL04RGEBgwWhShRgQExHBAAh+QQJCgAAACwAAAAAIAAgAAAE7xDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfZiCqGk5dTESJeaOAlClzsJsqwiJwiqnFrb2nS9kmIcgEsjQydLiIlHehhpejaIjzh9eomSjZR+ipslWIRLAgMDOR2DOqKogTB9pCUJBagDBXR6XB0EBkIIsaRsGGMMAxoDBgYHTKJiUYEGDAzHC9EACcUGkIgFzgwZ0QsSBcXHiQvOwgDdEwfFs0sDzt4S6BK4xYjkDOzn0unFeBzOBijIm1Dgmg5YFQwsCMjp1oJ8LyIAACH5BAkKAAAALAAAAAAgACAAAATwEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GGl6NoiPOH16iZKNlH6KmyWFOggHhEEvAwwMA0N9GBsEC6amhnVcEwavDAazGwIDaH1ipaYLBUTCGgQDA8NdHz0FpqgTBwsLqAbWAAnIA4FWKdMLGdYGEgraigbT0OITBcg5QwPT4xLrROZL6AuQAPUS7bxLpoWidY0JtxLHKhwwMJBTHgPKdEQAACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GAULDJCRiXo1CpGXDJOUjY+Yip9DhToJA4RBLwMLCwVDfRgbBAaqqoZ1XBMHswsHtxtFaH1iqaoGNgAIxRpbFAgfPQSqpbgGBqUD1wBXeCYp1AYZ19JJOYgH1KwA4UBvQwXUBxPqVD9L3sbp2BNk2xvvFPJd+MFCN6HAAIKgNggY0KtEBAAh+QQJCgAAACwAAAAAIAAgAAAE6BDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfYIDMaAFdTESJeaEDAIMxYFqrOUaNW4E4ObYcCXaiBVEgULe0NJaxxtYksjh2NLkZISgDgJhHthkpU4mW6blRiYmZOlh4JWkDqILwUGBnE6TYEbCgevr0N1gH4At7gHiRpFaLNrrq8HNgAJA70AWxQIH1+vsYMDAzZQPC9VCNkDWUhGkuE5PxJNwiUK4UfLzOlD4WvzAHaoG9nxPi5d+jYUqfAhhykOFwJWiAAAIfkECQoAAAAsAAAAACAAIAAABPAQyElpUqnqzaciSoVkXVUMFaFSwlpOCcMYlErAavhOMnNLNo8KsZsMZItJEIDIFSkLGQoQTNhIsFehRww2CQLKF0tYGKYSg+ygsZIuNqJksKgbfgIGepNo2cIUB3V1B3IvNiBYNQaDSTtfhhx0CwVPI0UJe0+bm4g5VgcGoqOcnjmjqDSdnhgEoamcsZuXO1aWQy8KAwOAuTYYGwi7w5h+Kr0SJ8MFihpNbx+4Erq7BYBuzsdiH1jCAzoSfl0rVirNbRXlBBlLX+BP0XJLAPGzTkAuAOqb0WT5AH7OcdCm5B8TgRwSRKIHQtaLCwg1RAAAOwAAAAAAAAAAAA=="; // Page Transitions $effeckt-page-transition-duration: $effeckt-transition-duration * 2 !default; // Off Screen Nav $effeckt-off-screen-navigation-transition-duration: $effeckt-transition-duration !default; $effeckt-off-screen-navigation-list-item-amount: 15; // List Items $effeckt-list-item-transition-duration: $effeckt-transition-duration !default; $effeckt-list-scroll-transition-duration: $effeckt-transition-duration !default; // Form Elements // Radio and Checkboxes $effeckt-form-element-ckradio-ios7bg-off: #FFF !default; $effeckt-form-element-ckradio-ios7bg-on: #666 !default; $effeckt-form-element-ckradio-ios7border-radius: 15px !default; $effeckt-form-element-ckradio-ios7transition: all .3s ease-out !default; $effeckt-form-element-ckradio-ios7transition-after: all 0.1s ease-in .1s !default; // Tabs $effeckt-tabs-transition-duration: $effeckt-transition-duration !default; // Tooltips $effeckt-tooltip-transition-delay: .2s !default; $effeckt-tooltip-transition-duration: .3s !default; $effeckt-tooltip-background: black !default; $effeckt-tooltip-forground: white !default; $effeckt-tooltip-arrow-size: 5px !default; // Lazy loading $effeckt-lazy-loading-transition-duration: 0.5s; ================================================ FILE: scss/demo/demo.scss ================================================ // This version of Sass doesn't like using string MQ's apparently. // $mini: "(max-width: 500px)"; // Reset * { margin: 0; padding: 0; box-sizing: border-box; } .warning { position: fixed; top: 0; left: 0; width: 100%; padding: 0.5rem; background: linear-gradient(#fff94d, #ddd610); opacity: 0.95; text-align: center; z-index: 1000; } // to avoid extranaous animations while page settles .no-transitions, .no-transitions * { transition: none !important; } // clearfix .group:after { content: ""; display: block; clear: both; } :root { // rem font-size: large; line-height: 1.4; @media (max-width: 500px) { font-size: small; } } // is needed for overlay html, body { height: 100%; // testing overflow: hidden; } body { background: #eee; font-family: Sans-serif; overflow: hidden; // for logo effect // This is kinda good for performance overall // But... you can't fixed position inside it then // transform: translateZ(0); @media (max-width: 500px) { } } // Layout .page-wrap { // Required for non-janky off-screen squishing float: right; width: 100%; } .effeckt { padding: 2rem; background: white; margin: 0 0 1rem 0; @media (max-width: 500px) { padding: 1.5rem; } header { margin: 0 0 1rem 0; border-bottom: 2px solid #eee; position: relative; .source { position: absolute; right: 0; bottom: 2px; @media (max-width: 500px) { position: relative; display: block; margin: 0.2rem 0; } } &:nth-of-type(n+2) { // all but first margin-top: 2rem; } } } .button-group { line-height: 2; } // Typography a { text-decoration: none; color: #ccc; } a:hover, a:active { color: black; } subhead { display: block; font-size: 1.4rem; margin: 0 0 2rem 0; } .mobile-break { display: none; @media (max-width: 500px) { display: block; } } h1 { margin: 0 0 1rem 0; @media (max-width: 500px) { line-height: 0.8; } } h1 span { font-size: 1.5rem; position: relative; display: inline-block; opacity: 0; width: 50px; height: 50px; line-height: 50px; background: #ccc; color: white; text-align: center; text-transform: uppercase; @media (max-width: 500px) { font-size: 0.8rem; width: 28px; height: 28px; line-height: 28px; } } h2 { margin: 0; } h3 { margin: 0; } h4 { margin: 0 0 0.5rem 0; } p, ul, ol, blockquote, pre { margin: 0 0 1rem 0; } button { padding: 0.25rem; } hr { height: 0; border: 0; border-top: 1px solid #ccc; } h1 span:nth-of-type(1) { animation: logo-from-horz 0.5s ease forwards; transform: translateX(-50px); background: #666; } h1 span:nth-of-type(2) { animation: logo-from-vert 0.5s 0.1s ease forwards; transform: translateY(-50px); background: #444; } h1 span:nth-of-type(3) { animation: logo-from-vert 0.5s 0.2s ease forwards; transform: translateX(50px); background: #666; } h1 span:nth-of-type(4) { animation: logo-from-horz 0.3s 0.3s ease forwards; transform: translateX(50px); background: #444; } h1 span:nth-of-type(5) { animation: logo-from-horz 0.3s 0.4s ease forwards; transform: translateX(-50px); background: #666; } h1 span:nth-of-type(6) { animation: logo-from-horz 0.3s 0.5s ease forwards; transform: translateX(50px); background: #444; } h1 span:nth-of-type(7) { animation: logo-from-vert 0.3s 0.6s ease forwards; transform: translateY(-50px); background: #666; } h1 span:nth-of-type(8) { animation: logo-from-horz 0.2s 1.1s ease forwards; transform: translateX(1000px); background: none; color: black; } h1 span:nth-of-type(9) { animation: logo-from-horz 0.2s 1.1s ease forwards; transform: translateX(1000px); } h1 span:nth-of-type(10) { animation: logo-from-horz 0.2s 1.1s ease forwards; transform: translateX(1000px); } h1 span:nth-of-type(11) { animation: logo-from-horz 0.2s 1.1s ease forwards; transform: translateX(1000px); } @keyframes logo-from-horz { 100% { transform: translateX(0); opacity: 1; } } @keyframes logo-from-vert { 100% { transform: translateY(0); opacity: 1;} } // Contributors .contributors { background: #222; color: #eee; header { border-bottom-color: #666; } ol { margin-left: 35px; } hr { margin: 15px 0; } } .fluid-video { height: 0; padding-top: 62.5%; position: relative; iframe { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } } // Individual demos, not specific to style .button-demo-wrap { width: 35%; float: left; &:nth-child(2n) { clear: both; } @media (max-width: 500px) { width: 100%; float: none; } } .effeckt-list-wrap { width: 50%; float: left; margin: 0 0 2rem 0; &:nth-child(even) { clear: both; padding-right: 20px; } } .effeckt-demo-list-scroll { > ul { width: 32%; float: left; margin-right: 2%; margin-bottom: 2%; &:nth-of-type(3n) { margin-right: 0; } @media (max-width: 500px) { width: 100%; float: none; height: 250px; margin: 0 0 1rem 0; } } } .effeckt-toggle-demo { min-height: 220px; } [data-toggle-trigger] { // Toggle buttons margin-bottom: 20px; } .effeckt-modal { background: white; h3 { padding: 1rem; color: white; background: #444; } } .effeckt-modal-content { padding: 1rem; } .effeckt-modal-overlay { z-index: 1000; background: rgba(black, 0.5); } // Pisitional Modal .effeckt-positional-modal-wrap { .effeckt-modal { padding: 10px; background: #ccc; } .effeckt-modal-content { background: white; } } // Buttons .effeckt-button { background: #444; color: white; border: 0; padding: 0.8rem 1rem; font-family: inherit; font-size: 1.3em; margin: 0 0.25rem 0.6rem 0; white-space: nowrap; cursor: pointer; outline: none; // As of 8-17-13, Autoprefixer does not catch these -webkit-appearance: none; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: rgba(black, 0); } .effeckt-button[data-effeckt-type="3d-rotate-success"]:after { background: #7aca7c; color: #358337; } .effeckt-button[data-effeckt-type="3d-rotate-error"]:before { background: #e96a6a; color: #a33a3a; } .effeckt-button[data-loading] { cursor: default; } .effeckt-page-transition { position: fixed; z-index: 1000; top: 0; left: 0; width: 100%; height: 100%; visibility: hidden; overflow: hidden; background: #555; } .effeckt-page-transition-content{ position: relative; top: 50%; left: 50%; width: 200px; margin: -100px 0 0 -100px; color: white; } .effeckt-off-screen-nav { position: fixed; z-index: 1000; top: 0; left: 0; bottom: 0; overflow-y: auto; background: #333; visibility: hidden; width: 12rem; // default, but some effects require different things ul { list-style: none; } li { &:first-child { a { border-top: 0; } } &:last-child { a { border-bottom: 0; } } a { display: block; padding: 0.3rem 1rem; color: white; border-bottom: 1px solid #444; &:hover, &:focus { background: #444; } &:active { background: #222; } } } // Make the close button move along with the header header { position: relative; } h4 { color: white; background: #333; border-bottom: 1px solid #eee; padding: 1rem 0.5rem 0.2rem 0; margin: 0 1rem 1rem; text-transform: uppercase; font-size: 0.65rem; letter-spacing: 0.1rem; position: relative; } } .effeckt-off-screen-nav-close { position: absolute; right: 1rem; top: 0.65rem; font-size: 100%; z-index: 300; &:hover, &:focus { color: red; } } .effeckt-off-screen-nav-rotate.effeckt-off-screen-nav-show ~ .page-wrap .off-screen-nav-cover { background: linear-gradient(left, rgba(#eee, 0), rgba(#eee, 0.9)); } .effeckt-off-screen-nav-top-card-deck, .effeckt-off-screen-nav-bottom-card-deck { cursor: pointer; background: transparent; h4 { margin:0; padding: 1rem; border-bottom: 0; } li { background-color: #333; border-bottom:1px solid #eee; } a { height: 100%; } .effeckt-off-screen-nav-close { right: 1rem; } } .effeckt-off-screen-nav-bottom-card-deck { li { border-top:1px solid #eee; border-bottom:none; } } .effeckt-off-screen-nav-left-bounce, .effeckt-off-screen-nav-left-bounce-out, .effeckt-off-screen-nav-right-bounce, .effeckt-off-screen-nav-right-bounce-out { box-sizing: content-box; } // The Captions .effeckt-caption { float: left; overflow: hidden; width: 48%; margin: 0 4% 1rem 0; &:nth-child(2n) { margin-right: 0; } img { width: 100%; display: block; } figcaption { background: rgba(black, 0.8); color: white; padding: 1rem; h3 { font-size: 1.2rem; } p { margin: 0; } } } .effeckt-list { list-style: none; li { background: #e6e6e6; padding: 0 0.5rem; overflow: hidden; margin-bottom: 2px; line-height: 2; &.new-item { background: #ccc; } } } .effeckt-list-scroll { width: 230px; height: 480px; margin: 0; padding: 0; overflow-x: hidden; overflow-y: scroll; list-style: none; > li { padding: 0.5rem; background: #eee; color: #252525; font-size: 18px; &:nth-child(odd) { background: #e6e6e6; } } } // Contributors .contributors-list { list-style: none; overflow: hidden; li { float: left; margin: 0 10px 10px 0; } img { width: 40px; height: 40px; } } // Extra pages (page transition testing) [data-effeckt-page="page-1"] { background-color: #EEEEEE; } [data-effeckt-page="page-2"] { color: #203513; background-color: #99CF78; } [data-effeckt-page="page-3"] { color: #282828; background-color: #FECD3D; } [data-effeckt-page="page-4"] { color: #FFFEFE; background-color: #CD4F5B; } [data-effeckt-page="page-5"] { color: #194772; background-color:#62A1DC; } // Tabs ul.effeckt-tabs { margin: 0; padding: 0; list-style: none; li { float: left; margin-right:2px; a { display: block; padding: 10px 15px; color: #383838; background-color: #EEEEEE; &.active, &:hover { background-color: #E8E8E8; } } } } .effeckt-tabs-container { padding:10px; margin-bottom: 20px; border:1px solid #DDD; .effeckt-tab-content { top: 10px; } } .effeckt-lazy-loading-options { margin:0 0 15px; label { margin: 0 5px; } } .effeckt-lazy-loading { // Maybe this won't work on many browsers // But the animations looks cooler like this. column-count:3; column-gap:0; li { display: block; list-style-type: none; padding: 0 5px 5px 0; } a { display: inline-block; background: #DDD; border:1px solid #ccc; width: 100%; height: 250px; } li:nth-child(1) a, li:nth-child(12n+12) a { height: 500px; } li:nth-child(3n+3) a { height: 350px; } li:nth-child(5n+5) a { height: 200px; } } ================================================ FILE: scss/effeckt.scss ================================================ @import "_variables"; @import "_global"; @import "modules/buttons"; @import "modules/captions"; @import "modules/list-items"; @import "modules/list-scroll"; @import "modules/modal"; @import "modules/off-screen-nav"; @import "modules/page-transitions"; @import "modules/tooltips"; @import "modules/form-elements"; @import "modules/tabs"; @import "modules/positional-modals"; //@import "modules/lazy-loading"; ================================================ FILE: scss/effeckts/captions/_mixins.scss ================================================ @mixin effecktCaptionFade() { figcaption { opacity: 1; } } @mixin effecktCaptionOffset() { figcaption { transform: translate(15px, 15px); opacity: 1; z-index: 100; //prevent ovarslap overflow: hidden; } } @mixin effecktCaptionSlide() { img { transform: translateY(-50%); } figcaption { transform: translateY(50%); } } @mixin effecktCaptionGuillotine($direction) { img { transform: translateY($direction); } } @mixin effecktQrtrSlideUp() { figcaption { opacity: 1; transform: translateY(0); } } @mixin effecktSqoosh() { .effeckt-figcaption-wrap { opacity: 1; transition-delay: 0.25s; } img { transform: scale(0.5) translateY(-80px); transition-delay: 0; } } @mixin effecktQrtrSlide() { figcaption { opacity: 1; transform: translateX(0); } } @mixin effecktQrtrFall() { figcaption { transform: translateX(0) rotate(0deg); opacity: 1; } } @mixin effecktQrtrTwoStep() { figcaption { transform: translateX(0); opacity: 1; } .effeckt-figcaption-wrap { transform: translateX(0); } } @mixin effecktCoverPushRight() { figcaption { transform: translateX(0); opacity: 1; } img { transform: translateX(100%); } } @mixin effecktCoverSlideTop() { figcaption { transform: translateY(0); opacity: 1; } } @mixin effecktQrtrZoom() { figcaption { transform: scale(1); opacity: 1; } img { transform: scale(1.1); } } @mixin effecktRevolvingDoor($rotate-dir: y, $perspective:1300px, $rotate-start:0, $rotate-end: -180deg) { @if $rotate-dir == y { figcaption { transform: perspective($perspective) rotateY($rotate-start); } img { transform: perspective($perspective) rotateY($rotate-end); } } @else { figcaption { transform: perspective($perspective) rotateX($rotate-start); } img { transform: perspective($perspective) rotateX($rotate-end); } } } ================================================ FILE: scss/effeckts/modals/_3ds.scss ================================================ // Effect: 3D flip horizontal .flip-horizontal-3D { perspective: $effeckt-perspective; } .flip-horizontal-3D .effeckt-content { transform: rotateY(-70deg); transform-style: preserve-3d; opacity: 0; } .effeckt-show.flip-horizontal-3D .effeckt-content { transform: rotateY(0deg); opacity: 1; } // Effect: 3D flip vertical .flip-vertical-3D { perspective: $effeckt-perspective; } .flip-vertical-3D .effeckt-content { transform: rotateX(-70deg); transform-style: preserve-3d; opacity: 0; } .effeckt-show.flip-vertical-3D .effeckt-content { transform: rotateX(0deg); opacity: 1; } // Effect: 3D sign .sign-3D { perspective: $effeckt-perspective; } .sign-3D .effeckt-content { transform: rotateX(-60deg); transform-origin: 50% 0; transform-style: preserve-3d; opacity: 0; } .effeckt-show.sign-3D .effeckt-content { transform: rotateX(0deg); opacity: 1; } // Effect: 3D Slit .slit-3D { perspective: $effeckt-perspective; } .slit-3D .effeckt-content { transform: translateZ(-3000px) rotateY(90deg); transform-style: preserve-3d; opacity: 0; } .effeckt-show.slit-3D .effeckt-content { animation: modalSlit 0.7s forwards ease-out; } @keyframes modalSlit { 50% { transform: translateZ(-250px) rotateY(89deg); opacity: 0.75; animation-timing-function: ease-in; } 100% { transform: translateZ(0) rotateY(0deg); opacity: 1; } } // Effect: 3D Rotate from bottom .rotate-from-bottom-3D { perspective: $effeckt-perspective; } .rotate-from-bottom-3D .effeckt-content { transform: translateY(100%) rotateX(90deg); transform-style: preserve-3d; transform-origin: 0 100%; opacity: 0; } .effeckt-show.rotate-from-bottom-3D .effeckt-content { transform: translateY(0%) rotateX(0deg); opacity: 1; } // Effect: 3D Rotate in from left .rotate-from-left-3D { perspective: $effeckt-perspective; } .rotate-from-left-3D .effeckt-content { transform: translateZ(100px) translateX(-30%) rotateY(90deg); transform-style: preserve-3d; transform-origin: 0 100%; opacity: 0; } .effeckt-show.rotate-from-left-3D .effeckt-content { transform: translateZ(0px) translateX(0%) rotateY(0deg); opacity: 1; } // Let me in .let-me-in ~ [data-effeckt-page].effeckt-page-active { transition: $effeckt-modal-transition-duration; transform: translate3d(0, 0, 0); transform-origin: 50% 0%; transform-style: preserve-3d; } .let-me-in .effeckt-content { opacity: 0; transform: translate3d(0, 200%, 0); } .effeckt-show.let-me-in ~ [data-effeckt-page].effeckt-page-active { transform: rotateX(-7deg); opacity: 1; &:after { opacity: 1; visibility: visible; } } .effeckt-show.let-me-in .effeckt-content { transform: translate3d(0, -50%, 0); opacity: 1; } // Effect: Make way .make-way { perspective: $effeckt-perspective; } .make-way ~ [data-effeckt-page].effeckt-page-active { transform-style: preserve-3d; transform-origin: 0% 50%; } .make-way .effeckt-content { transform: translate3d(200%, 0, 0); opacity: 0; } .effeckt-show.make-way ~ [data-effeckt-page].effeckt-page-active { animation: makeWay $effeckt-modal-transition-duration forwards ease-in; } .effeckt-show.make-way .effeckt-content { transform: translate3d(0, 0, 0); opacity: 1; } @keyframes makeWay { 50% { transform: translate3d(0, 0, -50px) rotateY(5deg); } 100% { transform: translate3d(0, 0, -200px); } } // Effect: Deep Content .deep-content .effeckt-content { transform: scale(0.8); opacity: 0; } .effeckt-show.deep-content .effeckt-content { transform: scale(1.1); opacity: 1; } .deep-content ~ [data-effeckt-page].effeckt-page-active { transform: translate3d(0, 0, 0); transition: $effeckt-modal-transition-duration; } .effeckt-show.deep-content ~ [data-effeckt-page].effeckt-page-active { transform: translate3d(0, 0, -85px); filter: blur(3px); } ================================================ FILE: scss/effeckts/modals/_misc.scss ================================================ // Effect: Newspaper .newspaper .effeckt-content { transform: scale(0.5) rotate(720deg); opacity: 0; } .effeckt-show.newspaper .effeckt-content { transform: scale(1) rotate(0deg); opacity: 1; } // Effect: Side fall .side-fall { perspective: $effeckt-perspective; transform-style: preserve-3d; } .side-fall .effeckt-content { transition-timing-function: ease-out; transform: translateZ(600px) translateX(30%) rotate(10deg); opacity: 0; } .effeckt-show.side-fall .effeckt-content { transition-timing-function: ease-in; transform: translateZ(0) translateX(0) rotate(0deg); opacity: 1; } // Effect: Fade In (Just me) .fade-in .effeckt-content { opacity: 0; } .effeckt-show.fade-in .effeckt-content { opacity: 1; } // Effect: Blur .effeckt-show.blur ~ [data-effeckt-page] { filter: blur(3px); transform: translate3d(0, 0, 0); } .blur .effeckt-content { opacity: 0; } .effeckt-show.blur ~ [data-effeckt-page] { transition: all $effeckt-modal-transition-duration ease; } .effeckt-show.blur .effeckt-content { opacity: 1; } // Effect: Tilt Fall / From the top to bottom with left tilt on the way out */ .tilt-fall .effeckt-content { transform: translateY(100%) rotate(-25deg); opacity: 0; } // Effect: Shake .shake .effeckt-content { opacity: 0; } .effeckt-show.shake .effeckt-content { opacity: 1; animation-name: shake; animation-timing-function: ease; } @keyframes shake { 0%, 100% {transform: translateX(0);} 10%, 30%, 50%, 70%, 90% {transform: translateX(-10px);} 20%, 40%, 60%, 80% {transform: translateX(10px);} } // Effect: Bounce .bounce .effeckt-content { opacity: 0; } .effeckt-show.bounce .effeckt-content { opacity: 1; animation-name: bounce; animation-timing-function: ease; } @keyframes bounce { 0%, 20%, 50%, 80%, 100% {transform: translateY(0);} 40% {transform: translateY(-30px);} 60% {transform: translateY(-15px);} } // Effect: Pulse .pulse .effeckt-content { opacity: 0; } .effeckt-show.pulse .effeckt-content { opacity: 1; animation-name: pulse; animation-timing-function: ease; } @keyframes pulse { 0% { transform: scale(1); } 50% { transform: scale(1.1); } 100% { transform: scale(1); } } // Effect: wobble .wobble .effeckt-content { opacity: 0; } .effeckt-show.wobble .effeckt-content { opacity: 1; animation-name: wobble; animation-timing-function: ease; } @keyframes wobble { 0% { transform: translateX(0%); } 15% { transform: translateX(-25%) rotate(-5deg); } 30% { transform: translateX(20%) rotate(3deg); } 45% { transform: translateX(-15%) rotate(-3deg); } 60% { transform: translateX(10%) rotate(2deg); } 75% { transform: translateX(-5%) rotate(-1deg); } 100% { transform: translateX(0%); } } // Effect: Swing .swing .effeckt-content { transform-origin: 50% 0%; opacity: 0; } .effeckt-show.swing .effeckt-content { opacity: 1; animation-name: swing; animation-timing-function: ease; } @keyframes swing { 20% { transform: rotate(15deg); } 40% { transform: rotate(-10deg); } 60% { transform: rotate(5deg); } 80% { transform: rotate(-5deg); } 100% { transform: rotate(0deg); } } // Effect: Tada .tada .effeckt-content { opacity: 0; } .effeckt-show.tada .effeckt-content { opacity: 1; animation-name: tada; animation-timing-function: ease; } @keyframes tada { 0% {transform: scale(1);} 10%, 20% {transform: scale(0.9) rotate(-3deg);} 30%, 50%, 70%, 90% {transform: scale(1.1) rotate(3deg);} 40%, 60%, 80% {transform: scale(1.1) rotate(-3deg);} 100% {transform: scale(1) rotate(0);} } ================================================ FILE: scss/effeckts/modals/_scale.scss ================================================ // Effeckt: Scale Up From Below .from-below .effeckt-content { transform: scale(0.5); opacity: 0; } .effeckt-show.from-below .effeckt-content { transform: scale(1); opacity: 1; } // Effeckt: Scale Down From Above .from-above .effeckt-content { transform: scale(1.5); opacity: 0; } .effeckt-show.from-above .effeckt-content { transform: scale(1); opacity: 1; } // Effeckt Out: Scale Down To Below .to-below .effeckt-content { transform: scale(0.5); opacity: 0; } // Effeckt Out: Scale Up To Above .to-above .effeckt-content { transform: scale(1.5); opacity: 0; } ================================================ FILE: scss/effeckts/modals/_slide.scss ================================================ // Effect: Slide from the top .slide-in-top .effeckt-content { transform: translate3d(0, -100%, 0); opacity: 0; } .effeckt-show.slide-in-top .effeckt-content { transform: translate3d(0, 0, 0); opacity: 1; } // Effect: Slide from the right .slide-in-right .effeckt-content { transform: translate3d(30%, 0, 0); opacity: 0; } .effeckt-show.slide-in-right .effeckt-content { transform: translate3d(0, 0, 0); opacity: 1; } // Effect: Slide from the bottom .slide-in-bottom .effeckt-content { transform: translate3d(0, 30%, 0); opacity: 0; } .effeckt-show.slide-in-bottom .effeckt-content { transform: translate3d(0, 0, 0); opacity: 1; } // Effect: Slide from the left .slide-in-left .effeckt-content { transform: translate3d(-30%, 0, 0); opacity: 0; } .effeckt-show.slide-in-left .effeckt-content { transform: translate3d(0, 0, 0); opacity: 1; } // Effect: Stick Up .sticky-up { top: 0; transform: translate(-50%, 0); } .sticky-up .effeckt-content { transform: translate3d(0, -100%, 0); opacity: 0; } .effeckt-show.sticky-up .effeckt-content { transform: translate3d(0, 0, 0); opacity: 1; } // Effect: Slip in from the top with perspective on container .slip-in-from-top ~ [data-effeckt-page], .slip-in-from-top ~ .effeckt-overlay { transform-style: preserve-3d; transform-origin: 50% 100%; } .slip-in-from-top .effeckt-content { transform: translateY(-200%); opacity: 0; } .effeckt-show.slip-in-from-top ~ [data-effeckt-page], .effeckt-show.slip-in-from-top ~ .effeckt-overlay { animation: OpenTop $effeckt-modal-transition-duration forwards ease-in; } .effeckt-show.slip-in-from-top .effeckt-content { transform: translateY(0); opacity: 1; } @keyframes OpenTop { 50% { transform: rotateX(10deg); animation-timing-function: ease-out; } } // Effeckt Out: Slide Out Bottom .slide-out-bottom .effeckt-content { transform: translateY(100%); opacity: 0; } // Effeckt Out: Slide Out Top .slide-out-top .effeckt-content { transform: translateY(-100%); opacity: 0; } // Effeckt Out: Slide Out Right .slide-out-right .effeckt-content { transform: translateX(100%); opacity: 0; } // Effeckt Out: Slide Out Left .slide-out-left .effeckt-content { transform: translateX(-100%); opacity: 0; } ================================================ FILE: scss/modules/buttons.scss ================================================ // TODO // - Some of the moment happening here is happening with top/left instead of translate() @import "../_variables"; .effeckt-button { position: relative; } // Spinner animation .effeckt-button .spinner { position: absolute; width: $effeckt-buttons-spinner-size; height: $effeckt-buttons-spinner-size; top: 50%; margin-top: -($effeckt-buttons-spinner-size / 2); margin-left: -($effeckt-buttons-spinner-size / 2); opacity: 0; background-image: url(#{$effeckt-button-spinner}); background-size: $effeckt-buttons-spinner-size auto; } // Easing Setup .effeckt-button, .effeckt-button .spinner, .effeckt-button .label { transition: $effeckt-buttons-transition-duration cubic-bezier(0.175, 0.885, 0.320, 1.275) all; } // Expand Right .effeckt-button[data-effeckt-type="expand-right"] .spinner { right: $effeckt-buttons-spinner-size / 2; } .effeckt-button[data-effeckt-type="expand-right"][data-loading] { padding-right: $effeckt-buttons-spinner-size * 2; } .effeckt-button[data-effeckt-type="expand-right"][data-loading] .spinner { opacity: 1; } // Expand Left .effeckt-button[data-effeckt-type="expand-left"] .spinner { left: $effeckt-buttons-spinner-size / 2; margin-left: 0; } .effeckt-button[data-effeckt-type="expand-left"][data-loading] { padding-left: $effeckt-buttons-spinner-size * 2 } .effeckt-button[data-effeckt-type="expand-left"][data-loading] .spinner { opacity: 1; } // Expand Up .effeckt-button[data-effeckt-type="expand-up"] { overflow: hidden; } .effeckt-button[data-effeckt-type="expand-up"] .spinner { top: $effeckt-buttons-spinner-size; left: 50%; } .effeckt-button[data-effeckt-type="expand-up"][data-loading] { padding-top: $effeckt-buttons-spinner-size * 2; } .effeckt-button[data-effeckt-type="expand-up"][data-loading] .spinner { opacity: 1; top: $effeckt-buttons-spinner-size / 2; margin-top: 0; } // Expand Down .effeckt-button[data-effeckt-type="expand-down"] { overflow: hidden; } .effeckt-button[data-effeckt-type="expand-down"] .spinner { left: 50%; top: 100%; margin-top: -($effeckt-buttons-spinner-size * 1.5); } .effeckt-button[data-effeckt-type="expand-down"][data-loading] { padding-bottom: $effeckt-buttons-spinner-size * 2; } .effeckt-button[data-effeckt-type="expand-down"][data-loading] .spinner { opacity: 1; } // Slide Left .effeckt-button[data-effeckt-type="slide-left"] { overflow: hidden; } .effeckt-button[data-effeckt-type="slide-left"] .label { position: relative; } .effeckt-button[data-effeckt-type="slide-left"] .spinner { left: 100%; } .effeckt-button[data-effeckt-type="slide-left"][data-loading] .label { opacity: 0; left: -100%; } .effeckt-button[data-effeckt-type="slide-left"][data-loading] .spinner { opacity: 1; left: 50%; } // Slide right .effeckt-button[data-effeckt-type="slide-right"] { overflow: hidden; } .effeckt-button[data-effeckt-type="slide-right"] .label { position: relative; } .effeckt-button[data-effeckt-type="slide-right"] .spinner { left: 0%; } .effeckt-button[data-effeckt-type="slide-right"][data-loading] .label { opacity: 0; left: 100%; } .effeckt-button[data-effeckt-type="slide-right"][data-loading] .spinner { opacity: 1; left: 50%; } // Slide Up .effeckt-button[data-effeckt-type="slide-up"] { overflow: hidden; } .effeckt-button[data-effeckt-type="slide-up"] .label { position: relative; } .effeckt-button[data-effeckt-type="slide-up"] .spinner { left: 50%; top: 100%; } .effeckt-button[data-effeckt-type="slide-up"][data-loading] .label { opacity: 0; top: -1em; } .effeckt-button[data-effeckt-type="slide-up"][data-loading] .spinner { opacity: 1; top: 50%; } // Slide Down .effeckt-button[data-effeckt-type="slide-down"] { overflow: hidden; } .effeckt-button[data-effeckt-type="slide-down"] .label { position: relative; } .effeckt-button[data-effeckt-type="slide-down"] .spinner { left: 50%; top: 0%; } .effeckt-button[data-effeckt-type="slide-down"][data-loading] .label { opacity: 0; top: 1em; } .effeckt-button[data-effeckt-type="slide-down"][data-loading] .spinner { opacity: 1; top: 50%; } .effeckt-button[data-effeckt-type="zoom-in"], .effeckt-button[data-effeckt-type="zoom-in"] .spinner, .effeckt-button[data-effeckt-type="zoom-in"] .label, .effeckt-button[data-effeckt-type="zoom-out"], .effeckt-button[data-effeckt-type="zoom-out"] .spinner, .effeckt-button[data-effeckt-type="zoom-out"] .label { transition: $effeckt-buttons-transition-duration ease all; } // Zoom Out .effeckt-button[data-effeckt-type="zoom-out"] { overflow: hidden; } .effeckt-button[data-effeckt-type="zoom-out"] .spinner { left: 50%; transform: scale(2.5); } .effeckt-button[data-effeckt-type="zoom-out"] .label { position: relative; display: inline-block; } .effeckt-button[data-effeckt-type="zoom-out"][data-loading] .label { opacity: 0; transform: scale(0.5); } .effeckt-button[data-effeckt-type="zoom-out"][data-loading] .spinner { opacity: 1; transform: none; } // Zoom in .effeckt-button[data-effeckt-type="zoom-in"] { overflow: hidden; } .effeckt-button[data-effeckt-type="zoom-in"] .spinner { left: 50%; transform: scale(0.2); } .effeckt-button[data-effeckt-type="zoom-in"] .label { position: relative; display: inline-block; } .effeckt-button[data-effeckt-type="zoom-in"][data-loading] .label { opacity: 0; transform: scale(2.2); } .effeckt-button[data-effeckt-type="zoom-in"][data-loading] .spinner { opacity: 1; transform: none; } /*========================== FILL ==========================*/ @mixin effeckt-button-fill($translateX:0, $translateY:0) { overflow: hidden; position: relative; &:after { content: ''; position: absolute; top: 0; right: 0; width: 100%; height: 100%; background: #000; transform: translate($translateX, $translateY); transition: transform $effeckt-buttons-transition-duration; } &[data-loading] { &:after { transform: translate(0, 0); } } .effeckt-button-label { position: relative; z-index: 1; } } // Fill from left .effeckt-button[data-effeckt-type="fill-from-left"] { @include effeckt-button-fill(-100%,0); } // Fill from right .effeckt-button[data-effeckt-type="fill-from-right"] { @include effeckt-button-fill(100%,0); } // Fill from top .effeckt-button[data-effeckt-type="fill-from-top"] { @include effeckt-button-fill(0,-100%); } // Fill from bottom .effeckt-button[data-effeckt-type="fill-from-bottom"] { @include effeckt-button-fill(0,100%); } /*========================== ICON SLIDE Example markup: ==========================*/ /// The "effeckt-button-icon" data-URI and "demo-button-icon" class // are for demo purposes. A user could apply their own class to the // button's label to designate the icon/image they want sliding in // and out -- utilizing the :before pseudo-element to place a // background image or character from an icon font. .demo-button-icon:before { background: url(#{$effeckt-button-icon}) no-repeat center center; background-size: 30px; } // General styles .effeckt-button[data-effeckt-type~="icon-slide"] { overflow: hidden; // Any padding has to be applied to the inner element, instead of the container. // So, override the default styling of .effeckt-button from demo.scss. padding: 0; .effeckt-button-label { padding: 0.8rem 1rem; // And re-apply it here. display: block; position: relative; transition: transform $effeckt-buttons-transition-duration; &:before { content: ''; display: block; position: absolute; width: 100%; height: 100%; } } } // Direction-specific styles .effeckt-button[data-effeckt-type~="icon-slide"] { // From top &[data-effeckt-type~="from-top"] .effeckt-button-label:before { top: -100%; left: 0; right: 0; } // From bottom &[data-effeckt-type~="from-bottom"] .effeckt-button-label:before { bottom: -100%; left: 0; right: 0; } // From left &[data-effeckt-type~="from-left"] .effeckt-button-label:before { left: -100%; top: 0; bottom: 0; } // From left &[data-effeckt-type~="from-right"] .effeckt-button-label:before { right: -100%; top: 0; bottom: 0; } } // Active state -- could be applied to a class or data-attribute, instead, // to make it JS triggered. Hover is easiest for the demo. .effeckt-button[data-effeckt-type~="icon-slide"][data-loading] { &[data-effeckt-type~="from-top"] .effeckt-button-label { transform: translateY(100%); } &[data-effeckt-type~="from-bottom"] .effeckt-button-label { transform: translateY(-100%); } &[data-effeckt-type~="from-left"] .effeckt-button-label { transform: translateX(100%); } &[data-effeckt-type~="from-right"] .effeckt-button-label { transform: translateX(-100%); } } // 3D Rotate Success/Error .effeckt-button[data-effeckt-type="3d-rotate-success"], .effeckt-button[data-effeckt-type="3d-rotate-error"] { transition: all $effeckt-buttons-transition-duration; transform-style: preserve-3d; backface-visibility: hidden; } // Hidden side of the button .effeckt-button[data-effeckt-type="3d-rotate-error"]:before, .effeckt-button[data-effeckt-type="3d-rotate-success"]:after { white-space: nowrap; width: 100%; height: 100%; position: absolute; left: 0; line-height: 2em; } // Hidden side of the button .effeckt-button[data-effeckt-type="3d-rotate-error"]:before { top: 100%; content: attr(data-effeckt-message); transform-origin: 0% 0%; transform: rotateX(-90deg); backface-visibility: hidden; } // JS add's a 'data-loading' attr, which will triger the transition .effeckt-button[data-effeckt-type="3d-rotate-error"][data-loading] { transform-origin: 50% 0%; transform: rotateX(90deg) translateY(-100%); } // Hidden side of the button .effeckt-button[data-effeckt-type="3d-rotate-success"]:after { top: -100%; content: attr(data-effeckt-message); transform-origin: 0% 100%; transform: rotateX(90deg); backface-visibility: hidden; } // JS add's a 'data-loading' attr, which will triger the transition .effeckt-button[data-effeckt-type="3d-rotate-success"][data-loading] { transform-origin: 50% 100%; transform: rotateX(-90deg) translateY(100%); } ================================================ FILE: scss/modules/captions.scss ================================================ // ========================================================================== // $Effeckt Captions // @dependencies // js/libs/jquery-2.0.3.min.js // js/modules/captions.js // ========================================================================== $effeckt-caption-transition-duration: 500ms !default; /* Captions Markup Pattern & Explanation data-effeckt-type = ""
    */ // ========================================================================== // Styles // ========================================================================== .effeckt-caption { position: relative; img { transition: $effeckt-caption-transition-duration; } figcaption { position: absolute; transition: $effeckt-caption-transition-duration; width: 100%; } // Effect 1: Appear &[data-effeckt-type="quarter-appear"] { figcaption { bottom: 0; left: 0; opacity: 0; } &:hover, &:active, &.active { figcaption { opacity: 1; } } } // Effect 2: Quarter Slide Up &[data-effeckt-type="quarter-slide-up"] { figcaption { bottom: 0; left: 0; opacity: 0; transform: translateY(100%); } &:hover, &:active, &.active { figcaption { opacity: 1; transform: translateY(0); } } } // Effect 3: Sqwoosh &[data-effeckt-type="sqkwoosh"] { figcaption { top: 0; left: 0; width: 100%; height: 100%; transition: none; z-index: 0; } img { position: relative; z-index: 1; transition-delay: 0.25s; } .effeckt-figcaption-wrap { position: absolute; bottom: 1rem; opacity: 0; transition: opacity 0.25s linear 0s; } &:hover, &:active, &.active { .effeckt-figcaption-wrap { opacity: 1; transition-delay: 0.25s; } img { transform: scale(0.5) translateY(-80px); transition-delay: 0; } } } // Effect 4: Quarter Slide Side &[data-effeckt-type="quarter-slide-side"] { figcaption { left: 0; bottom: 0; opacity: 0; transform: translateX(100%); } &:hover, &:active, &.active { figcaption { opacity: 1; transform: translateX(0); } } } // Effect 5: Cover Fade &[data-effeckt-type="cover-fade"] { figcaption { top: 0; left: 0; height: 100%; opacity: 0; } &:hover, &:active, &.active { figcaption { opacity: 1; } } } // Effect 6 - Quarter Fall in &[data-effeckt-type="quarter-fall-in"] { figcaption { top: 0; left: 0; transform: translateX(100%) rotate(20deg); opacity: 0; } &:hover, &:active, &.active { figcaption { transform: translateX(0) rotate(0deg); opacity: 1; } } } // Effect 7 - 3Quarter Two Step &[data-effeckt-type="quarter-two-step"] { figcaption { top: 0; left: 0; transform: translateX(-100%); opacity: 0; z-index: 2; } .effeckt-figcaption-wrap { transition: $effeckt-caption-transition-duration $effeckt-caption-transition-duration/2; transform: translateX(200%); } &:hover, &:active, &.active { figcaption { transform: translateX(0); opacity: 1; } .effeckt-figcaption-wrap { transform: translateX(0); } } } // Effect 8 - Cover Push Right &[data-effeckt-type="cover-push-right"] { figcaption { top: 0; left: 0; height: 100%; transform: translateX(-100%); opacity: 0; } img { transition: $effeckt-caption-transition-duration; transform: translateX(0); } &:hover, &:active, &.active { figcaption { transform: translateX(0); opacity: 1; } img { transform: translateX(100%); } } } // Effect 15 - Cover Slide Top &[data-effeckt-type="cover-slide-top"] { figcaption { top: 0; left: 0; height: 100%; transform: translateY(-100%); opacity: 0; } img { transition: $effeckt-caption-transition-duration; } &:hover, &:active, &.active { figcaption { transform: translateY(0); opacity: 1; } } } // Effect 9 - Quarter Caption Zoom &[data-effeckt-type="quarter-zoom"] { figcaption { top: 0; left: 0; transform: scale(2); text-align: center; opacity: 0; } img { transition: $effeckt-caption-transition-duration; } &:hover, &:active, &.active { figcaption { transform: scale(1); opacity: 1; } img { transform: scale(1.1); } } } // Effect 10 - Revolving Door &[data-effeckt-type="revolving-door-left"] { overflow: visible; figcaption { top: 0; left: 0; width: 100%; height: 100%; transform: perspective(1300px) rotateY(180deg); backface-visibility: hidden; } img { transform: perspective(1300px); transition: $effeckt-caption-transition-duration; } &:hover, &:active, &.active { figcaption { transform: perspective(1300px) rotateY(0deg); } img { transform: perspective(1300px) rotateY(-180deg); } } } // Effect 11 - Revolving Door Right &[data-effeckt-type="revolving-door-right"] { overflow: visible; figcaption { top: 0; left: 0; width: 100%; height: 100%; transform: perspective(1300px) rotateY(180deg); backface-visibility: hidden; } img { transform: perspective(1300px); transition: $effeckt-caption-transition-duration; } &:hover, &:active, &.active { figcaption { transform: perspective(1300px) rotateY(360deg); } img { transform: perspective(1300px) rotateY(180deg); } } } // Effect 12 - Revolving Door Top &[data-effeckt-type="revolving-door-top"] { overflow: visible; figcaption { top: 0; left: 0; width: 100%; height: 100%; transform: perspective(1300px) rotateX(180deg); backface-visibility: hidden; } img { transform: perspective(1300px); transition: $effeckt-caption-transition-duration; } &:hover, &:active, &.active { figcaption { transform: perspective(1300px) rotateX(360deg); } img { transform: perspective(1300px) rotateX(180deg); } } } // Effect 13 - Revolving Door Bottom &[data-effeckt-type="revolving-door-bottom"] { overflow: visible; figcaption { top: 0; left: 0; width: 100%; height: 100%; transform: perspective(1300px) rotateX(180deg); backface-visibility: hidden; } img { transform: perspective(1300px); transition: $effeckt-caption-transition-duration; } &:hover, &:active, &.active { figcaption { transform: perspective(1300px) rotateX(0deg); } img { transform: perspective(1300px) rotateX(-180deg); } } } // Effect 14 - Caption Offset &[data-effeckt-type="offset"] { overflow: visible; figcaption { top: 0; left: 0; text-align: center; opacity: 0; height: 100%; } img { transition: $effeckt-caption-transition-duration; } &:hover, &:active, &.active { figcaption { transform: translate(15px, 15px); opacity: 1; z-index: 100; //prevent overlap overflow: hidden; } } } // Effect 15 - Guillotine Reverse / Reveal Up &[data-effeckt-type="guillotine-reverse"] { overflow: visible; figcaption { top: 0; left: 0; text-align: center; height: 100%; } img { display: block; position:relative; z-index:10; transition: $effeckt-caption-transition-duration; } &:hover, &:active, &.active { img { transform: translateY(-100%); } } } // Effect 16 - Half Slide &[data-effeckt-type="half-slide"] { figcaption { top: 0; left: 0; text-align: center; height: 100%; transform: translateY(100%); } img { display: block; position:relative; transition: $effeckt-caption-transition-duration; } &:hover, &:active, &.active { img { transform: translateY(-50%); } figcaption { transform: translateY(50%); } } } // Effect 17 - Tunnel &[data-effeckt-type="tunnel"] { figcaption { top: 0; left: 0; text-align: center; height: 100%; opacity: 0; transform: scale(0.7); } img { display: block; position:relative; z-index: 10; transition: $effeckt-caption-transition-duration; } &:hover, &:active, &.active { img { transform: scale(0.4); } figcaption { opacity:1; transform: scale(1); } } } } ================================================ FILE: scss/modules/form-elements.scss ================================================ @import "../_variables"; // Notes: Only works in WebKit for now // is this acceptable to our goals? // Fallback // Apply this style only on WebKit // To prevent ugly styles on non-WebKit Browser @media screen and (-webkit-min-device-pixel-ratio:0) { .effeckt-ckbox-ios7[type=checkbox], .effeckt-rdio-ios7[type=radio] { // Not caught by autoprefixer -webkit-appearance: none; -moz-appearance: none; appearance: none; box-shadow: inset 0px 0px 0px 1px #e6e6e6; border-radius: $effeckt-form-element-ckradio-ios7border-radius; cursor: pointer; display: inline-block; height: 31px; padding: 1px; position: relative; margin: 0px; width: 52px; outline: 0; transition: $effeckt-form-element-ckradio-ios7transition; transform: scale(1); // Adjust size here background: $effeckt-form-element-ckradio-ios7bg-off; } .effeckt-ckbox-ios7[type=checkbox]:checked, .effeckt-rdio-ios7:checked { box-shadow: inset 0px 0px 0px 20px $effeckt-form-element-ckradio-ios7bg-on; } .effeckt-ckbox-ios7[type=checkbox]:after, .effeckt-rdio-ios7[type=radio]:after { box-shadow: 0px 2px 2px 1px rgba(0, 0, 0, 0.2); border-radius: $effeckt-form-element-ckradio-ios7border-radius; content: ''; cursor: pointer; height: 29px; position: absolute; width: 29px; transition: $effeckt-form-element-ckradio-ios7transition-after; background: $effeckt-form-element-ckradio-ios7bg-off; } .effeckt-ckbox-ios7[type="checkbox"]:checked:after, .effeckt-rdio-ios7[type="radio"]:checked:after { left: 22px; } // Android .effeckt-ckbox-android[type=checkbox], .effeckt-rdio-android[type=radio] { -webkit-appearance: none; -moz-appearance: none; appearance: none; box-shadow: inset 0px 0px 0px 1px #e6e6e6; border-radius: 1px; cursor: pointer; display: inline-block; height: 21px; padding: 1px; position: relative; margin: 0px; width: 72px; outline: 0; -webkit-transition: all 0.3s ease-out; -o-transition: all 0.3s ease-out; transition: all 0.3s ease-out; -webkit-transform: scale(1); -ms-transform: scale(1); -o-transform: scale(1); transform: scale(1); background: #333; } .effeckt-ckbox-android[type=checkbox]:checked, .effeckt-rdio-android:checked { box-shadow: inset 0px 0px 0px 20px #666666; } .effeckt-ckbox-android[type=checkbox]:after, .effeckt-rdio-android[type=radio]:after { box-shadow: 0px 0px 0px 0px ; border-radius: 1px; content: ''; cursor: pointer; height: 19px; position: absolute; width: 29px; -webkit-transition: all 0.1s ease-in 0.1s; -o-transition: all 0.1s ease-in 0.1s; transition: all 0.1s ease-in 0.1s; background: #4d4d4d; } .effeckt-ckbox-android[type="checkbox"]:checked:after, .effeckt-rdio-android[type="radio"]:checked:after { left: 43px; } } ================================================ FILE: scss/modules/lazy-loading.scss ================================================ @import "../_variables"; .effeckt-lazy-loading-element { opacity:0; &.shown { opacity: 1; } } // Effeckt: Fade [data-effeckt-type="fade"] { .effeckt-lazy-loading-element { &.animating { opacity:0; animation: fadeIn $effeckt-lazy-loading-transition-duration ease forwards; } } } @keyframes fadeIn { to { opacity: 1; } } // Effeckt: Slide Up [data-effeckt-type="slide-up"] { .effeckt-lazy-loading-element { &.animating { opacity:0; transform: translateY(200px); animation: slideUp $effeckt-lazy-loading-transition-duration ease forwards; } } } @keyframes slideUp { to { opacity: 1; transform: translateY(0px); } } // Effeckt: Scale Up [data-effeckt-type="scale-up"] { .effeckt-lazy-loading-element { &.animating { opacity:0; transform: scale(0.6); animation: scaleUp $effeckt-lazy-loading-transition-duration ease forwards; } } } @keyframes scaleUp { to { opacity: 1; transform: scale(1); } } // Effeckt: Scale Down [data-effeckt-type="scale-down"] { perspective: 1300px; .effeckt-lazy-loading-element { &.animating { opacity:0; transform-style: preserve-3d; transform: scale(1.4); animation: scaleDown $effeckt-lazy-loading-transition-duration ease forwards; } } } @keyframes scaleDown { to { opacity:1; transform: scale(1); } } // Effeckt: Fall [data-effeckt-type="fall"] { perspective: 1300px; .effeckt-lazy-loading-element { &.animating { opacity:0; transform-style: preserve-3d; transform: translateZ(400px) translateY(300px) rotateX(-90deg); animation: fall $effeckt-lazy-loading-transition-duration*1.5 ease forwards; } } } @keyframes fall { to { opacity:1; transform: translateZ(0px) translateY(0px) rotateX(0deg); } } // Effeckt: Fly [data-effeckt-type="fly"] { perspective: 1300px; .effeckt-lazy-loading-element { &.animating { transform-style: preserve-3d; transform-origin: 50% 50% -300px; transform: rotateX(-180deg); animation: fly $effeckt-lazy-loading-transition-duration ease-in-out forwards; } } } @keyframes fly { to { opacity:1; transform: rotateX(0deg); } } // Effeckt: 3D Sign [data-effeckt-type="sign-3D"] { perspective: 1300px; .effeckt-lazy-loading-element { &.animating { opacity:0; transform-style: preserve-3d; transform-origin: 0% 0%; transform: rotateX(-80deg); animation: sign3D $effeckt-lazy-loading-transition-duration ease-in-out forwards; } } } @keyframes sign3D { to { opacity:1; transform: rotateX(0deg); } } // Effeckt: Helix [data-effeckt-type="helix"] { perspective: 1300px; .effeckt-lazy-loading-element { &.animating { opacity:0; transform-style: preserve-3d; transform: rotateY(-180deg); animation: helix $effeckt-lazy-loading-transition-duration ease-in-out forwards; } } } @keyframes helix { to { opacity:1; transform: rotateY(0deg); } } // Effeckt: Pop Up [data-effeckt-type="popup"] { perspective: 1300px; .effeckt-lazy-loading-element { &.animating { opacity:0; transform-style: preserve-3d; transform: scale(0.4); animation: popup $effeckt-lazy-loading-transition-duration ease-in-out forwards; } } } @keyframes popup { 70% { transform: scale(1.1); opacity: .8; animation-timing-function: ease-out; } 100% { opacity: 1; transform: scale(1); } } ================================================ FILE: scss/modules/list-items.scss ================================================ @import "../_variables"; // TODO: Removal Animations as well // Pop-in .effeckt-list[data-effeckt-type='pop-in'] { overflow: hidden; } .effeckt-list[data-effeckt-type='pop-in'] .new-item { max-height: 0; opacity: 0; transform: translateX(-300px); animation: openSpace $effeckt-list-item-transition-duration ease forwards, moveIn $effeckt-list-item-transition-duration*1.5 $effeckt-list-item-transition-duration ease forwards; } .effeckt-list[data-effeckt-type='pop-in'] .remove-item { max-height: 50px; opacity: 1; animation: moveOut $effeckt-list-item-transition-duration*1.5 $effeckt-list-item-transition-duration ease forwards, closeSpace $effeckt-list-item-transition-duration ease forwards $effeckt-list-item-transition-duration*1.5; } @keyframes openSpace { to { max-height: 50px; } } @keyframes moveIn { to { opacity: 1; transform: translateX(0); } } @keyframes moveOut { to { opacity: 0; transform: translateX(-300px); } } @keyframes closeSpace { to { max-height: 0px; } from { max-height: 50px; } } // Expand in .effeckt-list[data-effeckt-type='expand-in'] .new-item { max-height: 0; opacity: 0; transform: scale(0); animation: growHeight $effeckt-list-item-transition-duration ease forwards; } .effeckt-list[data-effeckt-type='expand-in'] .remove-item { animation: shrinkHeight $effeckt-list-item-transition-duration ease forwards; } @keyframes growHeight { to { // max-height kinda janky way to do this max-height: 50px; opacity: 1; transform: scale(1); } } @keyframes shrinkHeight { to { max-height: 0; opacity: 1; transform: scale(0); } from { max-height: 50px; opacity: 1; transform: scale(1); } } // Wobble in .effeckt-list[data-effeckt-type='wobble-in'] .new-item { backface-visibility: visible; animation: WobbleInX $effeckt-list-item-transition-duration*5 both $effeckt-list-item-transition-duration, openSpace $effeckt-list-item-transition-duration ease forwards; } .effeckt-list[data-effeckt-type='wobble-in'] .remove-item { backface-visibility: visible; animation: WobbleOutX $effeckt-list-item-transition-duration*5 both $effeckt-list-item-transition-duration, closeSpace $effeckt-list-item-transition-duration*2 ease forwards $effeckt-list-item-transition-duration*3; } @keyframes WobbleInX { 0% { transform: perspective(250px) rotateX(90deg); opacity: 0; } 40% { transform: perspective(250px) rotateX(-10deg); } 70% { transform: perspective(250px) rotateX(10deg); } 100% { transform: perspective(250px) rotateX(0deg); opacity: 1; } } @keyframes WobbleOutX { 0% { transform: perspective(250px) rotateX(0deg); opacity: 1; } 100% { transform: perspective(250px) rotateX(90deg); opacity: 0; } } // Flip in .effeckt-list[data-effeckt-type='flip-in'] .new-item { backface-visibility: visible; transform-origin: top left; animation: FlipIn $effeckt-list-item-transition-duration*5 both $effeckt-list-item-transition-duration, openSpace $effeckt-list-item-transition-duration ease forwards; } .effeckt-list[data-effeckt-type='flip-in'] .remove-item { backface-visibility: visible; transform-origin: top left; animation: FlipOut $effeckt-list-item-transition-duration*5 both $effeckt-list-item-transition-duration, closeSpace $effeckt-list-item-transition-duration*2 ease forwards $effeckt-list-item-transition-duration*2; } @keyframes FlipIn { 0% { transform: perspective(300px) rotateX(90deg); opacity: 0; } 100% { transform: perspective(300px) rotateX(0deg); opacity: 1; } } @keyframes FlipOut { 0% { transform: perspective(400px) rotateX(0deg); opacity: 1; } 100% { transform: perspective(400px) rotateX(90deg); opacity: 0; } } // Fall in .effeckt-list[data-effeckt-type='fall-in'] .new-item { backface-visibility: visible; animation: openSpace $effeckt-list-item-transition-duration*2 ease forwards, fallInX $effeckt-list-item-transition-duration*2 both; } .effeckt-list[data-effeckt-type='fall-in'] .remove-item { backface-visibility: visible; transform-origin: top left; animation: fallOffX $effeckt-list-item-transition-duration*2 both, closeSpace $effeckt-list-item-transition-duration*1.5 ease forwards $effeckt-list-item-transition-duration; } @keyframes fallInX { 0% { opacity: 0; transform: translateY(-200px); } 100% { opacity: 1; transform: translateY(0); } } @keyframes fallOffX { 0% { opacity: 1; transform: rotateZ(0); } 100% { opacity: 0; transform: translateY(200px) rotateZ(90deg); } } // From Above .effeckt-list[data-effeckt-type='from-above'] .new-item { backface-visibility: visible; animation: openSpace $effeckt-list-item-transition-duration*2 ease forwards, fromAbove $effeckt-list-item-transition-duration*2 both $effeckt-list-item-transition-duration; } .effeckt-list[data-effeckt-type='from-above'] .remove-item { backface-visibility: visible; animation: toAbove $effeckt-list-item-transition-duration*2 both, closeSpace $effeckt-list-item-transition-duration ease forwards $effeckt-list-item-transition-duration*1.3; } @keyframes fromAbove { 0% { opacity: 0; transform: scale(3); } 100% { opacity: 1; transform: scale(1); } } @keyframes toAbove { 0% { opacity: 1; transform: scale(1); } 100% { opacity: 0; transform: scale(3); } } // Wobble Out .effeckt-list[data-effeckt-type='wobble-out'] .new-item { backface-visibility: visible; animation: openSpace $effeckt-list-item-transition-duration*2 ease forwards, fallInX $effeckt-list-item-transition-duration*2 both; } .effeckt-list[data-effeckt-type='wobble-out'] .remove-item { backface-visibility: visible; transform-origin: top left; animation: wobbleOutY $effeckt-list-item-transition-duration*3 both $effeckt-list-item-transition-duration, closeSpace $effeckt-list-item-transition-duration ease forwards $effeckt-list-item-transition-duration*3; } @keyframes wobbleOutY { 0% { opacity: 1; transform: rotateZ(0); } 20% { opacity: 1; transform: rotateZ(140deg); } 40% { opacity: 1; transform: rotateZ(60deg); } 60% { opacity: 1; transform: rotateZ(110deg); } 70% { opacity: 1; transform: rotateZ(90deg) translateX(0); } 90% { opacity: 1; transform: rotateZ(90deg) translateX(400px); } 100% { opacity: 0; transform: rotateZ(90deg) translateX(400px); } } // Bouncy Slide In .effeckt-list[data-effeckt-type='bouncy-slide-in'] .new-item { backface-visibility: visible; animation: bouncySlideIn $effeckt-list-item-transition-duration*2 both, openSpace $effeckt-list-item-transition-duration ease forwards; } .effeckt-list[data-effeckt-type='bouncy-slide-in'] .remove-item { backface-visibility: visible; animation: fallOffY $effeckt-list-item-transition-duration*3 both $effeckt-list-item-transition-duration, closeSpace $effeckt-list-item-transition-duration ease forwards $effeckt-list-item-transition-duration*3.25; } @keyframes bouncySlideIn { 0% { opacity: 0; transform: translateX(300px); } 70% { opacity: 1; transform: translateX(-50px); } 100% { opacity: 1; transform: translateX(0); } } @keyframes fallOffY { 0% { opacity: 1; transform: translateX(0) translateY(0) rotateZ(0deg); } 50% { opacity: 1; transform: translateX(-50%) translateY(0) rotateZ(0deg); } 75% { opacity: 0.75; transform: translateX(-50%) translateY(0) rotateZ(-30deg); } 100% { opacity: 0; transform: translateX(-50%) translateY(300px) rotateZ(-60deg); } } ================================================ FILE: scss/modules/list-scroll.scss ================================================ @import "../_variables"; .effeckt-list-scroll { position: relative; overflow-x: hidden; overflow-y: scroll; perspective: 400px; > li { position: relative; z-index: 2; transform: translateZ(0); } } // Grow [data-effeckt-type="grow"] li { transition: all $effeckt-list-scroll-transition-duration ease; transform-origin: 50% 50%; &.past, &.future { transform: scale(0.01); } } // Curl [data-effeckt-type="curl"] li { // this was originally applied to the 'li', // was this a mistake? Seems like it should // be part of the parent
      perspective: 600px; perspective-origin: 0% 50%; transition: all $effeckt-list-scroll-transition-duration ease, opacity $effeckt-list-scroll-transition-duration/3 ease; transform-origin: 0% 0%; backface-visibility: hidden; &.past { opacity: 0; transform: rotateY(90deg); } &.future { opacity: 0; transform: rotateY(90deg); } } // Wave [data-effeckt-type="wave"] li { transition: all $effeckt-list-scroll-transition-duration cubic-bezier(0.260, 0.860, 0.440, 0.985); &.past { transform: translateX(-70%); } &.future { transform: translateX(-70%); } } // Fan [data-effeckt-type="fan"] li { transition: all $effeckt-list-scroll-transition-duration cubic-bezier(0.390, 0.575, 0.565, 1.000); transform-origin: 0% 0%; &.past { transform: rotate(-60deg); } &.future { transform: rotate(70deg); } } // Fade [data-effeckt-type="fade"] li { transition: opacity $effeckt-list-scroll-transition-duration/2 ease-in-out; &.past, &.future { opacity: 0; } } // Fly [data-effeckt-type="fly"] { perspective: 400px; perspective-origin: 50% 50%; li { transition: all $effeckt-list-scroll-transition-duration ease, opacity $effeckt-list-scroll-transition-duration/2 ease; transform-origin: 50% 50% -50px; &.past, &.future { opacity: 0; } &.past { transform: rotateX(180deg); } &.future { transform: rotateX(-180deg); } } } //landing [data-effeckt-type="landing"] { perspective: 400px; perspective-origin: 50% 50%; li { transition: all $effeckt-list-scroll-transition-duration ease, opacity $effeckt-list-scroll-transition-duration/2 ease; transform-origin: 50% 50%; &.past, &.future { opacity: 0; } &.past { transform: scale(1.5) translate(10%,-50%); } &.future { transform: scale(1.5) translate(-10%,50%); } } } //swing from back to front [data-effeckt-type="swing-front"] { perspective: 400px; perspective-origin: 50% 50%; li { transition: all $effeckt-list-scroll-transition-duration ease, opacity $effeckt-list-scroll-transition-duration/2 ease; &.past, &.future { opacity: 0; } &.past { transform-origin: bottom; transform: rotateX(140deg); } &.future { transform-origin: top; transform: rotateX(-140deg); } } } //swing from front to back [data-effeckt-type="swing-back"] { perspective: 400px; perspective-origin: 50% 50%; li { transition: all $effeckt-list-scroll-transition-duration ease, opacity $effeckt-list-scroll-transition-duration/2 ease; &.past, &.future { opacity: 0; } &.past { transform-origin: bottom; transform: rotateX(-140deg); } &.future { transform-origin: top; transform: rotateX(140deg); } } } //swing from front to back [data-effeckt-type="twist"] { perspective: 400px; perspective-origin: 50% 50%; li { transition: all $effeckt-list-scroll-transition-duration ease, opacity $effeckt-list-scroll-transition-duration/2 ease; transform-origin: center; &.past, &.future { opacity: 0; } &.past { transform: rotateY(-180deg); } &.future { transform: rotateY(180deg); } } } //open door effect [data-effeckt-type="door"] { perspective: 400px; perspective-origin: 50% 50%; li { transition: all $effeckt-list-scroll-transition-duration ease, opacity $effeckt-list-scroll-transition-duration/2 ease; transform-origin: 0% 0%; &.past, &.future { opacity: 0; transform: rotateY(-90deg); } } } //climb effect [data-effeckt-type="climb"] { perspective: 400px; perspective-origin: 50% 50%; li { transition: all $effeckt-list-scroll-transition-duration ease, opacity $effeckt-list-scroll-transition-duration/2 ease; transform-origin: 0% 0%; &.past { transform: translateY(-200%); } &.future { transform: translateY(200%); } } } ================================================ FILE: scss/modules/modal.scss ================================================ @import "../_variables"; //------------------------------------------------------------ // Modal Effects // Some Based on https://github.com/daneden/animate.css // // Rewritten for effeckts project //------------------------------------------------------------ // Modal itself .effeckt-modal-wrap { // Line that causes blur // But would be **SUPER RAD** if we could use so modals are centered no matter what author does // transform: translate(-50%, -50%); // Possible blur fix // https://twitter.com/iamwarry/status/354595007937789954 // Problems: // 1) Autoprefixer (?) garbles this to -webkit-transform: translate(-webkit-calc(-50%1px), -webkit-calc(-50%1px)); // 2) Safari just doesn't allow it even when syntax is right. // 3) It doesn't always work. Still blurry = http://cl.ly/QVGo ; Sharp = http://cl.ly/QUgo position: fixed; // Sizing with sloppy centering so at least not blurry top: 50%; left: 50%; max-width: $effeckt-modal-max-width; min-width: $effeckt-modal-min-width; transform: translate(-50%, -50%); z-index: $effeckt-modal-z-index; visibility: hidden; backface-visibility: hidden; } .effeckt-modal-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; visibility: hidden; opacity: 0; transition-duration: $effeckt-modal-transition-duration; } .effeckt-show.effeckt-modal-wrap { visibility: visible; ~ .effeckt-modal-overlay { visibility: visible; opacity: 1; } } .effeckt-modal { transition-property: all; transition-duration: $effeckt-modal-transition-duration; transition-timing-function: cubic-bezier(.4, 0, 0, 1.5); animation-duration: $effeckt-modal-animation-duration; animation-fill-mode: forwards; animation-timing-function: cubic-bezier(.4, 0, 0, 1.5); } @import "../effeckts/modals/scale"; @import "../effeckts/modals/slide"; @import "../effeckts/modals/3ds"; @import "../effeckts/modals/misc"; ================================================ FILE: scss/modules/off-screen-nav.scss ================================================ @import "../_variables"; // TODO: translateX(-260px) or translateY(-260px) need to be nav size // this need to be handle by JS or CSS Variable // Nav Overlay .effeckt-off-screen-nav { ~ [data-effeckt-page].effeckt-page-active:after { position: absolute; top: 0; left: 0; width: 100%; height: 100%; content: ""; background: rgba(0, 0, 0, 0.2); opacity: 0; visibility: hidden; transition: $effeckt-off-screen-navigation-transition-duration; } &.effeckt-show { ~ [data-effeckt-page].effeckt-page-active:after { opacity: 1; visibility: visible; } } } // 1 Left Overlay .effeckt-off-screen-nav-left-overlay { transform: translateX(-100%); transition: $effeckt-off-screen-navigation-transition-duration cubic-bezier(.09,.68,0,.99); &.effeckt-show { transform: translateX(0); } } // 2 Left Push .effeckt-off-screen-nav-left-push { // Needs to be fixed size so .page-wrap can move same distance transform: translateX(-12rem); transition: $effeckt-off-screen-navigation-transition-duration; &.effeckt-show { transform: translateX(0); ~ [data-effeckt-page].effeckt-page-active { transform: translateX(12rem); } } ~ [data-effeckt-page].effeckt-page-active { transition: $effeckt-off-screen-navigation-transition-duration; transform: translateX(0); } } // 3 Left Reveal .effeckt-off-screen-nav-left-reveal { // Needs to be fixed size so .page-wrap can move same distance width: 0px; transform: translate3D(0, 0, 0); transition: $effeckt-off-screen-navigation-transition-duration; & h4 { width: 10rem; } &.effeckt-show { width: 12rem; transform: translateX(0); ~ [data-effeckt-page] { transform: translateX(12rem); } } ~ [data-effeckt-page] { transition: $effeckt-off-screen-navigation-transition-duration; } } // 4 Left Squeeze .effeckt-off-screen-nav-left-squeeze { // Needs to be percentage so can be equal parts with .page-wrap width: 40%; transform: translateX(-100%); transition: $effeckt-off-screen-navigation-transition-duration; &.effeckt-show { transform: translateX(0); ~ [data-effeckt-page] { width: 60%; } } ~ [data-effeckt-page] { float: right; transition: width $effeckt-off-screen-navigation-transition-duration; max-width: none; // reset from demo } } // 5 Right Overlay .effeckt-off-screen-nav-right-overlay { right: 0; left: auto; transform: translateX(100%); transition: $effeckt-off-screen-navigation-transition-duration cubic-bezier(.09, .68, 0, .99); &.effeckt-show { transform: translateX(0); } } // 6 Right Push .effeckt-off-screen-nav-right-push { // Needs to be fixed size so .page-wrap can move same distance left: auto; right: 0; transform: translateX(12rem); transition: $effeckt-off-screen-navigation-transition-duration; &.effeckt-show { transform: translateX(0); ~ [data-effeckt-page] { transform: translateX(-12rem); } } ~ [data-effeckt-page] { transition: $effeckt-off-screen-navigation-transition-duration; } } // 7 Right Reveal .effeckt-off-screen-nav-right-reveal { // Needs to be fixed size so .page-wrap can move same distance width: 0; overflow: hidden; left: auto; right: 0; transform: translate3D(0, 0, 0); transition: $effeckt-off-screen-navigation-transition-duration; & h4 { width: 10rem; position: absolute; top: 0px; right: 0; } & ul { width: 12rem; position: absolute; top: 3.2rem; right: 0; } &.effeckt-show { width: 12rem; ~ [data-effeckt-page] { transform: translateX(-12rem); } } ~ [data-effeckt-page] { transition: $effeckt-off-screen-navigation-transition-duration; } } // 8 Right Squeeze .effeckt-off-screen-nav-right-squeeze { // Needs to be percentage so can be equal parts with .page-wrap left: auto; right: 0; width: 40%; transform: translateX(100%); transition: $effeckt-off-screen-navigation-transition-duration; &.effeckt-show { transform: translateX(0); ~ [data-effeckt-page] { width: 60%; } } ~ [data-effeckt-page] { float: left; transition: width $effeckt-off-screen-navigation-transition-duration; max-width: none; // reset from demo } } // 9 Rotate from Left .effeckt-off-screen-nav-left-rotate { transform-origin: 100% 50%; transition: $effeckt-off-screen-navigation-transition-duration; transform: translateX(-100%) scale(1.01) rotateY(-30deg); ~ [data-effeckt-page].effeckt-page-active { transform-origin: 0 50%; transition: $effeckt-off-screen-navigation-transition-duration; } ~ .effeckt-overlay { z-index:900; visibility: visible; opacity: 1; } &.effeckt-show { transform: none; ~ [data-effeckt-page].effeckt-page-active { transform: translateX(260px) rotateY(15deg); // Prevent scrolling overflow: hidden; &:after { background: none; } } // dont nest > 3 levels deep ~ [data-effeckt-page] .off-screen-nav-cover { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } } } // 10 Top Overlay .effeckt-off-screen-nav-top-overlay { width: 100%; bottom:auto; transition: $effeckt-off-screen-navigation-transition-duration; transform: translateY(-100%); &.effeckt-show { visibility: visible; transform: translateY(0%); } } // 11 Bottom Overlay .effeckt-off-screen-nav-bottom-overlay { width: 100%; top:auto; transition: $effeckt-off-screen-navigation-transition-duration; transform: translateY(100%); &.effeckt-show { transform: translateY(0%); } } // 12.1 Top Bounce .effeckt-off-screen-nav-top-bounce { width: 100%; bottom:auto; transition: $effeckt-off-screen-navigation-transition-duration; &.effeckt-show { visibility: visible; animation: navFromTopBounceIn $effeckt-off-screen-navigation-transition-duration both ease; } &.effeckt-hide { animation: navFromTopBounceOut $effeckt-off-screen-navigation-transition-duration both ease; } } // 12.2 Top Bounce Out Only .effeckt-off-screen-nav-top-bounce-out { width: 100%; bottom:auto; transform: translateY(-100%); transition: $effeckt-off-screen-navigation-transition-duration; &.effeckt-show { visibility: visible; transform: translateY(0%); } &.effeckt-hide { animation: navFromTopBounceOut $effeckt-off-screen-navigation-transition-duration both ease; } } @keyframes navFromTopBounceIn { 0% { transform: translateY(-100%); } 20% { padding-top: 0px; transform: translateY(0%); } 60% { padding-top: 20px; } 100% { padding-top: 0; } } @keyframes navFromTopBounceOut { 0% { transform: translateY(0%); padding-top: 0px; } 40%{ transform: translateY(0%); padding-top: 20px; } 80%{ padding-top: 0px; } 90%, 100%{ transform: translateY(-100%); } } // 13.1 Bottom Bounce .effeckt-off-screen-nav-bottom-bounce { width: 100%; top:auto; transition: $effeckt-off-screen-navigation-transition-duration; &.effeckt-show { animation: navFromBottomBounceIn $effeckt-off-screen-navigation-transition-duration both ease; } &.effeckt-hide { animation: navFromBottomBounceOut $effeckt-off-screen-navigation-transition-duration both ease; } } // 13.2 Bottom Bounce Out Only .effeckt-off-screen-nav-bottom-bounce-out { width: 100%; top:auto; transform: translateY(100%); transition: $effeckt-off-screen-navigation-transition-duration; &.effeckt-show { transform: translateY(0%); } &.effeckt-hide { animation: navFromBottomBounceOut $effeckt-off-screen-navigation-transition-duration both ease; } } @keyframes navFromBottomBounceIn { 0% { transform: translateY(100%); } 20% { padding-bottom: 0px; transform: translateY(0%); } 60% { padding-bottom: 20px; } 100% { padding-bottom: 0; } } @keyframes navFromBottomBounceOut { 0% { transform: translateY(0%); padding-bottom: 0px; } 40%{ transform: translateY(0%); padding-bottom: 20px; } 80%{ padding-bottom: 0; } 90%, 100%{ transform: translateY(100%); } } // 14 Push Top .effeckt-off-screen-nav-push-top { width: 100%; bottom:auto; transition: $effeckt-off-screen-navigation-transition-duration; transform: translateY(-100%); &.effeckt-show { visibility: visible; transform: translateY(0%); ~ [data-effeckt-page] { transform: translateY(12rem); } } ~ [data-effeckt-page] { transition: $effeckt-off-screen-navigation-transition-duration; } } // 15 Push Bottom .effeckt-off-screen-nav-push-bottom { width: 100%; top:auto; transition: $effeckt-off-screen-navigation-transition-duration; transform: translateY(100%); &.effeckt-show { visibility: visible; transform: translateY(0%); ~ [data-effeckt-page] { transform: translateY(-12rem); } } ~ [data-effeckt-page] { transition: $effeckt-off-screen-navigation-transition-duration; } } // 16 Rotate from Right .effeckt-off-screen-nav-right-rotate { left: auto; right: 0; transform-origin: 100% 50%; transition: $effeckt-off-screen-navigation-transition-duration; transform: rotateY(30deg) translateX(100%) scale(1.01); ~ [data-effeckt-page] { transform-origin: 100% 50%; transition: $effeckt-off-screen-navigation-transition-duration; } ~ .effeckt-overlay { z-index:900; visibility: visible; opacity: 1; } &.effeckt-show { transform: none; ~ [data-effeckt-page] { transform: translateX(-260px) rotateY(-15deg); // Prevent scrolling overflow: hidden; &:after { background: none; } } // dont nest > 3 levels deep ~ [data-effeckt-page] .off-screen-nav-cover { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } } } // 17 Card Deck From Top .effeckt-off-screen-nav-top-card-deck { perspective: 800px; bottom: auto; transform: translateY(-100%); width: 100%; overflow:visible; transition: transform $effeckt-off-screen-navigation-transition-duration/2; &.effeckt-show { transform: translateY(0%); } h4 { position: relative; z-index: 300; backface-visibility: hidden; transform-style: preserve-3d; transform-origin: 50% 0%; transition: all $effeckt-off-screen-navigation-transition-duration/2 ease-out; display:block; &:active { transform: rotateX(60deg); } } ul { position: absolute; width: 100%; height: 100%; top: 0; margin:0; li { transition: all $effeckt-off-screen-navigation-transition-duration/2 ease-out; position: absolute; top: 0; z-index: 0; width:100%; height:100%; transform: translateY(0px); } } } // 18 Card Deck From Bottom .effeckt-off-screen-nav-bottom-card-deck { perspective: 800px; top: auto; transform: translateY(100%); width: 100%; overflow:visible; transition: transform $effeckt-off-screen-navigation-transition-duration/2; &.effeckt-show { transform: translateY(0%); } h4 { position: relative; z-index: 300; backface-visibility: hidden; transform-style: preserve-3d; transform-origin: 50% 100%; transition: all $effeckt-off-screen-navigation-transition-duration/2 ease-out; display:block; &:active { transform: rotateX(-60deg); } } ul { position: absolute; width: 100%; height: 100%; bottom: 0; margin:0; li { transition: all $effeckt-off-screen-navigation-transition-duration/2 ease-out; position: absolute; top: 0; z-index: 0; width:100%; height:100%; transform: translateY(300px); } } } // 19.1 Left Bounce .effeckt-off-screen-nav-left-bounce { transition: $effeckt-off-screen-navigation-transition-duration; transform: translateX(-100%); &.effeckt-show { visibility: visible; transform: translateX(0%); animation: navFromLeftBounceIn $effeckt-off-screen-navigation-transition-duration both ease; } &.effeckt-hide { transform: translateX(-100%); animation: navFromLeftBounceOut $effeckt-off-screen-navigation-transition-duration both ease; } } @keyframes navFromLeftBounceIn { 0% { transform: translateX(-100%); } 20% { padding-left: 0px; transform: translateX(0%); } 60% { padding-left: 20px; } 100% { padding-left: 0px; } } @keyframes navFromLeftBounceOut { 0% { transform: translateX(0%); padding-left: 0px; } 40%{ transform: translateX(0%); padding-left: 20px; } 80%{ padding-left: 0px; } 90%, 100%{ transform: translateX(-100%); } } // 19.2 Left Bounce Out Only .effeckt-off-screen-nav-left-bounce-out { transform: translateX(-100%); transition: $effeckt-off-screen-navigation-transition-duration; &.effeckt-show { visibility: visible; transform: translateY(0%); } &.effeckt-hide { animation: navFromLeftBounceOut $effeckt-off-screen-navigation-transition-duration both ease; } } // 20.1 Right Bounce .effeckt-off-screen-nav-right-bounce { left: auto; right: 0; transition: $effeckt-off-screen-navigation-transition-duration; &.effeckt-show { visibility: visible; animation: navFromRightBounceIn $effeckt-off-screen-navigation-transition-duration both ease; } &.effeckt-hide { animation: navFromRightBounceOut $effeckt-off-screen-navigation-transition-duration both ease; } } @keyframes navFromRightBounceIn { 0% { transform: translateX(100%); } 20% { padding-right: 0px; transform: translateX(0%); } 60% { padding-right: 20px; } 100% { padding-right: 0px; } } @keyframes navFromRightBounceOut { 0% { transform: translateX(0%); padding-right: 0px; } 40%{ transform: translateX(0%); padding-right: 20px; } 80%{ padding-right: 0px; } 90%, 100%{ transform: translateX(100%); } } // 20.2 Left Bounce Out Only .effeckt-off-screen-nav-right-bounce-out { left: auto; right: 0; transform: translateX(100%); transition: $effeckt-off-screen-navigation-transition-duration; &.effeckt-show { visibility: visible; transform: translateY(0%); } &.effeckt-hide { animation: navFromRightBounceOut $effeckt-off-screen-navigation-transition-duration both ease; } } // 21 Rotate from Bottom .effeckt-off-screen-nav-bottom-rotate { top: auto; width: 100%; transform-origin: 100% 50%; transition: $effeckt-off-screen-navigation-transition-duration; transform: translateY(100%) scale(1.01) rotateX(-30deg); ~ [data-effeckt-page].effeckt-page-active { transform-origin: 0% 100%; transition: $effeckt-off-screen-navigation-transition-duration; } ~ .effeckt-overlay { z-index:900; visibility: visible; opacity: 1; } &.effeckt-show { transform: none; ~ [data-effeckt-page].effeckt-page-active { transform: translateY(-260px) rotateX(15deg); // Prevent scrolling overflow: hidden; &:after { background: none; } } // dont nest > 3 levels deep ~ [data-effeckt-page] .off-screen-nav-cover { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } } } // 22 Rotate from Top .effeckt-off-screen-nav-top-rotate { bottom: auto; width: 100%; transform-origin: 50% 0%; transition: $effeckt-off-screen-navigation-transition-duration; transform: translateY(-100%) scale(1.01) rotateX(30deg); ~ [data-effeckt-page].effeckt-page-active { transform-origin: 100% 0%; transition: $effeckt-off-screen-navigation-transition-duration; } ~ .effeckt-overlay { z-index:900; visibility: visible; opacity: 1; } &.effeckt-show { transform: none; ~ [data-effeckt-page].effeckt-page-active { transform: translateY(260px) rotateX(-15deg); // Prevent scrolling overflow: hidden; &:after { background: none; } } // dont nest > 3 levels deep ~ [data-effeckt-page] .off-screen-nav-cover { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } } } // 23 Minimize then reveal // based on left-reveal (2) and Rotate from Top (22) @mixin minimize-reveal-list-items-hidden { li, h4 { transition: $effeckt-off-screen-navigation-transition-duration cubic-bezier(.16,.86,.33,.97); transform: translateX(5%); opacity: 0; } } @mixin minimize-reveal-list-items-fade { transform: translateX(0); opacity: 1; } @mixin minimize-reveal-list-items-shown { h4 { @include minimize-reveal-list-items-fade(); //fade in header first. transition-delay: $effeckt-off-screen-navigation-transition-duration; } @for $i from 1 through $effeckt-off-screen-navigation-list-item-amount { li:nth-child(#{$i}) { @include minimize-reveal-list-items-fade(); //wait until the header has finished transition-delay: $effeckt-off-screen-navigation-transition-duration * 2 + $effeckt-off-screen-navigation-transition-duration * $i * 0.25; } } } .effeckt-off-screen-nav-minimize-reaveal { width: 100%; transition: $effeckt-off-screen-navigation-transition-duration; // padding-right: 35%; ~ [data-effeckt-page].effeckt-page-active { transition: $effeckt-off-screen-navigation-transition-duration; box-shadow: 0px 0px 50px #CACACA; z-index: 1000; } @include minimize-reveal-list-items-hidden(); &.effeckt-show { @include minimize-reveal-list-items-shown(); ~ [data-effeckt-page].effeckt-page-active { transition: $effeckt-off-screen-navigation-transition-duration * 1.5 cubic-bezier(.16,.86,.33,.97); transform: translateX(50%) scale3d(0.5,0.5,1); overflow: hidden; } // dont nest > 3 levels deep ~ [data-effeckt-page] .off-screen-nav-cover { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } } } .effeckt-off-screen-nav-minimize-flip { width: 100%; transition: $effeckt-off-screen-navigation-transition-duration; // padding-right: 35%; ~ [data-effeckt-page].effeckt-page-active { transition: $effeckt-off-screen-navigation-transition-duration; box-shadow: 0px 0px 50px #CACACA; z-index: 1000; } @include minimize-reveal-list-items-hidden(); &.effeckt-show { @include minimize-reveal-list-items-shown(); ~ [data-effeckt-page].effeckt-page-active { transition: $effeckt-off-screen-navigation-transition-duration * 1.5 cubic-bezier(.16,.86,.33,.97); transform: translateX(50%) rotateY(-15deg) scale3d(0.5,0.5,1); overflow: hidden; } // dont nest > 3 levels deep ~ [data-effeckt-page] .off-screen-nav-cover { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } } } ================================================ FILE: scss/modules/page-transitions.scss ================================================ //------------------------------------------------------------ // Page Transitions // Based on http://tympanus.net/Development/PageTransitions/ // // Rewritten for effeckts project //------------------------------------------------------------ @import "../_variables"; [data-effeckt-page] { position: relative; top:0; left:0; width: 100%; height: 100%; -webkit-overflow-scrolling: touch; overflow-x: hidden; visibility: hidden; z-index:0; padding: 2rem 4rem 0; backface-visibility: hidden; transform: translate3d(0, 0, 0); transform-style: preserve-3d; display: none; &.effeckt-page-active { display: block; visibility: visible; z-index:10; } &.effeckt-page-animating { overflow: hidden; z-index: 100; position: absolute; } } //----------------------------------------------------- // Slide's Classes //----------------------------------------------------- // Slide From/To Left [data-effeckt-page].slide-from-left { animation: slideFromLeft $effeckt-page-transition-duration forwards ease-in-out; } [data-effeckt-page].slide-to-left { animation: slideToLeft $effeckt-page-transition-duration forwards ease-in-out; } // Slide From/To Right [data-effeckt-page].slide-from-right { animation: slideFromRight $effeckt-page-transition-duration forwards ease-in-out; } [data-effeckt-page].slide-to-right { animation: slideToRight $effeckt-page-transition-duration forwards ease-in-out; } // Slide From/To Top [data-effeckt-page].slide-from-top { animation: slideFromTop $effeckt-page-transition-duration forwards ease-in-out; } [data-effeckt-page].slide-to-top { animation: slideToTop $effeckt-page-transition-duration forwards ease-in-out; } // Slide From/To Bottom [data-effeckt-page].slide-from-bottom { animation: slideFromBottom $effeckt-page-transition-duration forwards ease-in-out; } [data-effeckt-page].slide-to-bottom { animation: slideToBottom $effeckt-page-transition-duration forwards ease-in-out; } // Scale Up From Behind [data-effeckt-page].scale-up-from-behind { animation: scaleUpFromBehind $effeckt-page-transition-duration forwards ease-in-out; @extend .animation-delay-300; } //----------------------------------------------------- // Scale's Classes //----------------------------------------------------- // Scale Up To Front [data-effeckt-page].scale-up-to-front { animation: scaleUpToFront $effeckt-page-transition-duration forwards ease-in-out; &.effeckt-page-animating { @extend .page-on-top; } } // Scale Down To Behind [data-effeckt-page].scale-down-to-behind { animation: scaleDownToBehind $effeckt-page-transition-duration forwards ease-in-out; } // Scale Down From Front [data-effeckt-page].scale-down-from-front { animation: scaleDownFromFront $effeckt-page-transition-duration forwards ease-in-out; @extend %animation-delay-300; &.effeckt-page-animating { @extend .page-on-top; } } // Scale Down Slide To Left [data-effeckt-page].scale-down-slide-to-left { animation: scaleDownSlideToLeft $effeckt-page-transition-duration * 2 forwards ease-in-out; } // Scale Down Slide From Right [data-effeckt-page].scale-down-slide-from-right { animation: scaleDownSlideFromRight $effeckt-page-transition-duration * 2 forwards ease-in-out; } // Scale Down Slide From Left [data-effeckt-page].scale-down-slide-from-left { animation: scaleDownSlideFromLeft $effeckt-page-transition-duration * 2 forwards ease-in-out; } // Scale Down Slide To Right [data-effeckt-page].scale-down-slide-to-right { animation: scaleDownSlideToRight $effeckt-page-transition-duration * 2 forwards ease-in-out; } // Scale Down Slide From Top [data-effeckt-page].scale-down-slide-from-top { animation: scaleDownSlideFromTop $effeckt-page-transition-duration * 2 forwards ease-in-out; } // Scale Down Slide To Bottom [data-effeckt-page].scale-down-slide-to-bottom { animation: scaleDownSlideToBottom $effeckt-page-transition-duration * 2 forwards ease-in-out; } // Scale Down Slide From Bottom [data-effeckt-page].scale-down-slide-from-bottom { animation: scaleDownSlideFromBottom $effeckt-page-transition-duration * 2 forwards ease-in-out; } // Scale Down Slide To Top [data-effeckt-page].scale-down-slide-to-top { animation: scaleDownSlideToTop $effeckt-page-transition-duration * 2 forwards ease-in-out; } //----------------------------------------------------- // Rotate's Classes //----------------------------------------------------- // Rotate to Behind [data-effeckt-page].rotate-to-behind { transform-origin: -50% 50%; animation: rotateToBehind $effeckt-page-transition-duration/2 both ease-in; } // Rotate to Front [data-effeckt-page].rotate-to-front { transform-origin: 150% 50%; animation: rotateToFront $effeckt-page-transition-duration/2 both ease-out; } //----------------------------------------------------- // Flip's Classes //----------------------------------------------------- // Flip to Right [data-effeckt-page].flip-to-right-front { backface-visibility: hidden; animation: flipToRightBack $effeckt-page-transition-duration forwards ease; } [data-effeckt-page].flip-to-right-back { backface-visibility: hidden; animation: flipToRight $effeckt-page-transition-duration forwards ease; } // Flip to Left [data-effeckt-page].flip-to-left-front { backface-visibility: hidden; animation: flipToLeftBack $effeckt-page-transition-duration forwards ease; } [data-effeckt-page].flip-to-left-back { backface-visibility: hidden; animation: flipToLeft $effeckt-page-transition-duration forwards ease; } // Flip to Top [data-effeckt-page].flip-to-top-front { backface-visibility: hidden; animation: flipToTopBack $effeckt-page-transition-duration forwards ease; } [data-effeckt-page].flip-to-top-back { backface-visibility: hidden; animation: flipToTop $effeckt-page-transition-duration forwards ease; } // Flip to Bottom [data-effeckt-page].flip-to-bottom-front { backface-visibility: hidden; animation: flipToBottomBack $effeckt-page-transition-duration forwards ease; } [data-effeckt-page].flip-to-bottom-back { backface-visibility: hidden; animation: flipToBottom $effeckt-page-transition-duration forwards ease; } //----------------------------------------------------- // Animations //----------------------------------------------------- // Slides Animations @keyframes slideFromTop { from { transform: translateY(-100%); } } @keyframes slideToTop { to { transform: translateY(-100%); } } @keyframes slideFromRight { from { transform: translateX(100%); } } @keyframes slideToRight { to { transform: translateX(100%); } } @keyframes slideFromBottom { from { transform: translateY(100%); } } @keyframes slideToBottom { to { transform: translateY(100%); } } @keyframes slideFromLeft { from { transform: translateX(-100%); } } @keyframes slideToLeft { to { transform: translateX(-100%); } } // Scale Animations @keyframes scaleUpFromBehind { from { opacity:0; transform: scale(0.5); } } @keyframes scaleUpToFront { to { opacity:0; transform: scale(1.3); } } @keyframes scaleDownToBehind { to { opacity: 0; transform: scale(0.5); } } @keyframes scaleDownFromFront { from { opacity: 0; transform: scale(1.3); } to { opacity:1; } } // Scale Down Slide Animations @keyframes scaleDownSlideToLeft { 25% { opacity: .5; transform: translateZ(-500px); } 75% { opacity: .5; transform: translateZ(-500px) translateX(-200%); } 100% { opacity: .5; transform: translateZ(-500px) translateX(-200%); } } @keyframes scaleDownSlideFromRight { 0%, 25% { opacity: .5; transform: translateZ(-500px) translateX(200%); } 75% { opacity: .5; transform: translateZ(-500px); } 100% { opacity: 1; transform: translateZ(0) translateX(0); } } @keyframes scaleDownSlideFromLeft { 0%, 25% { opacity: .5; transform: translateZ(-500px) translateX(-200%); } 75% { opacity: .5; transform: translateZ(-500px); } 100% { opacity: 1; transform: translateZ(0) translateX(0%); } } @keyframes scaleDownSlideToRight { 25% { opacity: .5; transform: translateZ(-500px); } 75% { opacity: .5; transform: translateZ(-500px) translateX(200%); } 100% { opacity: .5; transform: translateZ(-500px) translateX(200%); } } @keyframes scaleDownSlideFromTop { 0%, 25% { opacity: .5; transform: translateZ(-500px) translateY(-200%); } 75% { opacity: .5; transform: translateZ(-500px); } 100% { opacity: 1; transform: translateZ(0) translateY(0%); } } @keyframes scaleDownSlideToBottom { 25% { opacity: .5; transform: translateZ(-500px); } 75% { opacity: .5; transform: translateZ(-500px) translateY(200%); } 100% { opacity: .5; transform: translateZ(-500px) translateY(200%); } } @keyframes scaleDownSlideFromBottom { 0%, 25% { opacity: .5; transform: translateZ(-500px) translateY(200%); } 75% { opacity: .5; transform: translateZ(-500px); } 100% { opacity: 1; transform: translateZ(0) translateY(0%); } } @keyframes scaleDownSlideToTop { 25% { opacity: .5; transform: translateZ(-500px); } 75% { opacity: .5; transform: translateZ(-500px) translateY(-200%); } 100% { opacity: .5; transform: translateZ(-500px) translateY(-200%); } } // Rotate Animations @keyframes rotateToBehind { to { opacity: 0; transform: translateZ(-500px) rotateY(90deg); } } @keyframes rotateToFront { from { opacity: 0; transform: translateZ(-500px) rotateY(-90deg); } } // Flip Animations @keyframes flipToRight { to { transform: rotateY(180deg); } } @keyframes flipToRightBack { from { transform: rotateY(-180deg); } } @keyframes flipToLeft { to { transform: rotateY(-180deg); } } @keyframes flipToLeftBack { from { transform: rotateY(180deg); } } @keyframes flipToTop { to { transform: rotateX(180deg); } } @keyframes flipToTopBack { from { transform: rotateX(-180deg); } } @keyframes flipToBottom { to { transform: rotateX(-180deg); } } @keyframes flipToBottomBack { from { transform: rotateX(180deg); } } //----------------------------------------------------- // Utils Classes // If you want to use it againts normal definition //----------------------------------------------------- // Make this page on top .page-on-top { z-index:999; } // Animation Delay Classes .animation-delay-100 { animation-delay: .100s; } .animation-delay-200 { animation-delay: .200s; } .animation-delay-300 { animation-delay: .300s; } .animation-delay-500 { animation-delay: .500s; } .animation-delay-700 { animation-delay: .700s; } .animation-delay-1000 { animation-delay: 1000s; } ================================================ FILE: scss/modules/positional-modals.scss ================================================ @import "../_variables"; // TODO // - use more variables .effeckt-positional-modal-wrap { position: absolute; z-index: 10; display: none; &.effeckt-front { z-index: 20; } } .effeckt-positional-modal-wrap { &[data-effeckt-position="above"] { margin-top: -15px; .effeckt-modal { &:before { content: ""; position: absolute; top: 100%; left: 50%; width: 0; height: 0; margin-left: -10px; border-top: 10px solid #ccc; border-right: 10px solid transparent; border-left: 10px solid transparent; } } } &[data-effeckt-position="below"] { margin-top: 15px; .effeckt-modal { &:before { content: ""; position: absolute; bottom: 100%; left: 50%; width: 0; height: 0; margin-left: -10px; border-bottom: 10px solid #ccc; border-right: 10px solid transparent; border-left: 10px solid transparent; } } } &[data-effeckt-position="right"] { margin-left: 15px; .effeckt-modal { &:before { content: ""; position: absolute; top: 50%; right: 100%; width: 0; height: 0; margin-top: -10px; border-top: 10px solid transparent; border-bottom: 10px solid transparent; border-right: 10px solid #ccc; } } } &[data-effeckt-position="left"] { margin-left: -15px; .effeckt-modal { &:before { content: ""; position: absolute; top: 50%; left: 100%; width: 0; height: 0; margin-top: -10px; border-top: 10px solid transparent; border-bottom: 10px solid transparent; border-left: 10px solid #ccc; } } } } ================================================ FILE: scss/modules/tabs.scss ================================================ @import "../_variables"; .effeckt-tabs-wrap { position: relative; ul.effeckt-tabs { overflow: hidden; // used to be clearfix } .effeckt-tabs-container { position: relative; transition: all $effeckt-tabs-transition-duration ease-in-out; .effeckt-tab-content { position: absolute; transition: all $effeckt-tabs-transition-duration/2 ease-in-out; } } &[data-effeckt-type='scale'] { .effeckt-tab-content { &.effeckt-hide { transform: scale(0.9); opacity:0; } &.effeckt-show { transform: scale(1); transition-delay: 0.3s; opacity: 1; } } } &[data-effeckt-type='scale-up'] { .effeckt-tab-content { &.effeckt-hide { transform: scale(1.1); opacity:0; } &.effeckt-show { transform: scale(1); transition-delay: 0.3s; opacity: 1; } } } &[data-effeckt-type='slide-left'] { .effeckt-tabs-container{ overflow:hidden; .effeckt-tab-content { &.effeckt-hide { transform: translateX(-100%); opacity:0; } &.effeckt-show { transform: translateX(0%); transition-delay: 0.3s; opacity: 1; } } } } &[data-effeckt-type='slide-right'] { .effeckt-tabs-container{ overflow:hidden; .effeckt-tab-content { &.effeckt-hide { transform: translateX(100%); opacity:0; } &.effeckt-show { transform: translateX(0%); transition-delay: 0.3s; opacity: 1; } } } } &[data-effeckt-type='slide-up'] { .effeckt-tabs-container{ overflow:hidden; .effeckt-tab-content { &.effeckt-hide { transform: translateY(-100%); opacity:0; } &.effeckt-show { transform: translateY(0%); transition-delay: 0.3s; opacity: 1; } } } } &[data-effeckt-type='slide-down'] { .effeckt-tabs-container{ overflow:hidden; .effeckt-tab-content { &.effeckt-hide { transform: translateY(100%); opacity:0; } &.effeckt-show { transform: translateX(0%); transition-delay: 0.3s; opacity: 1; } } } } &[data-effeckt-type='flip'] { .effeckt-tabs-container{ overflow:hidden; .effeckt-tab-content { &.effeckt-hide { transform: rotateY(-90deg) scale(1.1); opacity:0; } &.effeckt-show { transform: rotateY(0deg) scale(1); transition-delay: 0.3s; opacity: 1; } } } } } ================================================ FILE: scss/modules/tooltips.scss ================================================ // TODO // Use variables where we can in here // Adjust position based on $effeckt-tooltip-arrow-size @import "../_variables"; // Basic .effeck-tooltip .effeckt-tooltip[data-effeckt-tooltip-text] { position: relative; // make tooltip text to be always on the same line // this prevent out of position tooltip display: inline-block; &::before, &::after { opacity: 0; transition: $effeckt-tooltip-transition-delay; // no delay on hover off } &:hover::before, &:hover::after { visibility: visible; opacity: 1; transition: $effeckt-tooltip-transition-delay $effeckt-tooltip-transition-duration; // slight delay on hover on } } // tooltip bubble .effeckt-tooltip[data-effeckt-type="bubble"]{ &::after { // text of tooltip content: attr(data-effeckt-tooltip-text); position: absolute; border-radius: 10px; background: $effeckt-tooltip-background; color: $effeckt-tooltip-forground; padding: 0.45rem 0.8rem; font-size: 90%; white-space: nowrap; visibility: hidden; // makes un-hoverable when hidden (opacity alone doesn't work) z-index: 2; //prevent collapse between another tooltip } &::before { // triangle / speech bubble arrow content: ""; width: 0; height: 0; position: absolute; } } // bubble top and bottom .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="top"], .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="bottom"] { &::after { transform: translateX(-50%); // horizontal centering left:50%; } &:before { left: 50%; margin-left: -5px; } } // bubble orientation top .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="top"] { &::after, &::before { bottom: 125%; } &::before { border-top: $effeckt-tooltip-arrow-size solid $effeckt-tooltip-background; border-left: $effeckt-tooltip-arrow-size solid transparent; border-right: $effeckt-tooltip-arrow-size solid transparent; margin-bottom: -($effeckt-tooltip-arrow-size - 1); // one less pixel to prevent occational 1px gap } &:hover::before, &:hover::after { bottom: 115%; } } // bubble orientation bottom .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="bottom"] { &::after, &::before { top: 125%; } &::before { border-bottom: $effeckt-tooltip-arrow-size solid $effeckt-tooltip-background; border-left: $effeckt-tooltip-arrow-size solid transparent; border-right: $effeckt-tooltip-arrow-size solid transparent; margin-top: -($effeckt-tooltip-arrow-size - 1); // one less pixel to prevent occational 1px gap } &:hover::before, &:hover::after { top: 115%; } } // bubble top and bottom .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="right"], .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="left"] { &::after, &:before { top:45%; transform: translateY(-45%); // half font-size size margin-top:2px; } } // bubble orientation right .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="right"] { &::after, &::before { left: 115%; } &::before { border-right: $effeckt-tooltip-arrow-size solid $effeckt-tooltip-background; border-top: $effeckt-tooltip-arrow-size solid transparent; border-bottom: $effeckt-tooltip-arrow-size solid transparent; margin-left: -($effeckt-tooltip-arrow-size - 1); // one less pixel to prevent occational 1px gap } &:hover::before, &:hover::after { left: 105%; } } // bubble orientation left .effeckt-tooltip[data-effeckt-type="bubble"][data-effeckt-position="left"] { &::after, &::before { right: 115%; } &::before { border-left: $effeckt-tooltip-arrow-size solid $effeckt-tooltip-background; border-top: $effeckt-tooltip-arrow-size solid transparent; border-bottom: $effeckt-tooltip-arrow-size solid transparent; margin-right: -($effeckt-tooltip-arrow-size - 1); // one less pixel to prevent occational 1px gap } &:hover::before, &:hover::after { right: 105%; } } ================================================ FILE: src/templates/layouts/layout.hbs ================================================ Effeckt.css
      Work in Progress! Not quite ready for prime-time
      {{> off-screen-nav}} {{> page-transition}} {{> modal}}

      E f f e c k t
      . c s s

      Performant CSS transitions & animations on GitHub {{>body}}

      About

      Ever notice how small flourishes and subtle transitions dramatically increases the value of the experience you enjoy with an app or site?

      Designing and developing UIs for the mobile web is tricky, but it's extremely difficult to do that while delivering something that performs at 60fps. The best opportunities to getting jank-free transitions on phones/tablets are CSS transition and keyframe animation based, especially tapping into hardware-accelerated transforms and opacity changes.

      This library has a few goals:

      1. It provides very little UI of its own. It's only hooks for transitions/animations.
      2. Designer-curated set of classy and reasonable effects. (no easeInBounce)
      3. Establish browser support guidelines (e.g. Android 2.3 would gracefully degrade)
      4. CSS performance regression testing (a la bench.topcoat.io)
      5. Deliver jank-free 60fps performance on target browsers/devices
      6. If a particular effect cannot deliver target performance (hey blur() CSS filter), it cannot be included.
      7. Guidelines on what to avoid when styling these affected elements (avoid expensive CSS)
      8. Deliver a builder so users can pull only the CSS they need.
      9. There is no hover on the mobile web, so any hover-based effects would be excluded or have a tap equivalent.

      Contributors

        {{> off-screen-nav-cover}}

        Page Transition From Left

        This is another page.

        Lorem ipsum dolor sit amet, consectetur adipisicing elit. Porro nulla unde doloremque consequuntur illum quo dolor. Tenetur, voluptate temporibus fuga labore atque illum quas vel dignissimos impedit vitae corporis itaque!

        Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quos, sunt tempora perspiciatis officia laudantium voluptas dicta! Nesciunt, magnam nostrum velit iste beatae totam voluptatibus sint quas amet modi architecto labore.

        Page Transition From Right

        This is another page.

        Lorem ipsum dolor sit amet, consectetur adipisicing elit. Laudantium, accusamus, aliquam error excepturi asperiores ipsum nobis molestias neque molestiae illum magnam mollitia nulla temporibus aliquid esse rem amet cumque facilis.

        Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eaque, temporibus, ducimus architecto quidem voluptatem sint maiores atque deserunt sed aspernatur eveniet vel perferendis corrupti impedit aut voluptates neque similique enim.

        Page Transition From Bottom

        This is another page.

        Lorem ipsum dolor sit amet, consectetur adipisicing elit. Laudantium, accusamus, aliquam error excepturi asperiores ipsum nobis molestias neque molestiae illum magnam mollitia nulla temporibus aliquid esse rem amet cumque facilis.

        Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eaque, temporibus, ducimus architecto quidem voluptatem sint maiores atque deserunt sed aspernatur eveniet vel perferendis corrupti impedit aut voluptates neque similique enim.

        Page Transition From Top

        This is another page.

        Lorem ipsum dolor sit amet, consectetur adipisicing elit. Laudantium, accusamus, aliquam error excepturi asperiores ipsum nobis molestias neque molestiae illum magnam mollitia nulla temporibus aliquid esse rem amet cumque facilis.

        Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eaque, temporibus, ducimus architecto quidem voluptatem sint maiores atque deserunt sed aspernatur eveniet vel perferendis corrupti impedit aut voluptates neque similique enim.

        ================================================ FILE: src/templates/pages/buttons.hbs ================================================

        Buttons #

        Sources: Hakim El Hattab / Codrops
        ================================================ FILE: src/templates/pages/captions.hbs ================================================

        Captions #

        Appear

        Lorem ipsum dolar.

        Quarter Slide Up

        Lorem ipsum dolar.

        Quarter Slide Side

        Lorem ipsum dolar.

        Quarter Fall in

        Lorem ipsum dolar.

        Quarter Two-step

        Lorem ipsum dolar.

        Quarter Caption Zoom

        Lorem ipsum dolar.

        Cover Fade

        Lorem ipsum dolar.

        Cover Push Right

        Lorem ipsum dolar.

        Revolving Door

        Lorem ipsum dolar.

        Revolving Door Inverse

        Lorem ipsum dolar.

        Revolving Door

        Lorem ipsum dolar.

        Revolving Door Inverse

        Lorem ipsum dolar.

        Cover Slide Top

        Lorem ipsum dolar.

        Caption Offset

        Lorem ipsum dolar.

        Guillotine Reverse

        Lorem ipsum dolar.

        Half Slide

        Lorem ipsum dolar.

        Sqkwoosh

        Lorem ipsum dolar.

        Tunnel

        Lorem ipsum dolar.

        ================================================ FILE: src/templates/pages/form-elements.hbs ================================================

        Form Elements #

        Checkbox

        Radio

        Android Checkbox

        Android Radio

        ================================================ FILE: src/templates/pages/index.hbs ================================================
        {{>modals}}
        {{>positional-modals}}
        {{>buttons}}
        {{>list-items}}
        {{>list-scroll}}
        {{>off-screen-navs}}
        {{>page-transitions}}
        {{>captions}}
        {{>tooltips}}
        {{>form-elements}}
        {{>tabs}}
        ================================================ FILE: src/templates/pages/lazy-loading.hbs ================================================ ================================================ FILE: src/templates/pages/list-items.hbs ================================================

        List Items #

        Source: CSS-Tricks

        Gap, Slide In/Slide Out

        • list item
        • list item
        • list item
        • list item

        Expand In/Shrink Out

        • list item
        • list item
        • list item
        • list item

        Wobble In/Wobble Out

        • list item
        • list item
        • list item
        • list item

        Flip In/Flip Out

        • list item
        • list item
        • list item
        • list item

        Fall In/Fall Off

        • list item
        • list item
        • list item
        • list item

        From Above/To Above

        • list item
        • list item
        • list item
        • list item

        Fall In/Wobble Out

        • list item
        • list item
        • list item
        • list item

        Bouncy Slide In/Slide, Fall Off

        • list item
        • list item
        • list item
        • list item
        ================================================ FILE: src/templates/pages/list-scroll.hbs ================================================

        List Scroll #

        Source: Hakim El Hattab
        • One
        • Two
        • Three
        • Four
        • Five
        • Six
        • Seven
        • Eight
        • Nine
        • Ten
        • Eleven
        • Twelve
        • Thirteen
        • Fourteen
        • Fifteen
        • Sixteen
        • Seventeen
        • Eighteen
        • Nineteen
        • Twenty
        • Twentyone
        • Twentytwo
        • Twentythree
        • Twentyfour
        • Twentyfive
        • Twentysix
        • Twentyseven
        • Twentyeight
        • Twentynine
        • Thirty
        • Thirtyone
        • Thirtytwo
        • Thirtythree
        • Thirtyfour
        • Thirtyfive
        • Thirtysix
        • Thirtyseven
        • Thirtyeight
        • Thirtynine
        • Forty
        • Fortyone
        • Fortytwo
        • Fortythree
        • Fortyfour
        • Fortyfive
        • Fortysix
        • Fortyseven
        • Fortyeight
        • Fortynine
        • Fifty
        • Fiftyone
        • Fiftytwo
        • Fiftythree
        • Fiftyfour
        • Fiftyfive
        • Fiftysix
        • Fiftyseven
        • Fiftyeight
        • Fiftynine
        • Sixty
        • Sixtyone
        • Sixtytwo
        • Sixtythree
        • Sixtyfour
        • Sixtyfive
        • Sixtysix
        • Sixtyseven
        • Sixtyeight
        • Sixtynine
        • Seventy
        • Seventyone
        • Seventytwo
        • Seventythree
        • Seventyfour
        • Seventyfive
        • Seventysix
        • Seventyseven
        • Seventyeight
        • Seventynine
        • Eighty
        • Eightyone
        • Eightytwo
        • Eightythree
        • Eightyfour
        • Eightyfive
        • Eightysix
        • Eightyseven
        • Eightyeight
        • Eightynine
        • Ninety
        • Ninetyone
        • Ninetytwo
        • Ninetythree
        • Ninetyfour
        • Ninetyfive
        • Ninetysix
        • Ninetyseven
        • Ninetyeight
        • Ninetynine
        • One
        • Two
        • Three
        • Four
        • Five
        • Six
        • Seven
        • Eight
        • Nine
        • Ten
        • Eleven
        • Twelve
        • Thirteen
        • Fourteen
        • Fifteen
        • Sixteen
        • Seventeen
        • Eighteen
        • Nineteen
        • Twenty
        • Twentyone
        • Twentytwo
        • Twentythree
        • Twentyfour
        • Twentyfive
        • Twentysix
        • Twentyseven
        • Twentyeight
        • Twentynine
        • Thirty
        • Thirtyone
        • Thirtytwo
        • Thirtythree
        • Thirtyfour
        • Thirtyfive
        • Thirtysix
        • Thirtyseven
        • Thirtyeight
        • Thirtynine
        • Forty
        • Fortyone
        • Fortytwo
        • Fortythree
        • Fortyfour
        • Fortyfive
        • Fortysix
        • Fortyseven
        • Fortyeight
        • Fortynine
        • Fifty
        • Fiftyone
        • Fiftytwo
        • Fiftythree
        • Fiftyfour
        • Fiftyfive
        • Fiftysix
        • Fiftyseven
        • Fiftyeight
        • Fiftynine
        • Sixty
        • Sixtyone
        • Sixtytwo
        • Sixtythree
        • Sixtyfour
        • Sixtyfive
        • Sixtysix
        • Sixtyseven
        • Sixtyeight
        • Sixtynine
        • Seventy
        • Seventyone
        • Seventytwo
        • Seventythree
        • Seventyfour
        • Seventyfive
        • Seventysix
        • Seventyseven
        • Seventyeight
        • Seventynine
        • Eighty
        • Eightyone
        • Eightytwo
        • Eightythree
        • Eightyfour
        • Eightyfive
        • Eightysix
        • Eightyseven
        • Eightyeight
        • Eightynine
        • Ninety
        • Ninetyone
        • Ninetytwo
        • Ninetythree
        • Ninetyfour
        • Ninetyfive
        • Ninetysix
        • Ninetyseven
        • Ninetyeight
        • Ninetynine
        • One
        • Two
        • Three
        • Four
        • Five
        • Six
        • Seven
        • Eight
        • Nine
        • Ten
        • Eleven
        • Twelve
        • Thirteen
        • Fourteen
        • Fifteen
        • Sixteen
        • Seventeen
        • Eighteen
        • Nineteen
        • Twenty
        • Twentyone
        • Twentytwo
        • Twentythree
        • Twentyfour
        • Twentyfive
        • Twentysix
        • Twentyseven
        • Twentyeight
        • Twentynine
        • Thirty
        • Thirtyone
        • Thirtytwo
        • Thirtythree
        • Thirtyfour
        • Thirtyfive
        • Thirtysix
        • Thirtyseven
        • Thirtyeight
        • Thirtynine
        • Forty
        • Fortyone
        • Fortytwo
        • Fortythree
        • Fortyfour
        • Fortyfive
        • Fortysix
        • Fortyseven
        • Fortyeight
        • Fortynine
        • Fifty
        • Fiftyone
        • Fiftytwo
        • Fiftythree
        • Fiftyfour
        • Fiftyfive
        • Fiftysix
        • Fiftyseven
        • Fiftyeight
        • Fiftynine
        • Sixty
        • Sixtyone
        • Sixtytwo
        • Sixtythree
        • Sixtyfour
        • Sixtyfive
        • Sixtysix
        • Sixtyseven
        • Sixtyeight
        • Sixtynine
        • Seventy
        • Seventyone
        • Seventytwo
        • Seventythree
        • Seventyfour
        • Seventyfive
        • Seventysix
        • Seventyseven
        • Seventyeight
        • Seventynine
        • Eighty
        • Eightyone
        • Eightytwo
        • Eightythree
        • Eightyfour
        • Eightyfive
        • Eightysix
        • Eightyseven
        • Eightyeight
        • Eightynine
        • Ninety
        • Ninetyone
        • Ninetytwo
        • Ninetythree
        • Ninetyfour
        • Ninetyfive
        • Ninetysix
        • Ninetyseven
        • Ninetyeight
        • Ninetynine
        • One
        • Two
        • Three
        • Four
        • Five
        • Six
        • Seven
        • Eight
        • Nine
        • Ten
        • Eleven
        • Twelve
        • Thirteen
        • Fourteen
        • Fifteen
        • Sixteen
        • Seventeen
        • Eighteen
        • Nineteen
        • Twenty
        • Twentyone
        • Twentytwo
        • Twentythree
        • Twentyfour
        • Twentyfive
        • Twentysix
        • Twentyseven
        • Twentyeight
        • Twentynine
        • Thirty
        • Thirtyone
        • Thirtytwo
        • Thirtythree
        • Thirtyfour
        • Thirtyfive
        • Thirtysix
        • Thirtyseven
        • Thirtyeight
        • Thirtynine
        • Forty
        • Fortyone
        • Fortytwo
        • Fortythree
        • Fortyfour
        • Fortyfive
        • Fortysix
        • Fortyseven
        • Fortyeight
        • Fortynine
        • Fifty
        • Fiftyone
        • Fiftytwo
        • Fiftythree
        • Fiftyfour
        • Fiftyfive
        • Fiftysix
        • Fiftyseven
        • Fiftyeight
        • Fiftynine
        • Sixty
        • Sixtyone
        • Sixtytwo
        • Sixtythree
        • Sixtyfour
        • Sixtyfive
        • Sixtysix
        • Sixtyseven
        • Sixtyeight
        • Sixtynine
        • Seventy
        • Seventyone
        • Seventytwo
        • Seventythree
        • Seventyfour
        • Seventyfive
        • Seventysix
        • Seventyseven
        • Seventyeight
        • Seventynine
        • Eighty
        • Eightyone
        • Eightytwo
        • Eightythree
        • Eightyfour
        • Eightyfive
        • Eightysix
        • Eightyseven
        • Eightyeight
        • Eightynine
        • Ninety
        • Ninetyone
        • Ninetytwo
        • Ninetythree
        • Ninetyfour
        • Ninetyfive
        • Ninetysix
        • Ninetyseven
        • Ninetyeight
        • Ninetynine
        • One
        • Two
        • Three
        • Four
        • Five
        • Six
        • Seven
        • Eight
        • Nine
        • Ten
        • Eleven
        • Twelve
        • Thirteen
        • Fourteen
        • Fifteen
        • Sixteen
        • Seventeen
        • Eighteen
        • Nineteen
        • Twenty
        • Twentyone
        • Twentytwo
        • Twentythree
        • Twentyfour
        • Twentyfive
        • Twentysix
        • Twentyseven
        • Twentyeight
        • Twentynine
        • Thirty
        • Thirtyone
        • Thirtytwo
        • Thirtythree
        • Thirtyfour
        • Thirtyfive
        • Thirtysix
        • Thirtyseven
        • Thirtyeight
        • Thirtynine
        • Forty
        • Fortyone
        • Fortytwo
        • Fortythree
        • Fortyfour
        • Fortyfive
        • Fortysix
        • Fortyseven
        • Fortyeight
        • Fortynine
        • Fifty
        • Fiftyone
        • Fiftytwo
        • Fiftythree
        • Fiftyfour
        • Fiftyfive
        • Fiftysix
        • Fiftyseven
        • Fiftyeight
        • Fiftynine
        • Sixty
        • Sixtyone
        • Sixtytwo
        • Sixtythree
        • Sixtyfour
        • Sixtyfive
        • Sixtysix
        • Sixtyseven
        • Sixtyeight
        • Sixtynine
        • Seventy
        • Seventyone
        • Seventytwo
        • Seventythree
        • Seventyfour
        • Seventyfive
        • Seventysix
        • Seventyseven
        • Seventyeight
        • Seventynine
        • Eighty
        • Eightyone
        • Eightytwo
        • Eightythree
        • Eightyfour
        • Eightyfive
        • Eightysix
        • Eightyseven
        • Eightyeight
        • Eightynine
        • Ninety
        • Ninetyone
        • Ninetytwo
        • Ninetythree
        • Ninetyfour
        • Ninetyfive
        • Ninetysix
        • Ninetyseven
        • Ninetyeight
        • Ninetynine
        • One
        • Two
        • Three
        • Four
        • Five
        • Six
        • Seven
        • Eight
        • Nine
        • Ten
        • Eleven
        • Twelve
        • Thirteen
        • Fourteen
        • Fifteen
        • Sixteen
        • Seventeen
        • Eighteen
        • Nineteen
        • Twenty
        • Twentyone
        • Twentytwo
        • Twentythree
        • Twentyfour
        • Twentyfive
        • Twentysix
        • Twentyseven
        • Twentyeight
        • Twentynine
        • Thirty
        • Thirtyone
        • Thirtytwo
        • Thirtythree
        • Thirtyfour
        • Thirtyfive
        • Thirtysix
        • Thirtyseven
        • Thirtyeight
        • Thirtynine
        • Forty
        • Fortyone
        • Fortytwo
        • Fortythree
        • Fortyfour
        • Fortyfive
        • Fortysix
        • Fortyseven
        • Fortyeight
        • Fortynine
        • Fifty
        • Fiftyone
        • Fiftytwo
        • Fiftythree
        • Fiftyfour
        • Fiftyfive
        • Fiftysix
        • Fiftyseven
        • Fiftyeight
        • Fiftynine
        • Sixty
        • Sixtyone
        • Sixtytwo
        • Sixtythree
        • Sixtyfour
        • Sixtyfive
        • Sixtysix
        • Sixtyseven
        • Sixtyeight
        • Sixtynine
        • Seventy
        • Seventyone
        • Seventytwo
        • Seventythree
        • Seventyfour
        • Seventyfive
        • Seventysix
        • Seventyseven
        • Seventyeight
        • Seventynine
        • Eighty
        • Eightyone
        • Eightytwo
        • Eightythree
        • Eightyfour
        • Eightyfive
        • Eightysix
        • Eightyseven
        • Eightyeight
        • Eightynine
        • Ninety
        • Ninetyone
        • Ninetytwo
        • Ninetythree
        • Ninetyfour
        • Ninetyfive
        • Ninetysix
        • Ninetyseven
        • Ninetyeight
        • Ninetynine
        • One
        • Two
        • Three
        • Four
        • Five
        • Six
        • Seven
        • Eight
        • Nine
        • Ten
        • Eleven
        • Twelve
        • Thirteen
        • Fourteen
        • Fifteen
        • Sixteen
        • Seventeen
        • Eighteen
        • Nineteen
        • Twenty
        • Twentyone
        • Twentytwo
        • Twentythree
        • Twentyfour
        • Twentyfive
        • Twentysix
        • Twentyseven
        • Twentyeight
        • Twentynine
        • Thirty
        • Thirtyone
        • Thirtytwo
        • Thirtythree
        • Thirtyfour
        • Thirtyfive
        • Thirtysix
        • Thirtyseven
        • Thirtyeight
        • Thirtynine
        • Forty
        • Fortyone
        • Fortytwo
        • Fortythree
        • Fortyfour
        • Fortyfive
        • Fortysix
        • Fortyseven
        • Fortyeight
        • Fortynine
        • Fifty
        • Fiftyone
        • Fiftytwo
        • Fiftythree
        • Fiftyfour
        • Fiftyfive
        • Fiftysix
        • Fiftyseven
        • Fiftyeight
        • Fiftynine
        • Sixty
        • Sixtyone
        • Sixtytwo
        • Sixtythree
        • Sixtyfour
        • Sixtyfive
        • Sixtysix
        • Sixtyseven
        • Sixtyeight
        • Sixtynine
        • Seventy
        • Seventyone
        • Seventytwo
        • Seventythree
        • Seventyfour
        • Seventyfive
        • Seventysix
        • Seventyseven
        • Seventyeight
        • Seventynine
        • Eighty
        • Eightyone
        • Eightytwo
        • Eightythree
        • Eightyfour
        • Eightyfive
        • Eightysix
        • Eightyseven
        • Eightyeight
        • Eightynine
        • Ninety
        • Ninetyone
        • Ninetytwo
        • Ninetythree
        • Ninetyfour
        • Ninetyfive
        • Ninetysix
        • Ninetyseven
        • Ninetyeight
        • Ninetynine
        • One
        • Two
        • Three
        • Four
        • Five
        • Six
        • Seven
        • Eight
        • Nine
        • Ten
        • Eleven
        • Twelve
        • Thirteen
        • Fourteen
        • Fifteen
        • Sixteen
        • Seventeen
        • Eighteen
        • Nineteen
        • Twenty
        • Twentyone
        • Twentytwo
        • Twentythree
        • Twentyfour
        • Twentyfive
        • Twentysix
        • Twentyseven
        • Twentyeight
        • Twentynine
        • Thirty
        • Thirtyone
        • Thirtytwo
        • Thirtythree
        • Thirtyfour
        • Thirtyfive
        • Thirtysix
        • Thirtyseven
        • Thirtyeight
        • Thirtynine
        • Forty
        • Fortyone
        • Fortytwo
        • Fortythree
        • Fortyfour
        • Fortyfive
        • Fortysix
        • Fortyseven
        • Fortyeight
        • Fortynine
        • Fifty
        • Fiftyone
        • Fiftytwo
        • Fiftythree
        • Fiftyfour
        • Fiftyfive
        • Fiftysix
        • Fiftyseven
        • Fiftyeight
        • Fiftynine
        • Sixty
        • Sixtyone
        • Sixtytwo
        • Sixtythree
        • Sixtyfour
        • Sixtyfive
        • Sixtysix
        • Sixtyseven
        • Sixtyeight
        • Sixtynine
        • Seventy
        • Seventyone
        • Seventytwo
        • Seventythree
        • Seventyfour
        • Seventyfive
        • Seventysix
        • Seventyseven
        • Seventyeight
        • Seventynine
        • Eighty
        • Eightyone
        • Eightytwo
        • Eightythree
        • Eightyfour
        • Eightyfive
        • Eightysix
        • Eightyseven
        • Eightyeight
        • Eightynine
        • Ninety
        • Ninetyone
        • Ninetytwo
        • Ninetythree
        • Ninetyfour
        • Ninetyfive
        • Ninetysix
        • Ninetyseven
        • Ninetyeight
        • Ninetynine
        • One
        • Two
        • Three
        • Four
        • Five
        • Six
        • Seven
        • Eight
        • Nine
        • Ten
        • Eleven
        • Twelve
        • Thirteen
        • Fourteen
        • Fifteen
        • Sixteen
        • Seventeen
        • Eighteen
        • Nineteen
        • Twenty
        • Twentyone
        • Twentytwo
        • Twentythree
        • Twentyfour
        • Twentyfive
        • Twentysix
        • Twentyseven
        • Twentyeight
        • Twentynine
        • Thirty
        • Thirtyone
        • Thirtytwo
        • Thirtythree
        • Thirtyfour
        • Thirtyfive
        • Thirtysix
        • Thirtyseven
        • Thirtyeight
        • Thirtynine
        • Forty
        • Fortyone
        • Fortytwo
        • Fortythree
        • Fortyfour
        • Fortyfive
        • Fortysix
        • Fortyseven
        • Fortyeight
        • Fortynine
        • Fifty
        • Fiftyone
        • Fiftytwo
        • Fiftythree
        • Fiftyfour
        • Fiftyfive
        • Fiftysix
        • Fiftyseven
        • Fiftyeight
        • Fiftynine
        • Sixty
        • Sixtyone
        • Sixtytwo
        • Sixtythree
        • Sixtyfour
        • Sixtyfive
        • Sixtysix
        • Sixtyseven
        • Sixtyeight
        • Sixtynine
        • Seventy
        • Seventyone
        • Seventytwo
        • Seventythree
        • Seventyfour
        • Seventyfive
        • Seventysix
        • Seventyseven
        • Seventyeight
        • Seventynine
        • Eighty
        • Eightyone
        • Eightytwo
        • Eightythree
        • Eightyfour
        • Eightyfive
        • Eightysix
        • Eightyseven
        • Eightyeight
        • Eightynine
        • Ninety
        • Ninetyone
        • Ninetytwo
        • Ninetythree
        • Ninetyfour
        • Ninetyfive
        • Ninetysix
        • Ninetyseven
        • Ninetyeight
        • Ninetynine
        • One
        • Two
        • Three
        • Four
        • Five
        • Six
        • Seven
        • Eight
        • Nine
        • Ten
        • Eleven
        • Twelve
        • Thirteen
        • Fourteen
        • Fifteen
        • Sixteen
        • Seventeen
        • Eighteen
        • Nineteen
        • Twenty
        • Twentyone
        • Twentytwo
        • Twentythree
        • Twentyfour
        • Twentyfive
        • Twentysix
        • Twentyseven
        • Twentyeight
        • Twentynine
        • Thirty
        • Thirtyone
        • Thirtytwo
        • Thirtythree
        • Thirtyfour
        • Thirtyfive
        • Thirtysix
        • Thirtyseven
        • Thirtyeight
        • Thirtynine
        • Forty
        • Fortyone
        • Fortytwo
        • Fortythree
        • Fortyfour
        • Fortyfive
        • Fortysix
        • Fortyseven
        • Fortyeight
        • Fortynine
        • Fifty
        • Fiftyone
        • Fiftytwo
        • Fiftythree
        • Fiftyfour
        • Fiftyfive
        • Fiftysix
        • Fiftyseven
        • Fiftyeight
        • Fiftynine
        • Sixty
        • Sixtyone
        • Sixtytwo
        • Sixtythree
        • Sixtyfour
        • Sixtyfive
        • Sixtysix
        • Sixtyseven
        • Sixtyeight
        • Sixtynine
        • Seventy
        • Seventyone
        • Seventytwo
        • Seventythree
        • Seventyfour
        • Seventyfive
        • Seventysix
        • Seventyseven
        • Seventyeight
        • Seventynine
        • Eighty
        • Eightyone
        • Eightytwo
        • Eightythree
        • Eightyfour
        • Eightyfive
        • Eightysix
        • Eightyseven
        • Eightyeight
        • Eightynine
        • Ninety
        • Ninetyone
        • Ninetytwo
        • Ninetythree
        • Ninetyfour
        • Ninetyfive
        • Ninetysix
        • Ninetyseven
        • Ninetyeight
        • Ninetynine
        • One
        • Two
        • Three
        • Four
        • Five
        • Six
        • Seven
        • Eight
        • Nine
        • Ten
        • Eleven
        • Twelve
        • Thirteen
        • Fourteen
        • Fifteen
        • Sixteen
        • Seventeen
        • Eighteen
        • Nineteen
        • Twenty
        • Twentyone
        • Twentytwo
        • Twentythree
        • Twentyfour
        • Twentyfive
        • Twentysix
        • Twentyseven
        • Twentyeight
        • Twentynine
        • Thirty
        • Thirtyone
        • Thirtytwo
        • Thirtythree
        • Thirtyfour
        • Thirtyfive
        • Thirtysix
        • Thirtyseven
        • Thirtyeight
        • Thirtynine
        • Forty
        • Fortyone
        • Fortytwo
        • Fortythree
        • Fortyfour
        • Fortyfive
        • Fortysix
        • Fortyseven
        • Fortyeight
        • Fortynine
        • Fifty
        • Fiftyone
        • Fiftytwo
        • Fiftythree
        • Fiftyfour
        • Fiftyfive
        • Fiftysix
        • Fiftyseven
        • Fiftyeight
        • Fiftynine
        • Sixty
        • Sixtyone
        • Sixtytwo
        • Sixtythree
        • Sixtyfour
        • Sixtyfive
        • Sixtysix
        • Sixtyseven
        • Sixtyeight
        • Sixtynine
        • Seventy
        • Seventyone
        • Seventytwo
        • Seventythree
        • Seventyfour
        • Seventyfive
        • Seventysix
        • Seventyseven
        • Seventyeight
        • Seventynine
        • Eighty
        • Eightyone
        • Eightytwo
        • Eightythree
        • Eightyfour
        • Eightyfive
        • Eightysix
        • Eightyseven
        • Eightyeight
        • Eightynine
        • Ninety
        • Ninetyone
        • Ninetytwo
        • Ninetythree
        • Ninetyfour
        • Ninetyfive
        • Ninetysix
        • Ninetyseven
        • Ninetyeight
        • Ninetynine
        • One
        • Two
        • Three
        • Four
        • Five
        • Six
        • Seven
        • Eight
        • Nine
        • Ten
        • Eleven
        • Twelve
        • Thirteen
        • Fourteen
        • Fifteen
        • Sixteen
        • Seventeen
        • Eighteen
        • Nineteen
        • Twenty
        • Twentyone
        • Twentytwo
        • Twentythree
        • Twentyfour
        • Twentyfive
        • Twentysix
        • Twentyseven
        • Twentyeight
        • Twentynine
        • Thirty
        • Thirtyone
        • Thirtytwo
        • Thirtythree
        • Thirtyfour
        • Thirtyfive
        • Thirtysix
        • Thirtyseven
        • Thirtyeight
        • Thirtynine
        • Forty
        • Fortyone
        • Fortytwo
        • Fortythree
        • Fortyfour
        • Fortyfive
        • Fortysix
        • Fortyseven
        • Fortyeight
        • Fortynine
        • Fifty
        • Fiftyone
        • Fiftytwo
        • Fiftythree
        • Fiftyfour
        • Fiftyfive
        • Fiftysix
        • Fiftyseven
        • Fiftyeight
        • Fiftynine
        • Sixty
        • Sixtyone
        • Sixtytwo
        • Sixtythree
        • Sixtyfour
        • Sixtyfive
        • Sixtysix
        • Sixtyseven
        • Sixtyeight
        • Sixtynine
        • Seventy
        • Seventyone
        • Seventytwo
        • Seventythree
        • Seventyfour
        • Seventyfive
        • Seventysix
        • Seventyseven
        • Seventyeight
        • Seventynine
        • Eighty
        • Eightyone
        • Eightytwo
        • Eightythree
        • Eightyfour
        • Eightyfive
        • Eightysix
        • Eightyseven
        • Eightyeight
        • Eightynine
        • Ninety
        • Ninetyone
        • Ninetytwo
        • Ninetythree
        • Ninetyfour
        • Ninetyfive
        • Ninetysix
        • Ninetyseven
        • Ninetyeight
        • Ninetynine
        ================================================ FILE: src/templates/pages/modals.hbs ================================================

        Modals #

        Source: Codrops
        ================================================ FILE: src/templates/pages/off-screen-navs.hbs ================================================

        Off Screen Nav #

        ================================================ FILE: src/templates/pages/page-transitions.hbs ================================================

        Page Transitions #

        ================================================ FILE: src/templates/pages/positional-modals.hbs ================================================

        Positional Modals #

        ================================================ FILE: src/templates/pages/tabs.hbs ================================================

        Tabs #

        Source: Tabulous

        Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus.

        Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.

        Morbi tincidunt, dui sit amet facilisis feugiat, odio metus gravida ante, ut pharetra massa metus id nunc. Duis scelerisque molestie turpis. Sed fringilla, massa eget luctus malesuada, metus eros molestie lectus, ut tempus eros massa ut dolor.

        Mauris eleifend est et turpis. Duis id erat. Suspendisse potenti. Aliquam vulputate, pede vel vehicula accumsan, mi neque rutrum erat, eu congue orci lorem eget lorem.

        Vestibulum non ante. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce sodales.

        Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus.

        Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.

        Morbi tincidunt, dui sit amet facilisis feugiat, odio metus gravida ante, ut pharetra massa metus id nunc. Duis scelerisque molestie turpis. Sed fringilla, massa eget luctus malesuada, metus eros molestie lectus, ut tempus eros massa ut dolor.

        Mauris eleifend est et turpis. Duis id erat. Suspendisse potenti. Aliquam vulputate, pede vel vehicula accumsan, mi neque rutrum erat, eu congue orci lorem eget lorem.

        Vestibulum non ante. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce sodales.

        Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus.

        Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.

        Morbi tincidunt, dui sit amet facilisis feugiat, odio metus gravida ante, ut pharetra massa metus id nunc. Duis scelerisque molestie turpis. Sed fringilla, massa eget luctus malesuada, metus eros molestie lectus, ut tempus eros massa ut dolor.

        Mauris eleifend est et turpis. Duis id erat. Suspendisse potenti. Aliquam vulputate, pede vel vehicula accumsan, mi neque rutrum erat, eu congue orci lorem eget lorem.

        Vestibulum non ante. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce sodales.

        Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus.

        Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.

        Morbi tincidunt, dui sit amet facilisis feugiat, odio metus gravida ante, ut pharetra massa metus id nunc. Duis scelerisque molestie turpis. Sed fringilla, massa eget luctus malesuada, metus eros molestie lectus, ut tempus eros massa ut dolor.

        Mauris eleifend est et turpis. Duis id erat. Suspendisse potenti. Aliquam vulputate, pede vel vehicula accumsan, mi neque rutrum erat, eu congue orci lorem eget lorem.

        Vestibulum non ante. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce sodales.

        Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus.

        Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.

        Morbi tincidunt, dui sit amet facilisis feugiat, odio metus gravida ante, ut pharetra massa metus id nunc. Duis scelerisque molestie turpis. Sed fringilla, massa eget luctus malesuada, metus eros molestie lectus, ut tempus eros massa ut dolor.

        Mauris eleifend est et turpis. Duis id erat. Suspendisse potenti. Aliquam vulputate, pede vel vehicula accumsan, mi neque rutrum erat, eu congue orci lorem eget lorem.

        Vestibulum non ante. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce sodales.

        Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus.

        Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.

        Morbi tincidunt, dui sit amet facilisis feugiat, odio metus gravida ante, ut pharetra massa metus id nunc. Duis scelerisque molestie turpis. Sed fringilla, massa eget luctus malesuada, metus eros molestie lectus, ut tempus eros massa ut dolor.

        Mauris eleifend est et turpis. Duis id erat. Suspendisse potenti. Aliquam vulputate, pede vel vehicula accumsan, mi neque rutrum erat, eu congue orci lorem eget lorem.

        Vestibulum non ante. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce sodales.

        Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus.

        Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.

        Morbi tincidunt, dui sit amet facilisis feugiat, odio metus gravida ante, ut pharetra massa metus id nunc. Duis scelerisque molestie turpis. Sed fringilla, massa eget luctus malesuada, metus eros molestie lectus, ut tempus eros massa ut dolor.

        Mauris eleifend est et turpis. Duis id erat. Suspendisse potenti. Aliquam vulputate, pede vel vehicula accumsan, mi neque rutrum erat, eu congue orci lorem eget lorem.

        Vestibulum non ante. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce sodales.

        ================================================ FILE: src/templates/pages/tooltips.hbs ================================================

        Tooltips #

        Lorem ipsum example one dolor sit amet, consectetur adipisicing elit. Unde, dolor, example two ipsa, dolorem officia expedita error example three vel blanditiis tempore molestias voluptatem ducimus porro example four recusandae quo ex quisquam voluptas iure! Amet, dignissimos.

        ================================================ FILE: src/templates/parts/modal.hbs ================================================

        Modal Dialog

        This is a modal window.

        ================================================ FILE: src/templates/parts/off-screen-nav-cover.hbs ================================================
        ================================================ FILE: src/templates/parts/off-screen-nav.hbs ================================================ ================================================ FILE: src/templates/parts/page-transition.hbs ================================================

        Page Transition

        This is another page.