├── .gitignore ├── Gruntfile.js ├── LICENSE.txt ├── README.md ├── bower.json ├── demos ├── css │ ├── main.css │ └── normalize.css ├── demos.html ├── img │ ├── Thumbs.db │ ├── slide1.jpg │ ├── slide2.jpg │ └── slide3.jpg └── js │ ├── main.js │ └── vendor │ └── jquery-1.11.1.min.js ├── jquery.pogo-slider.min.js ├── npm-debug.log ├── package.json ├── pogo-slider.min.css └── src ├── jquery.pogo-slider.js └── pogo-slider.css /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /Gruntfile.js: -------------------------------------------------------------------------------- 1 | module.exports = function(grunt) { 2 | 3 | grunt.initConfig({ 4 | 5 | pkg: grunt.file.readJSON('package.json'), 6 | 7 | uglify: { 8 | my_target: { 9 | files: { 10 | 'jquery.pogo-slider.min.js': ['src/jquery.pogo-slider.js'] 11 | } 12 | } 13 | }, 14 | 15 | cssmin: { 16 | my_target: { 17 | files: { 18 | 'pogo-slider.min.css': ['src/pogo-slider.css'] 19 | } 20 | } 21 | }, 22 | 23 | autoprefixer: { 24 | my_target: { 25 | src: 'pogo-slider.min.css', 26 | dest: 'pogo-slider.min.css' 27 | } 28 | } 29 | 30 | }); 31 | 32 | grunt.loadNpmTasks('grunt-contrib-uglify'); 33 | grunt.loadNpmTasks('grunt-contrib-cssmin'); 34 | grunt.loadNpmTasks('grunt-autoprefixer'); 35 | 36 | grunt.registerTask('default', ['uglify','cssmin','autoprefixer']); 37 | 38 | }; -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2014 Michael Griffin 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Pogo Slider Jquery Plugin 2 | 3 | See http://fluice.com/pogo-slider for demos and further info 4 | 5 | ## About 6 | 7 | Pogo Slider is a jQuery plugin that allows you to create animated image/content sliders. CSS animations are used to transition between slides. A CSS animation can be triggered on element within a slide, after the slide transitions in, and as the slide transitions out. 8 | 9 | ## About this fork 10 | 这里主要修复了一个在preserveTargetSize选项为True的情况下,blocksReveal无法正常工作的问题。 11 | 后续可能进行一些其他的改进。 12 | (pogo-slider.min.js压缩的时候随便找了个压缩工具,所以和原版的不太相似) 13 | 14 | ## Usage 15 | 16 | ### markup 17 | 18 |
19 | 20 |
21 |

Your Content Here!

22 |
23 |
24 | 25 |
26 | 27 | ### Instantiating the plugin and calling the slider methods 28 | 29 | var mySlider = $('.mySlider').pogoSlider(/* opts */).data('plugin_pogoSlider'); 30 | 31 | mySlider.pause(); // Pauses the slider on the current slide, only works if autoplay option set to true 32 | 33 | mySlider.resume(); // Resumes the slider back to normal operation 34 | 35 | mySlider.nextSlide(); // Transition to the next slide 36 | 37 | mySlider.prevSlide(); // Transition to the previous slide 38 | 39 | mySlider.toSlide(2); // Transitions to the slide index passes to the method 40 | 41 | mySlider.destroy(); // Destroys the plugin, restoring elements to their default state 42 | 43 | ### Options 44 | 45 | #### autoplay (Boolean) 46 | 47 | When set to true, slides transition between one another automatically 48 | 49 | #### autoplayTimeout (Integer) 50 | 51 | The amount of time between a slide transitioning in ends and slide transition out starts. Only applied when autoplay is set to true 52 | 53 | #### displayProgess (Boolean) 54 | 55 | Creates a progress bar that displays the amount of time left until the current slide transitions out. Only applied when autoplay is set to true 56 | 57 | #### baseZindex (Integer) 58 | 59 | Used when setting the z-index of slides. Raise the Number if you need the slider to overlap another element 60 | 61 | #### onSlideStart (Function) 62 | 63 | Callback function that runs on slide start. Receives the index of the current slide 64 | 65 | #### onSlideEnd (Function) 66 | 67 | Callback function called on slide end. Receives the index of the current slide 68 | 69 | #### onSliderPause (Function) 70 | 71 | Callback function called when the slider has been paused, receives index of current slide 72 | 73 | #### onSliderResume (Function) 74 | 75 | Callback function called when the slider has resumed after being paused. Received the index of the current slide 76 | 77 | #### slideTransition (String) 78 | 79 | Sets the default slide transitions. Only used if the data-transition property has not been set on the slides element 80 | 81 | #### slideTransitionDuration (Integer) 82 | 83 | The default slide transitoins duration. Only used if the data-duration property has not been set on the slides element 84 | 85 | #### elementTransitionStart (Integer) 86 | 87 | The default element transition start time. Only used if the data-start property has not been set on an element 88 | 89 | #### elementTransitionDuration (Integer) 90 | 91 | The default element transition duration. Only used if the data-duration property has not been set on an element 92 | 93 | #### elementTransitionIn (String) 94 | 95 | The default element transition in animation. Only used if the data-in property has not been set on an element 96 | 97 | #### elementTransitionOut (String) 98 | 99 | The default element transition in animation. Only used if the data-out property has not been set on an element 100 | 101 | #### generateButton (Boolean) 102 | 103 | Generates next and previous buttons and sets the click event handlers 104 | 105 | #### buttonPosition (String) 106 | 107 | Where the buttons should be positionsed. Possible values: 108 | 109 | - TopLeft 110 | - TopRight 111 | - BottomLeft 112 | - BottomRight 113 | - CenterHorizontal 114 | - CenterVertical 115 | 116 | #### generateNav (Boolean) 117 | 118 | Generates a clickable nav item for each slide 119 | 120 | #### navPosition (String) 121 | 122 | Where the nav will be positioned. Possible values: 123 | 124 | - Top 125 | - Bottom 126 | - Left 127 | - Right 128 | 129 | #### preserveTargetSize (Boolean) 130 | 131 | Sets if the slider and all the elements should be scaled relative to the target size. Preserves the aspect ratio and allows you to style the slider 132 | and all the elements at a target size and have the that styling be preserved even when scaling to smaller devices. 133 | 134 | #### responsive (Boolean) 135 | 136 | If set to true, sets window resize handler to call the preserveTargetSize method if the slider is resized 137 | 138 | #### targetWidth (Integer) 139 | 140 | Used with the preserveTargetSize method to allow your slider to appear consistently across different screen sizes 141 | 142 | #### targetHeight (Integer) 143 | 144 | Used with the preserveTargetSize method to allow your slider to appear consistently across different screen sizes 145 | 146 | #### pauseOnHover (Boolean) 147 | 148 | Sets events handlers to pause and resume the slider on mouseover 149 | 150 | 151 | ### Slide Transitions 152 | 153 | Transitions can be set on each slide with the data-transition attribute. If no transitions is set on the slide, it will fallback to the transition set with slideTransition option 154 | 155 | - fade 156 | - slide 157 | - verticalSlide 158 | - slideLeft 159 | - slideRight 160 | - slideUp 161 | - slideDown 162 | - slideRevealLeft 163 | - slideRevealRight 164 | - slideOverLeft 165 | - slideOverRight 166 | - expandReveal 167 | - shrinkReveal 168 | - verticalSplitReveal 169 | - horizontalSplitReveal 170 | - zipReveal 171 | - barRevealDown 172 | - barRevealUp 173 | - barReveal 174 | - blocksReveal 175 | - fold 176 | - foldLeft 177 | - foldRight 178 | 179 | ### Element Animations 180 | 181 | Animations can be set on each element with the data-in and data-out attributes. Falls back to the transition set in the elementTransitionIn and elementTransitionOut settings. 182 | 183 | - slideDown 184 | - slideUp 185 | - slideRight 186 | - slideLeft 187 | - expand 188 | - contract 189 | - spin 190 | - sideFall 191 | - horizontal3DFlip 192 | - vertical3DFlip 193 | - 3DPivot 194 | - rollLeft 195 | - rollRight 196 | - glideLeft 197 | - glideRight 198 | - flipX 199 | - flipY 200 | 201 | ### Creating your own element animations 202 | 203 | You can define your own CSS animations to be triggered on an element. Each animation must be namespaced with 'pogoSlider-animation' and have both and in and out variant. The In animation is triggered when the slide transition starts, the Out animation is triggered as the slide transitions out 204 | 205 | .pogoSlider-animation-slideDownIn { 206 | animation-name: animationInName; 207 | } 208 | 209 | .pogoSlider-animation-slideDownOut { 210 | animation-name: animationOutName; 211 | } -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pogo-slider", 3 | "description": "jQuery animated slider plugin", 4 | "version": "0.7.0", 5 | "homepage": "https://github.com/mdgriffin/pogo-slider", 6 | "authors": [ 7 | "Michael Griffin " 8 | ], 9 | "keywords": [ 10 | "slider", 11 | "animation" 12 | ], 13 | "main": ["jquery.pogo-slider.min.js","pogo-slider.min.css","LICENSE.txt"], 14 | "repository": { 15 | "type": "git", 16 | "url": "git://github.com/mdgriffin/pogo-slider.git" 17 | }, 18 | "license": "MIT", 19 | "ignore": [ 20 | "**/.*", 21 | "Gruntfile.js", 22 | "package.json", 23 | "node_modules", 24 | "bower_components", 25 | "src", 26 | "demos" 27 | ], 28 | "dependencies": { 29 | "jquery": ">=1.9.0" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /demos/css/main.css: -------------------------------------------------------------------------------- 1 | 2 | *, 3 | *:before, 4 | *:after { 5 | -webkit-box-sizing: border-box; 6 | -moz-box-sizing: border-box; 7 | box-sizing: border-box; 8 | } 9 | 10 | body { 11 | background: #f9f9fc; 12 | -webkit-font-smoothing: antialiased; 13 | letter-spacing: .1px; 14 | line-height: 1.23em; 15 | color: #757575; 16 | } 17 | 18 | .container { 19 | width: 1000px; 20 | margin: 115px auto; 21 | border: 1px solid #eaeaea; 22 | border-radius: 5px; 23 | min-height: 500px; 24 | background: #fff; 25 | padding: 2em 0; 26 | } 27 | 28 | .sectionHeading { 29 | display: block; 30 | line-height: 1em; 31 | text-align: center; 32 | font-weight: 600; 33 | color: #212121; 34 | } 35 | 36 | .sectionHeading span { 37 | background: #fff; 38 | padding: 0 20px; 39 | display: inline-block; 40 | } 41 | 42 | .clearfix:before, 43 | .clearfix:after { 44 | content: " "; 45 | display: table; 46 | } 47 | 48 | .clearfix:after { 49 | clear: both; 50 | } 51 | 52 | .clearfix { 53 | *zoom: 1; 54 | } 55 | 56 | .fl { 57 | float: left; 58 | } 59 | 60 | .row { 61 | width: 100%; 62 | } 63 | 64 | .grid12 { 65 | float: left; 66 | padding-left: 0.5em; 67 | padding-right: 0.5em; 68 | } 69 | 70 | .small12 { 71 | width: 100%; 72 | } 73 | 74 | .small3 { 75 | width: 25%; 76 | } 77 | 78 | .slideDemos { 79 | width: 100%; 80 | } 81 | 82 | .slideDemos-single { 83 | -webkit-border-radius: 3px; 84 | border-radius: 3px; 85 | margin-top: 1em; 86 | } 87 | 88 | .slideDemos-single .pogoSlider { 89 | height: 225px; 90 | } 91 | 92 | .slideDemos-single h3 { 93 | text-align: center; 94 | margin-top: 90px; 95 | color: #fff; 96 | font-weight: 700; 97 | } -------------------------------------------------------------------------------- /demos/css/normalize.css: -------------------------------------------------------------------------------- 1 | /*! normalize.css v3.0.1 | MIT License | git.io/normalize */ 2 | 3 | /** 4 | * 1. Set default font family to sans-serif. 5 | * 2. Prevent iOS text size adjust after orientation change, without disabling 6 | * user zoom. 7 | */ 8 | 9 | html { 10 | font-family: sans-serif; /* 1 */ 11 | -ms-text-size-adjust: 100%; /* 2 */ 12 | -webkit-text-size-adjust: 100%; /* 2 */ 13 | } 14 | 15 | /** 16 | * Remove default margin. 17 | */ 18 | 19 | body { 20 | margin: 0; 21 | } 22 | 23 | /* HTML5 display definitions 24 | ========================================================================== */ 25 | 26 | /** 27 | * Correct `block` display not defined for any HTML5 element in IE 8/9. 28 | * Correct `block` display not defined for `details` or `summary` in IE 10/11 and Firefox. 29 | * Correct `block` display not defined for `main` in IE 11. 30 | */ 31 | 32 | article, 33 | aside, 34 | details, 35 | figcaption, 36 | figure, 37 | footer, 38 | header, 39 | hgroup, 40 | main, 41 | nav, 42 | section, 43 | summary { 44 | display: block; 45 | } 46 | 47 | /** 48 | * 1. Correct `inline-block` display not defined in IE 8/9. 49 | * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. 50 | */ 51 | 52 | audio, 53 | canvas, 54 | progress, 55 | video { 56 | display: inline-block; /* 1 */ 57 | vertical-align: baseline; /* 2 */ 58 | } 59 | 60 | /** 61 | * Prevent modern browsers from displaying `audio` without controls. 62 | * Remove excess height in iOS 5 devices. 63 | */ 64 | 65 | audio:not([controls]) { 66 | display: none; 67 | height: 0; 68 | } 69 | 70 | /** 71 | * Address `[hidden]` styling not present in IE 8/9/10. 72 | * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. 73 | */ 74 | 75 | [hidden], 76 | template { 77 | display: none; 78 | } 79 | 80 | /* Links 81 | ========================================================================== */ 82 | 83 | /** 84 | * Remove the gray background color from active links in IE 10. 85 | */ 86 | 87 | a { 88 | background: transparent; 89 | } 90 | 91 | /** 92 | * Improve readability when focused and also mouse hovered in all browsers. 93 | */ 94 | 95 | a:active, 96 | a:hover { 97 | outline: 0; 98 | } 99 | 100 | /* Text-level semantics 101 | ========================================================================== */ 102 | 103 | /** 104 | * Address styling not present in IE 8/9/10/11, Safari, and Chrome. 105 | */ 106 | 107 | abbr[title] { 108 | border-bottom: 1px dotted; 109 | } 110 | 111 | /** 112 | * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. 113 | */ 114 | 115 | b, 116 | strong { 117 | font-weight: bold; 118 | } 119 | 120 | /** 121 | * Address styling not present in Safari and Chrome. 122 | */ 123 | 124 | dfn { 125 | font-style: italic; 126 | } 127 | 128 | /** 129 | * Address variable `h1` font-size and margin within `section` and `article` 130 | * contexts in Firefox 4+, Safari, and Chrome. 131 | */ 132 | 133 | h1 { 134 | font-size: 2em; 135 | margin: 0.67em 0; 136 | } 137 | 138 | /** 139 | * Address styling not present in IE 8/9. 140 | */ 141 | 142 | mark { 143 | background: #ff0; 144 | color: #000; 145 | } 146 | 147 | /** 148 | * Address inconsistent and variable font size in all browsers. 149 | */ 150 | 151 | small { 152 | font-size: 80%; 153 | } 154 | 155 | /** 156 | * Prevent `sub` and `sup` affecting `line-height` in all browsers. 157 | */ 158 | 159 | sub, 160 | sup { 161 | font-size: 75%; 162 | line-height: 0; 163 | position: relative; 164 | vertical-align: baseline; 165 | } 166 | 167 | sup { 168 | top: -0.5em; 169 | } 170 | 171 | sub { 172 | bottom: -0.25em; 173 | } 174 | 175 | /* Embedded content 176 | ========================================================================== */ 177 | 178 | /** 179 | * Remove border when inside `a` element in IE 8/9/10. 180 | */ 181 | 182 | img { 183 | border: 0; 184 | } 185 | 186 | /** 187 | * Correct overflow not hidden in IE 9/10/11. 188 | */ 189 | 190 | svg:not(:root) { 191 | overflow: hidden; 192 | } 193 | 194 | /* Grouping content 195 | ========================================================================== */ 196 | 197 | /** 198 | * Address margin not present in IE 8/9 and Safari. 199 | */ 200 | 201 | figure { 202 | margin: 1em 40px; 203 | } 204 | 205 | /** 206 | * Address differences between Firefox and other browsers. 207 | */ 208 | 209 | hr { 210 | -moz-box-sizing: content-box; 211 | box-sizing: content-box; 212 | height: 0; 213 | } 214 | 215 | /** 216 | * Contain overflow in all browsers. 217 | */ 218 | 219 | pre { 220 | overflow: auto; 221 | } 222 | 223 | /** 224 | * Address odd `em`-unit font size rendering in all browsers. 225 | */ 226 | 227 | code, 228 | kbd, 229 | pre, 230 | samp { 231 | font-family: monospace, monospace; 232 | font-size: 1em; 233 | } 234 | 235 | /* Forms 236 | ========================================================================== */ 237 | 238 | /** 239 | * Known limitation: by default, Chrome and Safari on OS X allow very limited 240 | * styling of `select`, unless a `border` property is set. 241 | */ 242 | 243 | /** 244 | * 1. Correct color not being inherited. 245 | * Known issue: affects color of disabled elements. 246 | * 2. Correct font properties not being inherited. 247 | * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. 248 | */ 249 | 250 | button, 251 | input, 252 | optgroup, 253 | select, 254 | textarea { 255 | color: inherit; /* 1 */ 256 | font: inherit; /* 2 */ 257 | margin: 0; /* 3 */ 258 | } 259 | 260 | /** 261 | * Address `overflow` set to `hidden` in IE 8/9/10/11. 262 | */ 263 | 264 | button { 265 | overflow: visible; 266 | } 267 | 268 | /** 269 | * Address inconsistent `text-transform` inheritance for `button` and `select`. 270 | * All other form control elements do not inherit `text-transform` values. 271 | * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. 272 | * Correct `select` style inheritance in Firefox. 273 | */ 274 | 275 | button, 276 | select { 277 | text-transform: none; 278 | } 279 | 280 | /** 281 | * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` 282 | * and `video` controls. 283 | * 2. Correct inability to style clickable `input` types in iOS. 284 | * 3. Improve usability and consistency of cursor style between image-type 285 | * `input` and others. 286 | */ 287 | 288 | button, 289 | html input[type="button"], /* 1 */ 290 | input[type="reset"], 291 | input[type="submit"] { 292 | -webkit-appearance: button; /* 2 */ 293 | cursor: pointer; /* 3 */ 294 | } 295 | 296 | /** 297 | * Re-set default cursor for disabled elements. 298 | */ 299 | 300 | button[disabled], 301 | html input[disabled] { 302 | cursor: default; 303 | } 304 | 305 | /** 306 | * Remove inner padding and border in Firefox 4+. 307 | */ 308 | 309 | button::-moz-focus-inner, 310 | input::-moz-focus-inner { 311 | border: 0; 312 | padding: 0; 313 | } 314 | 315 | /** 316 | * Address Firefox 4+ setting `line-height` on `input` using `!important` in 317 | * the UA stylesheet. 318 | */ 319 | 320 | input { 321 | line-height: normal; 322 | } 323 | 324 | /** 325 | * It's recommended that you don't attempt to style these elements. 326 | * Firefox's implementation doesn't respect box-sizing, padding, or width. 327 | * 328 | * 1. Address box sizing set to `content-box` in IE 8/9/10. 329 | * 2. Remove excess padding in IE 8/9/10. 330 | */ 331 | 332 | input[type="checkbox"], 333 | input[type="radio"] { 334 | box-sizing: border-box; /* 1 */ 335 | padding: 0; /* 2 */ 336 | } 337 | 338 | /** 339 | * Fix the cursor style for Chrome's increment/decrement buttons. For certain 340 | * `font-size` values of the `input`, it causes the cursor style of the 341 | * decrement button to change from `default` to `text`. 342 | */ 343 | 344 | input[type="number"]::-webkit-inner-spin-button, 345 | input[type="number"]::-webkit-outer-spin-button { 346 | height: auto; 347 | } 348 | 349 | /** 350 | * 1. Address `appearance` set to `searchfield` in Safari and Chrome. 351 | * 2. Address `box-sizing` set to `border-box` in Safari and Chrome 352 | * (include `-moz` to future-proof). 353 | */ 354 | 355 | input[type="search"] { 356 | -webkit-appearance: textfield; /* 1 */ 357 | -moz-box-sizing: content-box; 358 | -webkit-box-sizing: content-box; /* 2 */ 359 | box-sizing: content-box; 360 | } 361 | 362 | /** 363 | * Remove inner padding and search cancel button in Safari and Chrome on OS X. 364 | * Safari (but not Chrome) clips the cancel button when the search input has 365 | * padding (and `textfield` appearance). 366 | */ 367 | 368 | input[type="search"]::-webkit-search-cancel-button, 369 | input[type="search"]::-webkit-search-decoration { 370 | -webkit-appearance: none; 371 | } 372 | 373 | /** 374 | * Define consistent border, margin, and padding. 375 | */ 376 | 377 | fieldset { 378 | border: 1px solid #c0c0c0; 379 | margin: 0 2px; 380 | padding: 0.35em 0.625em 0.75em; 381 | } 382 | 383 | /** 384 | * 1. Correct `color` not being inherited in IE 8/9/10/11. 385 | * 2. Remove padding so people aren't caught out if they zero out fieldsets. 386 | */ 387 | 388 | legend { 389 | border: 0; /* 1 */ 390 | padding: 0; /* 2 */ 391 | } 392 | 393 | /** 394 | * Remove default vertical scrollbar in IE 8/9/10/11. 395 | */ 396 | 397 | textarea { 398 | overflow: auto; 399 | } 400 | 401 | /** 402 | * Don't inherit the `font-weight` (applied by a rule above). 403 | * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. 404 | */ 405 | 406 | optgroup { 407 | font-weight: bold; 408 | } 409 | 410 | /* Tables 411 | ========================================================================== */ 412 | 413 | /** 414 | * Remove most spacing between table cells. 415 | */ 416 | 417 | table { 418 | border-collapse: collapse; 419 | border-spacing: 0; 420 | } 421 | 422 | td, 423 | th { 424 | padding: 0; 425 | } -------------------------------------------------------------------------------- /demos/demos.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 18 | 19 |
20 | 21 |

Full Width Demo

22 | 23 |
24 | 25 |
26 |
27 |
28 | 29 |
30 | 31 |
32 | 33 |
34 | 35 |
36 | 37 |

Slide Transition Demos

38 | 39 |
40 | 41 |
42 | 43 |
44 | 45 |
46 | 47 |
48 |

slide

49 |
50 |
51 |

slide

52 |
53 |
54 |

slide

55 |
56 | 57 |
58 | 59 |
60 | 61 |
62 | 63 |
64 | 65 |
66 |

blocksReveal

67 |
68 |
69 |

blocksReveal

70 |
71 |
72 |

blocksReveal

73 |
74 | 75 |
76 | 77 |
78 | 79 |
80 | 81 |
82 | 83 |
84 |

verticalSplitReveal

85 |
86 |
87 |

verticalSplitReveal

88 |
89 |
90 |

verticalSplitReveal

91 |
92 | 93 |
94 | 95 |
96 | 97 |
98 | 99 |
100 | 101 |
102 |

zipReveal

103 |
104 |
105 |

zipReveal

106 |
107 |
108 |

zipReveal

109 |
110 | 111 |
112 | 113 |
114 | 115 |
116 | 117 |
118 | 119 |
120 | 121 |
122 | 123 |
124 |

shrinkReveal

125 |
126 |
127 |

shrinkReveal

128 |
129 |
130 |

shrinkReveal

131 |
132 | 133 |
134 | 135 |
136 | 137 |
138 | 139 |
140 | 141 |
142 |

expandReveal

143 |
144 |
145 |

expandReveal

146 |
147 |
148 |

expandReveal

149 |
150 | 151 |
152 | 153 |
154 | 155 |
156 | 157 |
158 | 159 |
160 |

fold

161 |
162 |
163 |

fold

164 |
165 |
166 |

fold

167 |
168 | 169 |
170 | 171 |
172 | 173 |
174 | 175 |
176 | 177 |
178 |

verticalSlide

179 |
180 |
181 |

verticalSlide

182 |
183 |
184 |

verticalSlide

185 |
186 | 187 |
188 | 189 |
190 | 191 |
192 | 193 |
194 | 195 |
196 | 197 |
198 | 199 |
200 |

fade

201 |
202 |
203 |

fade

204 |
205 |
206 |

fade

207 |
208 | 209 |
210 | 211 |
212 | 213 |
214 | 215 |
216 | 217 |
218 |

Slide Reveal Left

219 |
220 |
221 |

Slide Reveal Left

222 |
223 |
224 |

Slide Reveal Left

225 |
226 | 227 |
228 | 229 |
230 | 231 |
232 | 233 |
234 | 235 |
236 |

Slide Over Left

237 |
238 |
239 |

Slide Over Left

240 |
241 |
242 |

Slide Over Left

243 |
244 | 245 |
246 | 247 |
248 | 249 |
250 | 251 |
252 | 253 |
254 |

Bars Reveal Down

255 |
256 |
257 |

Bars Reveal Down

258 |
259 |
260 |

Bars Reveal Down

261 |
262 | 263 |
264 | 265 |
266 | 267 |
268 | 269 |
270 | 271 |
272 | 273 |
274 | 275 | 276 | 277 | 278 | 279 | 280 | -------------------------------------------------------------------------------- /demos/img/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdgriffin/pogo-slider/431d0e0023fa27a71fa9c215a38ad96069ad6b21/demos/img/Thumbs.db -------------------------------------------------------------------------------- /demos/img/slide1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdgriffin/pogo-slider/431d0e0023fa27a71fa9c215a38ad96069ad6b21/demos/img/slide1.jpg -------------------------------------------------------------------------------- /demos/img/slide2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdgriffin/pogo-slider/431d0e0023fa27a71fa9c215a38ad96069ad6b21/demos/img/slide2.jpg -------------------------------------------------------------------------------- /demos/img/slide3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdgriffin/pogo-slider/431d0e0023fa27a71fa9c215a38ad96069ad6b21/demos/img/slide3.jpg -------------------------------------------------------------------------------- /demos/js/main.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function () { 2 | 3 | $('#js-main-slider').pogoSlider({ 4 | autoplay: true, 5 | autoplayTimeout: 5000, 6 | displayProgess: true, 7 | preserveTargetSize: true, 8 | targetWidth: 1000, 9 | targetHeight: 300, 10 | responsive: true 11 | }).data('plugin_pogoSlider'); 12 | 13 | var transitionDemoOpts = { 14 | displayProgess: false, 15 | generateNav: false, 16 | generateButtons: false 17 | } 18 | 19 | $('#demo1').pogoSlider(transitionDemoOpts); 20 | $('#demo2').pogoSlider(transitionDemoOpts); 21 | $('#demo3').pogoSlider(transitionDemoOpts); 22 | $('#demo4').pogoSlider(transitionDemoOpts); 23 | $('#demo5').pogoSlider(transitionDemoOpts); 24 | $('#demo6').pogoSlider(transitionDemoOpts); 25 | $('#demo7').pogoSlider(transitionDemoOpts); 26 | $('#demo8').pogoSlider(transitionDemoOpts); 27 | $('#demo9').pogoSlider(transitionDemoOpts); 28 | $('#demo10').pogoSlider(transitionDemoOpts); 29 | $('#demo11').pogoSlider(transitionDemoOpts); 30 | $('#demo12').pogoSlider(transitionDemoOpts); 31 | 32 | }); -------------------------------------------------------------------------------- /jquery.pogo-slider.min.js: -------------------------------------------------------------------------------- 1 | (function(d,c,b,e){function a(f,h,g){if(h.charAt(0)==="*"){f[h.substring(1)]=g}else{f["-ms-"+h]=g;f["-webkit-"+h]=g;f[h]=g}}d.fn.precss=function(g){var f={};if(arguments.length===1){for(style in g){if(g.hasOwnProperty(style)){a(f,style,g[style])}}}else{a(f,arguments[0],arguments[1])}this.css(f);return this}})(jQuery,window,document);(function(d,f,g,a){var c=function(n){var m=false;var l="Webkit Moz ms O".split(" ");var o=g.createElement("div");var j=null;n=n.toLowerCase();if(o.style[n]){m=true}if(m===false){j=n.charAt(0).toUpperCase()+n.substr(1);for(var k=0;ko){o=(p+q)}n.push({$element:d(this),element:this,startTime:p,duration:q,transitionIn:d(this).data("in")||k.settings.elementTransitionIn,transitionOut:d(this).data("out")||k.settings.elementTransitionOut});d(this).css("opacity",0)});var m={$element:d(this),element:this,transition:d(this).data("transition")||k.settings.slideTransition,duration:parseInt(d(this).data("duration"))||k.settings.slideTransitionDuration,elementTransitionDuration:o,totalSlideDuration:k.settings.autoplayTimeout+o,children:n};k.slides.push(m)});k.numSlides=k.slides.length;k.slides[0].$element.css("opacity",1);if(k.settings.autoplay&&k.settings.displayProgess){k._createProgessBar()}k.$element.css("padding-bottom",(100/(k.settings.targetWidth/k.settings.targetHeight))+"%");var j=k.$element.find("img").length;if(j>0){var l=0;k.$element.prepend('
');k.$element.find("img").one("load",function(){if(++l===j){d(".pogoSlider-loading").remove();k._onSliderReady()}}).each(function(){if(this.complete){d(this).trigger("load")}})}else{k._onSliderReady()}},_onSliderReady:function(){var j=this;if(j.settings.autoplay){j.slideStartTime=new Date();j.slideTimeRemaining=j.slides[0].totalSlideDuration;j._slideTimeout(j.slideTimeRemaining)}if(j.settings.generateButtons&&j.slides.length>1){j._createDirButtons()}if(j.settings.generateNav&&j.slides.length>1){j._createNavigation()}if(j.settings.preserveTargetSize){j._preserveTargetSize();if(j.settings.responsive){d(f).on("resize",function(){j._preserveTargetSize()})}}if(j.settings.pauseOnHover){j.$element.on("mouseenter",function(){j.pause()});j.$element.on("mouseleave",function(){j.resume()})}j._onSlideStart(0)},_createDirButtons:function(){var j=this;j.$element.addClass("pogoSlider--dir"+j.settings.buttonPosition);d('').appendTo(j.$element).on("click",function(){j.prevSlide()});d('').appendTo(j.$element).on("click",function(){j.nextSlide()})},_createNavigation:function(){var j=this;j.$element.addClass("pogoSlider--nav"+j.settings.navPosition);var l=d('').appendTo(j.$element);for(var k=0;k').appendTo(l).on("click",function(){j.toSlide(d(this).data("num"))})}},getAppliedProps:function(o){var y=g.styleSheets;var m=new RegExp("{(.+)}");o.matches=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.msMatchesSelector||o.oMatchesSelector;var p=o.getAttribute("style").replace(/ /g,"").split(";");var w=[];for(var q=0;q0&&!this.navigating){if(this.settings.displayProgess){this.$element.find(".pogoSlider-progressBar-duration").animate({"width":"100%"},this.slideTimeRemaining,"linear")}this._slideTimeout(this.slideTimeRemaining)}if(this.settings.onSliderResume){this.settings.onSliderResume.apply(this)}}},nextSlide:function(){if(!this.navigating){clearTimeout(this.slideTimeoutId);this.prevSlideIndex=this.currentSlideIndex;if(++this.currentSlideIndex>(this.numSlides-1)){this.currentSlideIndex=0}this._changeSlide(this.prevSlideIndex,this.currentSlideIndex)}},prevSlide:function(){if(!this.navigating){clearTimeout(this.slideTimeoutId);this.prevSlideIndex=this.currentSlideIndex;if(--this.currentSlideIndex<0){this.currentSlideIndex=this.numSlides-1}this._changeSlide(this.prevSlideIndex,this.currentSlideIndex)}},toSlide:function(j){if(!this.navigating){clearTimeout(this.slideTimeoutId);if(j===this.currentSlideIndex||j>(this.slides.length-1)){return}this.prevSlideIndex=this.currentSlideIndex;this.currentSlideIndex=j;this._changeSlide(this.prevSlideIndex,this.currentSlideIndex)}},destroy:function(){this.paused=true;clearTimeout(this.slideTimeoutId);d.removeData(this.element,"plugin_"+e)},_changeToNext:function(){this.prevSlideIndex=this.currentSlideIndex;if(++this.currentSlideIndex>(this.numSlides-1)){this.currentSlideIndex=0}this._changeSlide(this.prevSlideIndex,this.currentSlideIndex)},_changeSlide:function(m,o){var j=this;var n;j._onSlideEnd(m);j.navigating=true;if(i.animation&&i.transition&&i.transform){n=j.slideTransitions}else{n=j.compatSlideTransitions}var k=n[j.slides[o].transition]?j.slides[o].transition:"slide";var l=n[k].apply(j,[m,o]);setTimeout(function(){if(l){l()}j.navigating=false;j._slideCleanup(m,false);j._slideElementCleanup(m);if(j.settings.autoplay){j._slideTimeout(j.slides[o].totalSlideDuration)}j._onSlideStart(o)},j.slides[o].duration)},_onSlideStart:function(k){this.slides[k].$element.css("z-index",1);if(this.settings.autoplay){this.slideStartTime=new Date();this.slideTimeRemaining=this.slides[k].totalSlideDuration;if(this.settings.displayProgess&&!this.paused){this.slides[k].$element.find(".pogoSlider-progressBar-duration").css("width","0").animate({"width":"100%"},this.slideTimeRemaining,"linear")}}if(this.slides[k].children.length>0){this._slideElementsTransitionIn(k)}if(this.paused){for(var j=0;j0&&k>this.slides[l].elementTransitionDuration){this._slideElementsTransitionOut(l)}if(this.settings.onSlideEnd){this.settings.onSlideEnd.apply(this)}},_slideElementsTransitionIn:function(l){for(var j=0;j0){this._removeSlideSlices(k)}this.slides[k].$element.attr("style",this.slides[k].$element.data("original-styles")).css("opacity",j?"1":"0")},_slideElementCleanup:function(m){var j=function(n,o){return(o.match(/pogoSlider-(?:(?:transition)|(?:animation))(?:-[a-zA-Z0-9]+)?(?:--[a-z]+)?/gi)||[]).join(" ")};var l=function(n,o){return o.replace(/(?:-webkit-)?(?:-ms-)?((?:transition)|(?:animation))[^;]+;/g,"")};this.slides[m].$element.find(".pogoSlider-progressBar-duration").css("width","0");for(var k=0;k0&&m').wrapAll('
');C.attr("style",function(j,D){return D.replace(/(?:background)[^;]+;/g,"")});for(var w=0;w0;o--){var n=Math.floor(Math.random()*(o+1));var m=l[o];l[o]=l[n];l[n]=m}return l},slideTransitions:{fade:function(j,l){var k=this.slides[l];this.slides[j].$element.precss({"*opacity":"0","transition-duration":k.duration+"ms"});k.$element.precss({"*opacity":"1","transition-duration":k.duration+"ms"})},slide:function(j,k){var l;if(k===0&&j===this.slides.length-1){l="slideLeft"}else{if(j===0&&k===this.slides.length-1){l="slideRight"}else{if(k>j){l="slideLeft"}else{l="slideRight"}}}return this.slideTransitions[l].apply(this,[j,k])},verticalSlide:function(j,k){var l;if(k===0&&j===this.slides.length-1){l="slideUp"}else{if(j===0&&k===this.slides.length-1){l="slideDown"}else{if(k>j){l="slideUp"}else{l="slideDown"}}}return this.slideTransitions[l].apply(this,[j,k])},slideLeft:function(k,m){var j=this;var l=j.slides[m];j.slides[k].$element.precss("animation-duration",l.duration+"ms").addClass("pogoSlider-animation-leftOut");l.$element.precss({"*opacity":"1","animation-duration":l.duration+"ms"}).addClass("pogoSlider-animation-leftIn");return function(){j.slides[k].$element.removeClass("pogoSlider-animation-leftOut");l.$element.attr("style",l.$element.data("original-styles")).css("opacity","1").removeClass("pogoSlider-animation-leftIn")}},slideRight:function(k,m){var j=this;var l=j.slides[m];j.slides[k].$element.precss("animation-duration",l.duration+"ms").addClass("pogoSlider-animation-rightOut");l.$element.precss({"*opacity":"1","animation-duration":l.duration+"ms"}).addClass("pogoSlider-animation-rightIn");return function(){j.slides[k].$element.removeClass("pogoSlider-animation-rightOut"); 4 | l.$element.attr("style",l.$element.data("original-styles")).css("opacity","1").removeClass("pogoSlider-animation-rightIn")}},slideUp:function(k,m){var j=this;var l=j.slides[m];j.slides[k].$element.precss("animation-duration",l.duration+"ms").addClass("pogoSlider-animation-upOut");l.$element.precss({"*opacity":"1","animation-duration":l.duration+"ms"}).addClass("pogoSlider-animation-upIn");return function(){j.slides[k].$element.removeClass("pogoSlider-animation-upOut");l.$element.attr("style",l.$element.data("original-styles")).css("opacity","1").removeClass("pogoSlider-animation-upIn")}},slideDown:function(k,m){var j=this;var l=j.slides[m];j.slides[k].$element.precss("animation-duration",l.duration+"ms").addClass("pogoSlider-animation-downOut");l.$element.precss({"*opacity":"1","animation-duration":l.duration+"ms"}).addClass("pogoSlider-animation-downIn");return function(){j.slides[k].$element.removeClass("pogoSlider-animation-downOut");l.$element.attr("style",l.$element.data("original-styles")).css("opacity","1").removeClass("pogoSlider-animation-downIn")}},slideRevealLeft:function(k,m){var j=this;var l=j.slides[m];j.slides[k].$element.precss({"*z-index":j.settings.baseZindex+1,"animation-duration":l.duration+"ms"}).addClass("pogoSlider-animation-leftOut");l.$element.css({"opacity":1,"z-index":j.settings.baseZindex});return function(){j.slides[k].$element.removeClass("pogoSlider-animation-leftOut")}},slideRevealRight:function(k,m){var j=this;var l=j.slides[m];j.slides[k].$element.precss({"*z-index":j.settings.baseZindex+1,"animation-duration":l.duration+"ms"}).addClass("pogoSlider-animation-rightOut");l.$element.css({"opacity":1,"z-index":j.settings.baseZindex});return function(){j.slides[k].$element.removeClass("pogoSlider-animation-rightOut")}},slideOverLeft:function(j,l){var k=this.slides[l];k.$element.precss({"*opacity":"1","*z-index":this.settings.baseZindex+1,"animation-duration":k.duration+"ms"}).addClass("pogoSlider-animation-leftIn");return function(){k.$element.attr("style",k.$element.data("original-styles")).css("opacity","1").removeClass("pogoSlider-animation-leftIn")}},slideOverRight:function(j,l){var k=this.slides[l];k.$element.precss({"*opacity":"1","*z-index":this.settings.baseZindex+1,"animation-duration":k.duration+"ms"}).addClass("pogoSlider-animation-rightIn");return function(){k.$element.attr("style",k.$element.data("original-styles")).css("opacity","1").removeClass("pogoSlider-animation-rightIn")}},expandReveal:function(k,m){var j=this;var l=j.slides[m];j.$element.css("overflow","visible");j.slides[k].$element.precss({"*z-index":j.settings.baseZindex+1,"animation-duration":l.duration+"ms"}).addClass("pogoSlider-animation-expandReveal");l.$element.css({"opacity":1,"z-index":j.settings.baseZindex});return function(){j.$element.css("overflow","");j.slides[k].$element.removeClass("pogoSlider-animation-expandReveal")}},shrinkReveal:function(k,m){var j=this;var l=j.slides[m];j.slides[k].$element.precss({"*z-index":j.settings.baseZindex+1,"animation-duration":l.duration+"ms"}).addClass("pogoSlider-animation-shrinkReveal");l.$element.css({"opacity":1,"z-index":j.settings.baseZindex});return function(){j.slides[k].$element.removeClass("pogoSlider-animation-shrinkReveal")}},verticalSplitReveal:function(l,n){var k=this;var m=k.slides[n];k.slides[l].$element.css("z-index",k.settings.baseZindex+1);m.$element.css({"opacity":1,"z-index":k.settings.baseZindex});k._createSlideSlices(l,1,2);var j=k.slides[l].$element.find(".pogoSlider-slide-slice");j.precss("animation-duration",m.duration+"ms");j.eq(0).addClass("pogoSlider-animation-leftOut");j.eq(1).addClass("pogoSlider-animation-rightOut")},horizontalSplitReveal:function(l,n){var k=this;var m=k.slides[n];k.slides[l].$element.css("z-index",k.settings.baseZindex+1);m.$element.css({"opacity":1,"z-index":k.settings.baseZindex});k._createSlideSlices(l,2,1);var j=k.slides[l].$element.find(".pogoSlider-slide-slice");j.precss("animation-duration",m.duration+"ms");j.eq(0).addClass("pogoSlider-animation-upOut");j.eq(1).addClass("pogoSlider-animation-downOut")},zipReveal:function(l,n){var k=this;var m=k.slides[n];k.slides[l].$element.css("z-index",k.settings.baseZindex+1);m.$element.css({"opacity":1,"z-index":k.settings.baseZindex});k._createSlideSlices(l,1,Math.round(k.$element.width()/100));var j=k.slides[l].$element.find(".pogoSlider-slide-slice");j.precss("animation-duration",m.duration+"ms");j.each(function(o){if(o%2===0){d(this).addClass("pogoSlider-animation-upOut")}else{d(this).addClass("pogoSlider-animation-downOut")}})},barRevealDown:function(j,k){return this.slideTransitions["barReveal"].apply(this,[j,k,"down"])},barRevealUp:function(j,k){return this.slideTransitions["barReveal"].apply(this,[j,k,"up"])},barReveal:function(o,q,n){var k=this;var p=k.slides[q];k.slides[o].$element.css("z-index",k.settings.baseZindex+1);p.$element.css({"opacity":1,"z-index":k.settings.baseZindex});k._createSlideSlices(o,1,Math.round(k.$element.width()/100));var j=k.slides[o].$element.find(".pogoSlider-slide-slice"); 5 | var l=p.duration/(j.length+1);var m=l*2;j.precss("animation-duration",m+"ms");j.each(function(r){if(n==="down"){d(this).addClass("pogoSlider-animation-downOut").precss("animation-delay",l*r+"ms")}else{d(this).addClass("pogoSlider-animation-upOut").precss("animation-delay",l*r+"ms")}})},blocksReveal:function(k,j){var u=this;var q=u.slides[j];var t=0;if(u.settings.preserveTargetSize){t=parseFloat(u.$element.css("padding-bottom"))}else{t=u.$element.height()}var r=Math.round(t/100);var l=Math.round(u.$element.width()/100);u.slides[k].$element.css("z-index",u.settings.baseZindex+1);q.$element.css({"opacity":1,"z-index":u.settings.baseZindex});var p=u._generateARandomArray(r*l);u._createSlideSlices(k,r,l);var n=u.slides[k].$element.find(".pogoSlider-slide-slice");var o=q.duration/(n.length+1);var s=o*2;n.precss("animation-duration",s+"ms");for(var m=0;mj){l="foldLeft"}else{l="foldRight"}}}return this.slideTransitions[l].apply(this,[j,k])},foldRight:function(l,k){var s=this;var q=s.slides[k];var m=s.slides[l];s.$element.css("overflow","visible");m.$element.css({"overflow":"visible","z-index":s.settings.baseZindex});q.$element.css({"opacity":1,"overflow":"visible","z-index":s.settings.baseZindex+1});s._createSlideSlices(l,1,2);var r=m.$element.find(".pogoSlider-slide-slice");s._createSlideSlices(k,1,2);var o=s.slides[k].$element.find(".pogoSlider-slide-slice");var n=r.eq(0);var p=o.eq(0);var j=o.eq(1);q.$element.prepend(n.detach());m.$element.prepend(p.detach());n.addClass("pogoSlider-animation-foldInRight").precss("animation-duration",q.duration+"ms");j.addClass("pogoSlider-animation-foldOutRight").precss("animation-duration",q.duration+"ms");return function(){s.$element.css("overflow","");q.$element.prepend(p.detach());m.$element.prepend(n.detach());s._slideCleanup(k,true)}},foldLeft:function(l,k){var s=this;var q=s.slides[k];var m=s.slides[l];s.$element.css("overflow","visible");m.$element.css({"overflow":"visible","z-index":s.settings.baseZindex});q.$element.css({"opacity":1,"overflow":"visible","z-index":s.settings.baseZindex+1});s._createSlideSlices(l,1,2);var r=m.$element.find(".pogoSlider-slide-slice");s._createSlideSlices(k,1,2);var n=s.slides[k].$element.find(".pogoSlider-slide-slice");var p=r.eq(1);var o=n.eq(0);var j=n.eq(1);q.$element.append(p.detach());m.$element.append(j.detach());p.addClass("pogoSlider-animation-foldInLeft").precss("animation-duration",q.duration+"ms");o.addClass("pogoSlider-animation-foldOutLeft").precss("animation-duration",q.duration+"ms");return function(){s.$element.css("overflow","");s._slideCleanup(k,true)}}},compatSlideTransitions:{fade:function(j,l){var k=this.slides[l];this.slides[j].$element.animate({opacity:0},k.duration);k.$element.animate({opacity:1},k.duration)},slide:function(j,k){var l;if(j>k&&j===this.slides.length-1&&k===0){l="slideLeft"}else{if(jk&&j===this.slides.length-1&&k===0){l="slideUp"}else{if(j=1.9.0', null ] 15 | 9 verbose cache add name=undefined spec="jquery@>=1.9.0" args=["jquery@>=1.9.0",null] 16 | 10 verbose parsed url { protocol: null, 17 | 10 verbose parsed url slashes: null, 18 | 10 verbose parsed url auth: null, 19 | 10 verbose parsed url host: null, 20 | 10 verbose parsed url port: null, 21 | 10 verbose parsed url hostname: null, 22 | 10 verbose parsed url hash: null, 23 | 10 verbose parsed url search: null, 24 | 10 verbose parsed url query: null, 25 | 10 verbose parsed url pathname: 'jquery@%3E=1.9.0', 26 | 10 verbose parsed url path: 'jquery@%3E=1.9.0', 27 | 10 verbose parsed url href: 'jquery@%3E=1.9.0' } 28 | 11 verbose cache add [ 'grunt-contrib-uglify@*', null ] 29 | 12 verbose cache add name=undefined spec="grunt-contrib-uglify@*" args=["grunt-contrib-uglify@*",null] 30 | 13 verbose parsed url { protocol: null, 31 | 13 verbose parsed url slashes: null, 32 | 13 verbose parsed url auth: null, 33 | 13 verbose parsed url host: null, 34 | 13 verbose parsed url port: null, 35 | 13 verbose parsed url hostname: null, 36 | 13 verbose parsed url hash: null, 37 | 13 verbose parsed url search: null, 38 | 13 verbose parsed url query: null, 39 | 13 verbose parsed url pathname: 'grunt-contrib-uglify@*', 40 | 13 verbose parsed url path: 'grunt-contrib-uglify@*', 41 | 13 verbose parsed url href: 'grunt-contrib-uglify@*' } 42 | 14 verbose cache add [ 'grunt-contrib-cssmin@*', null ] 43 | 15 verbose cache add name=undefined spec="grunt-contrib-cssmin@*" args=["grunt-contrib-cssmin@*",null] 44 | 16 verbose parsed url { protocol: null, 45 | 16 verbose parsed url slashes: null, 46 | 16 verbose parsed url auth: null, 47 | 16 verbose parsed url host: null, 48 | 16 verbose parsed url port: null, 49 | 16 verbose parsed url hostname: null, 50 | 16 verbose parsed url hash: null, 51 | 16 verbose parsed url search: null, 52 | 16 verbose parsed url query: null, 53 | 16 verbose parsed url pathname: 'grunt-contrib-cssmin@*', 54 | 16 verbose parsed url path: 'grunt-contrib-cssmin@*', 55 | 16 verbose parsed url href: 'grunt-contrib-cssmin@*' } 56 | 17 verbose cache add [ 'grunt-autoprefixer@*', null ] 57 | 18 verbose cache add name=undefined spec="grunt-autoprefixer@*" args=["grunt-autoprefixer@*",null] 58 | 19 verbose parsed url { protocol: null, 59 | 19 verbose parsed url slashes: null, 60 | 19 verbose parsed url auth: null, 61 | 19 verbose parsed url host: null, 62 | 19 verbose parsed url port: null, 63 | 19 verbose parsed url hostname: null, 64 | 19 verbose parsed url hash: null, 65 | 19 verbose parsed url search: null, 66 | 19 verbose parsed url query: null, 67 | 19 verbose parsed url pathname: 'grunt-autoprefixer@*', 68 | 19 verbose parsed url path: 'grunt-autoprefixer@*', 69 | 19 verbose parsed url href: 'grunt-autoprefixer@*' } 70 | 20 verbose cache add name="jquery" spec=">=1.9.0" args=["jquery",">=1.9.0"] 71 | 21 verbose parsed url { protocol: null, 72 | 21 verbose parsed url slashes: null, 73 | 21 verbose parsed url auth: null, 74 | 21 verbose parsed url host: null, 75 | 21 verbose parsed url port: null, 76 | 21 verbose parsed url hostname: null, 77 | 21 verbose parsed url hash: null, 78 | 21 verbose parsed url search: null, 79 | 21 verbose parsed url query: null, 80 | 21 verbose parsed url pathname: '%3E=1.9.0', 81 | 21 verbose parsed url path: '%3E=1.9.0', 82 | 21 verbose parsed url href: '%3E=1.9.0' } 83 | 22 verbose addNamed [ 'jquery', '>=1.9.0' ] 84 | 23 verbose addNamed [ null, '>=1.9.0' ] 85 | 24 verbose cache add name="grunt-contrib-uglify" spec="*" args=["grunt-contrib-uglify","*"] 86 | 25 verbose parsed url { protocol: null, 87 | 25 verbose parsed url slashes: null, 88 | 25 verbose parsed url auth: null, 89 | 25 verbose parsed url host: null, 90 | 25 verbose parsed url port: null, 91 | 25 verbose parsed url hostname: null, 92 | 25 verbose parsed url hash: null, 93 | 25 verbose parsed url search: null, 94 | 25 verbose parsed url query: null, 95 | 25 verbose parsed url pathname: '*', 96 | 25 verbose parsed url path: '*', 97 | 25 verbose parsed url href: '*' } 98 | 26 verbose addNamed [ 'grunt-contrib-uglify', '*' ] 99 | 27 verbose addNamed [ null, '*' ] 100 | 28 verbose cache add name="grunt-contrib-cssmin" spec="*" args=["grunt-contrib-cssmin","*"] 101 | 29 verbose parsed url { protocol: null, 102 | 29 verbose parsed url slashes: null, 103 | 29 verbose parsed url auth: null, 104 | 29 verbose parsed url host: null, 105 | 29 verbose parsed url port: null, 106 | 29 verbose parsed url hostname: null, 107 | 29 verbose parsed url hash: null, 108 | 29 verbose parsed url search: null, 109 | 29 verbose parsed url query: null, 110 | 29 verbose parsed url pathname: '*', 111 | 29 verbose parsed url path: '*', 112 | 29 verbose parsed url href: '*' } 113 | 30 verbose addNamed [ 'grunt-contrib-cssmin', '*' ] 114 | 31 verbose addNamed [ null, '*' ] 115 | 32 verbose cache add [ 'grunt-contrib-copy@*', null ] 116 | 33 verbose cache add name=undefined spec="grunt-contrib-copy@*" args=["grunt-contrib-copy@*",null] 117 | 34 verbose parsed url { protocol: null, 118 | 34 verbose parsed url slashes: null, 119 | 34 verbose parsed url auth: null, 120 | 34 verbose parsed url host: null, 121 | 34 verbose parsed url port: null, 122 | 34 verbose parsed url hostname: null, 123 | 34 verbose parsed url hash: null, 124 | 34 verbose parsed url search: null, 125 | 34 verbose parsed url query: null, 126 | 34 verbose parsed url pathname: 'grunt-contrib-copy@*', 127 | 34 verbose parsed url path: 'grunt-contrib-copy@*', 128 | 34 verbose parsed url href: 'grunt-contrib-copy@*' } 129 | 35 verbose cache add name="grunt-autoprefixer" spec="*" args=["grunt-autoprefixer","*"] 130 | 36 verbose parsed url { protocol: null, 131 | 36 verbose parsed url slashes: null, 132 | 36 verbose parsed url auth: null, 133 | 36 verbose parsed url host: null, 134 | 36 verbose parsed url port: null, 135 | 36 verbose parsed url hostname: null, 136 | 36 verbose parsed url hash: null, 137 | 36 verbose parsed url search: null, 138 | 36 verbose parsed url query: null, 139 | 36 verbose parsed url pathname: '*', 140 | 36 verbose parsed url path: '*', 141 | 36 verbose parsed url href: '*' } 142 | 37 verbose addNamed [ 'grunt-autoprefixer', '*' ] 143 | 38 verbose addNamed [ null, '*' ] 144 | 39 silly lockFile 169ab83b-jquery-1-9-0 jquery@>=1.9.0 145 | 40 verbose lock jquery@>=1.9.0 /Users/mdgriffin/.npm/169ab83b-jquery-1-9-0.lock 146 | 41 silly lockFile d203f81c-grunt-contrib-uglify grunt-contrib-uglify@* 147 | 42 verbose lock grunt-contrib-uglify@* /Users/mdgriffin/.npm/d203f81c-grunt-contrib-uglify.lock 148 | 43 silly lockFile b3f2337d-grunt-contrib-cssmin grunt-contrib-cssmin@* 149 | 44 verbose lock grunt-contrib-cssmin@* /Users/mdgriffin/.npm/b3f2337d-grunt-contrib-cssmin.lock 150 | 45 silly lockFile ad1a3c41-grunt-autoprefixer grunt-autoprefixer@* 151 | 46 verbose lock grunt-autoprefixer@* /Users/mdgriffin/.npm/ad1a3c41-grunt-autoprefixer.lock 152 | 47 verbose cache add name="grunt-contrib-copy" spec="*" args=["grunt-contrib-copy","*"] 153 | 48 verbose parsed url { protocol: null, 154 | 48 verbose parsed url slashes: null, 155 | 48 verbose parsed url auth: null, 156 | 48 verbose parsed url host: null, 157 | 48 verbose parsed url port: null, 158 | 48 verbose parsed url hostname: null, 159 | 48 verbose parsed url hash: null, 160 | 48 verbose parsed url search: null, 161 | 48 verbose parsed url query: null, 162 | 48 verbose parsed url pathname: '*', 163 | 48 verbose parsed url path: '*', 164 | 48 verbose parsed url href: '*' } 165 | 49 verbose addNamed [ 'grunt-contrib-copy', '*' ] 166 | 50 verbose addNamed [ null, '*' ] 167 | 51 silly lockFile 89c12057-grunt-contrib-copy grunt-contrib-copy@* 168 | 52 verbose lock grunt-contrib-copy@* /Users/mdgriffin/.npm/89c12057-grunt-contrib-copy.lock 169 | 53 silly addNameRange { name: 'jquery', range: '>=1.9.0', hasData: false } 170 | 54 silly addNameRange { name: 'grunt-contrib-uglify', range: '*', hasData: false } 171 | 55 verbose request where is /jquery 172 | 56 verbose request registry https://registry.npmjs.org/ 173 | 57 verbose request id aa187048196ddc70 174 | 58 verbose url raw /jquery 175 | 59 verbose url resolving [ 'https://registry.npmjs.org/', './jquery' ] 176 | 60 verbose url resolved https://registry.npmjs.org/jquery 177 | 61 verbose request where is https://registry.npmjs.org/jquery 178 | 62 info trying registry request attempt 1 at 15:22:56 179 | 63 http GET https://registry.npmjs.org/jquery 180 | 64 silly addNameRange { name: 'grunt-autoprefixer', range: '*', hasData: false } 181 | 65 silly addNameRange { name: 'grunt-contrib-copy', range: '*', hasData: false } 182 | 66 silly addNameRange { name: 'grunt-contrib-cssmin', range: '*', hasData: false } 183 | 67 verbose request where is /grunt-autoprefixer 184 | 68 verbose request registry https://registry.npmjs.org/ 185 | 69 verbose url raw /grunt-autoprefixer 186 | 70 verbose url resolving [ 'https://registry.npmjs.org/', './grunt-autoprefixer' ] 187 | 71 verbose url resolved https://registry.npmjs.org/grunt-autoprefixer 188 | 72 verbose request where is https://registry.npmjs.org/grunt-autoprefixer 189 | 73 info trying registry request attempt 1 at 15:22:56 190 | 74 http GET https://registry.npmjs.org/grunt-autoprefixer 191 | 75 verbose request where is /grunt-contrib-uglify 192 | 76 verbose request registry https://registry.npmjs.org/ 193 | 77 verbose url raw /grunt-contrib-uglify 194 | 78 verbose url resolving [ 'https://registry.npmjs.org/', './grunt-contrib-uglify' ] 195 | 79 verbose url resolved https://registry.npmjs.org/grunt-contrib-uglify 196 | 80 verbose request where is https://registry.npmjs.org/grunt-contrib-uglify 197 | 81 info trying registry request attempt 1 at 15:22:56 198 | 82 verbose etag "1XM55RI59L7G9DTQN66N8WH3W" 199 | 83 http GET https://registry.npmjs.org/grunt-contrib-uglify 200 | 84 verbose request where is /grunt-contrib-copy 201 | 85 verbose request registry https://registry.npmjs.org/ 202 | 86 verbose url raw /grunt-contrib-copy 203 | 87 verbose url resolving [ 'https://registry.npmjs.org/', './grunt-contrib-copy' ] 204 | 88 verbose url resolved https://registry.npmjs.org/grunt-contrib-copy 205 | 89 verbose request where is https://registry.npmjs.org/grunt-contrib-copy 206 | 90 info trying registry request attempt 1 at 15:22:56 207 | 91 verbose etag "6QA95B96YZQTWNCFTCCKQRUG6" 208 | 92 http GET https://registry.npmjs.org/grunt-contrib-copy 209 | 93 verbose request where is /grunt-contrib-cssmin 210 | 94 verbose request registry https://registry.npmjs.org/ 211 | 95 verbose url raw /grunt-contrib-cssmin 212 | 96 verbose url resolving [ 'https://registry.npmjs.org/', './grunt-contrib-cssmin' ] 213 | 97 verbose url resolved https://registry.npmjs.org/grunt-contrib-cssmin 214 | 98 verbose request where is https://registry.npmjs.org/grunt-contrib-cssmin 215 | 99 info trying registry request attempt 1 at 15:22:56 216 | 100 verbose etag "ASRCNGCBSF8MN6G8HCPEF9FT" 217 | 101 http GET https://registry.npmjs.org/grunt-contrib-cssmin 218 | 102 http 200 https://registry.npmjs.org/grunt-contrib-copy 219 | 103 silly registry.get cb [ 200, 220 | 103 silly registry.get { date: 'Tue, 28 Apr 2015 14:22:57 GMT', 221 | 103 silly registry.get server: 'CouchDB/1.5.0 (Erlang OTP/R16B03)', 222 | 103 silly registry.get etag: '"4VIPYG9WUF2EO8954Q83473W8"', 223 | 103 silly registry.get 'content-type': 'application/json', 224 | 103 silly registry.get 'cache-control': 'max-age=60', 225 | 103 silly registry.get 'content-length': '32696', 226 | 103 silly registry.get 'accept-ranges': 'bytes', 227 | 103 silly registry.get via: '1.1 varnish', 228 | 103 silly registry.get age: '35', 229 | 103 silly registry.get 'x-served-by': 'cache-lhr6334-LHR', 230 | 103 silly registry.get 'x-cache': 'HIT', 231 | 103 silly registry.get 'x-cache-hits': '1', 232 | 103 silly registry.get 'x-timer': 'S1430230977.367152,VS0,VE1', 233 | 103 silly registry.get vary: 'Accept', 234 | 103 silly registry.get 'keep-alive': 'timeout=10, max=50', 235 | 103 silly registry.get connection: 'Keep-Alive' } ] 236 | 104 silly addNameRange number 2 { name: 'grunt-contrib-copy', range: '*', hasData: true } 237 | 105 silly addNameRange versions [ 'grunt-contrib-copy', 238 | 105 silly addNameRange [ '0.2.0', 239 | 105 silly addNameRange '0.2.1', 240 | 105 silly addNameRange '0.2.2', 241 | 105 silly addNameRange '0.2.3', 242 | 105 silly addNameRange '0.2.4', 243 | 105 silly addNameRange '0.3.0', 244 | 105 silly addNameRange '0.3.1', 245 | 105 silly addNameRange '0.3.2', 246 | 105 silly addNameRange '0.4.0', 247 | 105 silly addNameRange '0.4.1', 248 | 105 silly addNameRange '0.5.0', 249 | 105 silly addNameRange '0.6.0', 250 | 105 silly addNameRange '0.7.0', 251 | 105 silly addNameRange '0.8.0', 252 | 105 silly addNameRange '0.4.0-rc7' ] ] 253 | 106 verbose addNamed [ 'grunt-contrib-copy', '0.8.0' ] 254 | 107 verbose addNamed [ '0.8.0', '0.8.0' ] 255 | 108 silly lockFile 4ba694f5-grunt-contrib-copy-0-8-0 grunt-contrib-copy@0.8.0 256 | 109 verbose lock grunt-contrib-copy@0.8.0 /Users/mdgriffin/.npm/4ba694f5-grunt-contrib-copy-0-8-0.lock 257 | 110 silly lockFile 1419f501-opy-grunt-contrib-copy-0-8-0-tgz https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-0.8.0.tgz 258 | 111 verbose lock https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-0.8.0.tgz /Users/mdgriffin/.npm/1419f501-opy-grunt-contrib-copy-0-8-0-tgz.lock 259 | 112 verbose addRemoteTarball [ 'https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-0.8.0.tgz', 260 | 112 verbose addRemoteTarball 'ee3027e65e4f2ffb9525a903c19efd80a8f2479b' ] 261 | 113 info retry fetch attempt 1 at 15:22:57 262 | 114 verbose fetch to= /var/folders/3t/v6v654b93fx6g9jcd9zw_0dm0000gn/T/npm-766-RdKrnlYd/registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-0.8.0.tgz 263 | 115 http GET https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-0.8.0.tgz 264 | 116 http 200 https://registry.npmjs.org/grunt-contrib-uglify 265 | 117 silly registry.get cb [ 200, 266 | 117 silly registry.get { date: 'Tue, 28 Apr 2015 14:22:57 GMT', 267 | 117 silly registry.get server: 'CouchDB/1.5.0 (Erlang OTP/R16B03)', 268 | 117 silly registry.get etag: '"D6I7VSGW1NJ3EJ7ZC9UNR4TY4"', 269 | 117 silly registry.get 'content-type': 'application/json', 270 | 117 silly registry.get 'cache-control': 'max-age=60', 271 | 117 silly registry.get 'content-length': '65582', 272 | 117 silly registry.get 'accept-ranges': 'bytes', 273 | 117 silly registry.get via: '1.1 varnish', 274 | 117 silly registry.get age: '23', 275 | 117 silly registry.get 'x-served-by': 'cache-lhr6327-LHR', 276 | 117 silly registry.get 'x-cache': 'HIT', 277 | 117 silly registry.get 'x-cache-hits': '1', 278 | 117 silly registry.get 'x-timer': 'S1430230977.382035,VS0,VE1', 279 | 117 silly registry.get vary: 'Accept', 280 | 117 silly registry.get 'keep-alive': 'timeout=10, max=50', 281 | 117 silly registry.get connection: 'Keep-Alive' } ] 282 | 118 silly addNameRange number 2 { name: 'grunt-contrib-uglify', range: '*', hasData: true } 283 | 119 silly addNameRange versions [ 'grunt-contrib-uglify', 284 | 119 silly addNameRange [ '0.1.0', 285 | 119 silly addNameRange '0.1.1', 286 | 119 silly addNameRange '0.1.2', 287 | 119 silly addNameRange '0.2.0', 288 | 119 silly addNameRange '0.2.1', 289 | 119 silly addNameRange '0.2.2', 290 | 119 silly addNameRange '0.2.3', 291 | 119 silly addNameRange '0.2.4', 292 | 119 silly addNameRange '0.2.5', 293 | 119 silly addNameRange '0.2.6', 294 | 119 silly addNameRange '0.2.7', 295 | 119 silly addNameRange '0.3.0', 296 | 119 silly addNameRange '0.3.1', 297 | 119 silly addNameRange '0.1.1-rc5', 298 | 119 silly addNameRange '0.1.1-rc6', 299 | 119 silly addNameRange '0.3.2', 300 | 119 silly addNameRange '0.3.3', 301 | 119 silly addNameRange '0.4.0', 302 | 119 silly addNameRange '0.5.0', 303 | 119 silly addNameRange '0.4.1', 304 | 119 silly addNameRange '0.5.1', 305 | 119 silly addNameRange '0.6.0', 306 | 119 silly addNameRange '0.7.0', 307 | 119 silly addNameRange '0.8.0', 308 | 119 silly addNameRange '0.8.1', 309 | 119 silly addNameRange '0.9.0', 310 | 119 silly addNameRange '0.9.1' ] ] 311 | 120 verbose addNamed [ 'grunt-contrib-uglify', '0.9.1' ] 312 | 121 verbose addNamed [ '0.9.1', '0.9.1' ] 313 | 122 silly lockFile 59c70bbc-grunt-contrib-uglify-0-9-1 grunt-contrib-uglify@0.9.1 314 | 123 verbose lock grunt-contrib-uglify@0.9.1 /Users/mdgriffin/.npm/59c70bbc-grunt-contrib-uglify-0-9-1.lock 315 | 124 silly lockFile 6cc09e86-y-grunt-contrib-uglify-0-9-1-tgz https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-uglify-0.9.1.tgz 316 | 125 verbose lock https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-uglify-0.9.1.tgz /Users/mdgriffin/.npm/6cc09e86-y-grunt-contrib-uglify-0-9-1-tgz.lock 317 | 126 verbose addRemoteTarball [ 'https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-uglify-0.9.1.tgz', 318 | 126 verbose addRemoteTarball '1eb8420009f15ed1a97368077479ab25ded28d1b' ] 319 | 127 info retry fetch attempt 1 at 15:22:57 320 | 128 verbose fetch to= /var/folders/3t/v6v654b93fx6g9jcd9zw_0dm0000gn/T/npm-766-RdKrnlYd/registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-uglify-0.9.1.tgz 321 | 129 http GET https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-uglify-0.9.1.tgz 322 | 130 http 200 https://registry.npmjs.org/grunt-contrib-cssmin 323 | 131 silly registry.get cb [ 200, 324 | 131 silly registry.get { date: 'Tue, 28 Apr 2015 14:22:57 GMT', 325 | 131 silly registry.get server: 'CouchDB/1.5.0 (Erlang OTP/R16B03)', 326 | 131 silly registry.get etag: '"2R9QRGV3OM9MGH9K0V43KVNS6"', 327 | 131 silly registry.get 'content-type': 'application/json', 328 | 131 silly registry.get 'cache-control': 'max-age=60', 329 | 131 silly registry.get 'content-length': '32949', 330 | 131 silly registry.get 'accept-ranges': 'bytes', 331 | 131 silly registry.get via: '1.1 varnish', 332 | 131 silly registry.get age: '6', 333 | 131 silly registry.get 'x-served-by': 'cache-lhr6326-LHR', 334 | 131 silly registry.get 'x-cache': 'HIT', 335 | 131 silly registry.get 'x-cache-hits': '107', 336 | 131 silly registry.get 'x-timer': 'S1430230977.430097,VS0,VE0', 337 | 131 silly registry.get vary: 'Accept', 338 | 131 silly registry.get 'keep-alive': 'timeout=10, max=50', 339 | 131 silly registry.get connection: 'Keep-Alive' } ] 340 | 132 silly addNameRange number 2 { name: 'grunt-contrib-cssmin', range: '*', hasData: true } 341 | 133 silly addNameRange versions [ 'grunt-contrib-cssmin', 342 | 133 silly addNameRange [ '0.4.0', 343 | 133 silly addNameRange '0.4.1', 344 | 133 silly addNameRange '0.4.2', 345 | 133 silly addNameRange '0.5.0', 346 | 133 silly addNameRange '0.6.0', 347 | 133 silly addNameRange '0.6.1', 348 | 133 silly addNameRange '0.6.2', 349 | 133 silly addNameRange '0.7.0', 350 | 133 silly addNameRange '0.8.0', 351 | 133 silly addNameRange '0.9.0', 352 | 133 silly addNameRange '0.10.0', 353 | 133 silly addNameRange '0.11.0', 354 | 133 silly addNameRange '0.12.0', 355 | 133 silly addNameRange '0.12.1', 356 | 133 silly addNameRange '0.12.2' ] ] 357 | 134 verbose addNamed [ 'grunt-contrib-cssmin', '0.12.2' ] 358 | 135 verbose addNamed [ '0.12.2', '0.12.2' ] 359 | 136 silly lockFile 703e7501-grunt-contrib-cssmin-0-12-2 grunt-contrib-cssmin@0.12.2 360 | 137 verbose lock grunt-contrib-cssmin@0.12.2 /Users/mdgriffin/.npm/703e7501-grunt-contrib-cssmin-0-12-2.lock 361 | 138 silly lockFile edea93e1--grunt-contrib-cssmin-0-12-2-tgz https://registry.npmjs.org/grunt-contrib-cssmin/-/grunt-contrib-cssmin-0.12.2.tgz 362 | 139 verbose lock https://registry.npmjs.org/grunt-contrib-cssmin/-/grunt-contrib-cssmin-0.12.2.tgz /Users/mdgriffin/.npm/edea93e1--grunt-contrib-cssmin-0-12-2-tgz.lock 363 | 140 verbose addRemoteTarball [ 'https://registry.npmjs.org/grunt-contrib-cssmin/-/grunt-contrib-cssmin-0.12.2.tgz', 364 | 140 verbose addRemoteTarball '254957427abdf63cd18f0690d34c0083fb544cff' ] 365 | 141 info retry fetch attempt 1 at 15:22:58 366 | 142 verbose fetch to= /var/folders/3t/v6v654b93fx6g9jcd9zw_0dm0000gn/T/npm-766-RdKrnlYd/registry.npmjs.org/grunt-contrib-cssmin/-/grunt-contrib-cssmin-0.12.2.tgz 367 | 143 http GET https://registry.npmjs.org/grunt-contrib-cssmin/-/grunt-contrib-cssmin-0.12.2.tgz 368 | 144 http 200 https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-0.8.0.tgz 369 | 145 silly lockFile 1419f501-opy-grunt-contrib-copy-0-8-0-tgz https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-0.8.0.tgz 370 | 146 silly lockFile 1419f501-opy-grunt-contrib-copy-0-8-0-tgz https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-0.8.0.tgz 371 | 147 silly lockFile 4ba694f5-grunt-contrib-copy-0-8-0 grunt-contrib-copy@0.8.0 372 | 148 silly lockFile 4ba694f5-grunt-contrib-copy-0-8-0 grunt-contrib-copy@0.8.0 373 | 149 silly lockFile 89c12057-grunt-contrib-copy grunt-contrib-copy@* 374 | 150 silly lockFile 89c12057-grunt-contrib-copy grunt-contrib-copy@* 375 | 151 http 200 https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-uglify-0.9.1.tgz 376 | 152 http 200 https://registry.npmjs.org/grunt-contrib-cssmin/-/grunt-contrib-cssmin-0.12.2.tgz 377 | 153 silly lockFile edea93e1--grunt-contrib-cssmin-0-12-2-tgz https://registry.npmjs.org/grunt-contrib-cssmin/-/grunt-contrib-cssmin-0.12.2.tgz 378 | 154 silly lockFile edea93e1--grunt-contrib-cssmin-0-12-2-tgz https://registry.npmjs.org/grunt-contrib-cssmin/-/grunt-contrib-cssmin-0.12.2.tgz 379 | 155 silly lockFile 703e7501-grunt-contrib-cssmin-0-12-2 grunt-contrib-cssmin@0.12.2 380 | 156 silly lockFile 703e7501-grunt-contrib-cssmin-0-12-2 grunt-contrib-cssmin@0.12.2 381 | 157 silly lockFile b3f2337d-grunt-contrib-cssmin grunt-contrib-cssmin@* 382 | 158 silly lockFile b3f2337d-grunt-contrib-cssmin grunt-contrib-cssmin@* 383 | 159 http 200 https://registry.npmjs.org/jquery 384 | 160 silly registry.get cb [ 200, 385 | 160 silly registry.get { date: 'Tue, 28 Apr 2015 14:22:57 GMT', 386 | 160 silly registry.get server: 'CouchDB/1.5.0 (Erlang OTP/R16B03)', 387 | 160 silly registry.get etag: '"60B6HXEE446YGLHNB0U6DXCEB"', 388 | 160 silly registry.get 'content-type': 'application/json', 389 | 160 silly registry.get 'cache-control': 'max-age=60', 390 | 160 silly registry.get 'content-length': '51680', 391 | 160 silly registry.get 'accept-ranges': 'bytes', 392 | 160 silly registry.get via: '1.1 varnish', 393 | 160 silly registry.get age: '46', 394 | 160 silly registry.get 'x-served-by': 'cache-lhr6335-LHR', 395 | 160 silly registry.get 'x-cache': 'HIT', 396 | 160 silly registry.get 'x-cache-hits': '1', 397 | 160 silly registry.get 'x-timer': 'S1430230977.419335,VS0,VE1', 398 | 160 silly registry.get vary: 'Accept', 399 | 160 silly registry.get 'keep-alive': 'timeout=10, max=50', 400 | 160 silly registry.get connection: 'Keep-Alive' } ] 401 | 161 silly addNameRange number 2 { name: 'jquery', range: '>=1.9.0', hasData: true } 402 | 162 silly addNameRange versions [ 'jquery', 403 | 162 silly addNameRange [ '1.5.1', 404 | 162 silly addNameRange '1.6.2', 405 | 162 silly addNameRange '1.6.3', 406 | 162 silly addNameRange '1.7.2', 407 | 162 silly addNameRange '1.7.3', 408 | 162 silly addNameRange '1.8.2', 409 | 162 silly addNameRange '1.8.3', 410 | 162 silly addNameRange '2.1.0-beta2', 411 | 162 silly addNameRange '2.1.0-beta3', 412 | 162 silly addNameRange '1.11.0-beta3', 413 | 162 silly addNameRange '1.11.0-rc1', 414 | 162 silly addNameRange '2.1.0-rc1', 415 | 162 silly addNameRange '1.11.0', 416 | 162 silly addNameRange '2.1.0', 417 | 162 silly addNameRange '2.1.1-beta1', 418 | 162 silly addNameRange '1.11.1-beta1', 419 | 162 silly addNameRange '2.1.1-rc1', 420 | 162 silly addNameRange '1.11.1-rc1', 421 | 162 silly addNameRange '2.1.1-rc2', 422 | 162 silly addNameRange '1.11.1-rc2', 423 | 162 silly addNameRange '2.1.1', 424 | 162 silly addNameRange '1.11.1', 425 | 162 silly addNameRange '1.9.1', 426 | 162 silly addNameRange '2.1.2', 427 | 162 silly addNameRange '1.11.2', 428 | 162 silly addNameRange '2.1.3' ] ] 429 | 163 verbose addNamed [ 'jquery', '2.1.3' ] 430 | 164 verbose addNamed [ '2.1.3', '2.1.3' ] 431 | 165 silly lockFile 6fbd5787-jquery-2-1-3 jquery@2.1.3 432 | 166 verbose lock jquery@2.1.3 /Users/mdgriffin/.npm/6fbd5787-jquery-2-1-3.lock 433 | 167 silly lockFile 38b3ffac-pmjs-org-jquery-jquery-2-1-3-tgz https://registry.npmjs.org/jquery/-/jquery-2.1.3.tgz 434 | 168 verbose lock https://registry.npmjs.org/jquery/-/jquery-2.1.3.tgz /Users/mdgriffin/.npm/38b3ffac-pmjs-org-jquery-jquery-2-1-3-tgz.lock 435 | 169 verbose addRemoteTarball [ 'https://registry.npmjs.org/jquery/-/jquery-2.1.3.tgz', 436 | 169 verbose addRemoteTarball '6ec55204673d505d39432c5bf5cfad10e1dbad2e' ] 437 | 170 info retry fetch attempt 1 at 15:22:58 438 | 171 verbose fetch to= /var/folders/3t/v6v654b93fx6g9jcd9zw_0dm0000gn/T/npm-766-RdKrnlYd/registry.npmjs.org/jquery/-/jquery-2.1.3.tgz 439 | 172 http GET https://registry.npmjs.org/jquery/-/jquery-2.1.3.tgz 440 | 173 silly lockFile 6cc09e86-y-grunt-contrib-uglify-0-9-1-tgz https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-uglify-0.9.1.tgz 441 | 174 silly lockFile 6cc09e86-y-grunt-contrib-uglify-0-9-1-tgz https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-uglify-0.9.1.tgz 442 | 175 silly lockFile 59c70bbc-grunt-contrib-uglify-0-9-1 grunt-contrib-uglify@0.9.1 443 | 176 silly lockFile 59c70bbc-grunt-contrib-uglify-0-9-1 grunt-contrib-uglify@0.9.1 444 | 177 silly lockFile d203f81c-grunt-contrib-uglify grunt-contrib-uglify@* 445 | 178 silly lockFile d203f81c-grunt-contrib-uglify grunt-contrib-uglify@* 446 | 179 http 200 https://registry.npmjs.org/jquery/-/jquery-2.1.3.tgz 447 | 180 http 200 https://registry.npmjs.org/grunt-autoprefixer 448 | 181 silly registry.get cb [ 200, 449 | 181 silly registry.get { date: 'Tue, 28 Apr 2015 14:22:57 GMT', 450 | 181 silly registry.get server: 'CouchDB/1.5.0 (Erlang OTP/R16B03)', 451 | 181 silly registry.get etag: '"6D5O6RQ4YCDC4YUXY0MD6JT2A"', 452 | 181 silly registry.get 'content-type': 'application/json', 453 | 181 silly registry.get 'cache-control': 'max-age=60', 454 | 181 silly registry.get 'content-length': '58263', 455 | 181 silly registry.get 'accept-ranges': 'bytes', 456 | 181 silly registry.get via: '1.1 varnish', 457 | 181 silly registry.get age: '0', 458 | 181 silly registry.get 'x-served-by': 'cache-lhr6323-LHR', 459 | 181 silly registry.get 'x-cache': 'HIT', 460 | 181 silly registry.get 'x-cache-hits': '1', 461 | 181 silly registry.get 'x-timer': 'S1430230977.393258,VS0,VE156', 462 | 181 silly registry.get vary: 'Accept', 463 | 181 silly registry.get 'keep-alive': 'timeout=10, max=50', 464 | 181 silly registry.get connection: 'Keep-Alive' } ] 465 | 182 silly addNameRange number 2 { name: 'grunt-autoprefixer', range: '*', hasData: true } 466 | 183 silly addNameRange versions [ 'grunt-autoprefixer', 467 | 183 silly addNameRange [ '0.1.0', 468 | 183 silly addNameRange '0.1.20130424', 469 | 183 silly addNameRange '0.1.20130516', 470 | 183 silly addNameRange '0.1.20130615', 471 | 183 silly addNameRange '0.2.0', 472 | 183 silly addNameRange '0.2.20130718', 473 | 183 silly addNameRange '0.2.20130806', 474 | 183 silly addNameRange '0.3.0', 475 | 183 silly addNameRange '0.3.1', 476 | 183 silly addNameRange '0.4.0', 477 | 183 silly addNameRange '0.4.1', 478 | 183 silly addNameRange '0.4.2', 479 | 183 silly addNameRange '0.5.0', 480 | 183 silly addNameRange '0.6.0', 481 | 183 silly addNameRange '0.6.1', 482 | 183 silly addNameRange '0.6.2', 483 | 183 silly addNameRange '0.6.3', 484 | 183 silly addNameRange '0.6.4', 485 | 183 silly addNameRange '0.6.5', 486 | 183 silly addNameRange '0.7.0', 487 | 183 silly addNameRange '0.7.1', 488 | 183 silly addNameRange '0.7.2', 489 | 183 silly addNameRange '0.7.3', 490 | 183 silly addNameRange '0.7.4', 491 | 183 silly addNameRange '0.7.5', 492 | 183 silly addNameRange '0.7.6', 493 | 183 silly addNameRange '0.8.0', 494 | 183 silly addNameRange '0.8.1', 495 | 183 silly addNameRange '0.8.2', 496 | 183 silly addNameRange '1.0.0', 497 | 183 silly addNameRange '1.0.1', 498 | 183 silly addNameRange '2.0.0', 499 | 183 silly addNameRange '2.1.0', 500 | 183 silly addNameRange '2.2.0', 501 | 183 silly addNameRange '3.0.0' ] ] 502 | 184 verbose addNamed [ 'grunt-autoprefixer', '3.0.0' ] 503 | 185 verbose addNamed [ '3.0.0', '3.0.0' ] 504 | 186 silly lockFile bbbd6667-grunt-autoprefixer-3-0-0 grunt-autoprefixer@3.0.0 505 | 187 verbose lock grunt-autoprefixer@3.0.0 /Users/mdgriffin/.npm/bbbd6667-grunt-autoprefixer-3-0-0.lock 506 | 188 silly lockFile e7978ac8-xer-grunt-autoprefixer-3-0-0-tgz https://registry.npmjs.org/grunt-autoprefixer/-/grunt-autoprefixer-3.0.0.tgz 507 | 189 verbose lock https://registry.npmjs.org/grunt-autoprefixer/-/grunt-autoprefixer-3.0.0.tgz /Users/mdgriffin/.npm/e7978ac8-xer-grunt-autoprefixer-3-0-0-tgz.lock 508 | 190 verbose addRemoteTarball [ 'https://registry.npmjs.org/grunt-autoprefixer/-/grunt-autoprefixer-3.0.0.tgz', 509 | 190 verbose addRemoteTarball 'df61b662f06c4bfd93cf659ef6d706faf0153755' ] 510 | 191 info retry fetch attempt 1 at 15:22:59 511 | 192 verbose fetch to= /var/folders/3t/v6v654b93fx6g9jcd9zw_0dm0000gn/T/npm-766-RdKrnlYd/registry.npmjs.org/grunt-autoprefixer/-/grunt-autoprefixer-3.0.0.tgz 512 | 193 http GET https://registry.npmjs.org/grunt-autoprefixer/-/grunt-autoprefixer-3.0.0.tgz 513 | 194 http 200 https://registry.npmjs.org/grunt-autoprefixer/-/grunt-autoprefixer-3.0.0.tgz 514 | 195 silly lockFile e7978ac8-xer-grunt-autoprefixer-3-0-0-tgz https://registry.npmjs.org/grunt-autoprefixer/-/grunt-autoprefixer-3.0.0.tgz 515 | 196 silly lockFile e7978ac8-xer-grunt-autoprefixer-3-0-0-tgz https://registry.npmjs.org/grunt-autoprefixer/-/grunt-autoprefixer-3.0.0.tgz 516 | 197 silly lockFile bbbd6667-grunt-autoprefixer-3-0-0 grunt-autoprefixer@3.0.0 517 | 198 silly lockFile bbbd6667-grunt-autoprefixer-3-0-0 grunt-autoprefixer@3.0.0 518 | 199 silly lockFile ad1a3c41-grunt-autoprefixer grunt-autoprefixer@* 519 | 200 silly lockFile ad1a3c41-grunt-autoprefixer grunt-autoprefixer@* 520 | 201 silly lockFile 38b3ffac-pmjs-org-jquery-jquery-2-1-3-tgz https://registry.npmjs.org/jquery/-/jquery-2.1.3.tgz 521 | 202 silly lockFile 38b3ffac-pmjs-org-jquery-jquery-2-1-3-tgz https://registry.npmjs.org/jquery/-/jquery-2.1.3.tgz 522 | 203 silly lockFile 6fbd5787-jquery-2-1-3 jquery@2.1.3 523 | 204 silly lockFile 6fbd5787-jquery-2-1-3 jquery@2.1.3 524 | 205 silly lockFile 169ab83b-jquery-1-9-0 jquery@>=1.9.0 525 | 206 silly lockFile 169ab83b-jquery-1-9-0 jquery@>=1.9.0 526 | 207 error Error: EACCES, mkdir '/Users/mdgriffin/.npm/grunt-contrib-copy/0.8.0' 527 | 207 error { [Error: EACCES, mkdir '/Users/mdgriffin/.npm/grunt-contrib-copy/0.8.0'] 528 | 207 error errno: 3, 529 | 207 error code: 'EACCES', 530 | 207 error path: '/Users/mdgriffin/.npm/grunt-contrib-copy/0.8.0', 531 | 207 error parent: 'pogo-slider' } 532 | 208 error Please try running this command again as root/Administrator. 533 | 209 error System Darwin 14.3.0 534 | 210 error command "node" "/usr/local/bin/npm" "install" 535 | 211 error cwd /Users/mdgriffin/Desktop/pogo-slider 536 | 212 error node -v v0.10.35 537 | 213 error npm -v 1.4.28 538 | 214 error path /Users/mdgriffin/.npm/grunt-contrib-copy/0.8.0 539 | 215 error code EACCES 540 | 216 error errno 3 541 | 217 error stack Error: EACCES, mkdir '/Users/mdgriffin/.npm/grunt-contrib-copy/0.8.0' 542 | 218 verbose exit [ 3, true ] 543 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pogo-slider", 3 | "description": "jQuery animated slider plugin", 4 | "version": "0.7.0", 5 | "keywords": [ 6 | "jquery", 7 | "jquery-plugin", 8 | "slider", 9 | "client" 10 | ], 11 | "author": "Michael Griffin ", 12 | "homepage": "https://github.com/mdgriffin/pogo-slider", 13 | "repository": { 14 | "type": "git", 15 | "url": "git://github.com/mdgriffin/pogo-slider.git" 16 | }, 17 | "license": "MIT", 18 | "files": [ 19 | "jquery.pogo-slider.min.js", 20 | "pogo-slider.min.css", 21 | "LICENSE.txt" 22 | ], 23 | "dependencies": { 24 | "jquery": ">=1.9.0" 25 | }, 26 | "devDependencies": { 27 | "grunt-contrib-uglify": "*", 28 | "grunt-contrib-cssmin": "*", 29 | "grunt-autoprefixer": "*", 30 | "grunt-contrib-copy": "*" 31 | } 32 | } -------------------------------------------------------------------------------- /pogo-slider.min.css: -------------------------------------------------------------------------------- 1 | .pogoSlider-dir-btn:focus,.pogoSlider-nav-btn:focus{outline:0}.pogoSlider{width:100%;height:0;padding-bottom:48%;position:relative;overflow:hidden}#column-left .pogoSlider,#column-right .pogoSlider,#content .pogoSlider{margin-bottom:20px}.pogoSlider--banner .pogoSlider-slide{ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";filter:alpha(opacity=100);opacity:1}.pogoSlider-slide{width:100%;height:100%;position:absolute;background-size:cover;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);opacity:0;-webkit-perspective:1300px;perspective:1300px;overflow:hidden}.pogoSlider-loading{position:absolute;top:0;left:0;width:100%;height:100%;background:#eaeaea;z-index:11}.pogoSlider-loading-icon{position:absolute;top:50%;margin-top:-18px;left:50%;margin-left:-18px;width:36px;height:36px;background-image:url(data:image/gif;base64,R0lGODlhJAAkAPIAAJmZmczMzObm5vLy8gAAAAAAAAAAAAAAACH5BA0KAAQAIf8LTkVUU0NBUEUyLjADAQAAACwAAAAAJAAkAAADfQi6DPQwyhmbpTgT27Sv3PKNoTh6pXKi6aqljovB8tzWE43vfH8GwKAw4HsMj0XCcZhcCptOIDQ6dVaXV2QxKk16vzWBeEwWPAbotHpUbp/VcHab/Ian5XNx3T7A5/d2fnOAcR95Y4RrhodmBHx3i4eJkB6MjY9ogm6OmCMJACH5BA0KAAQALAAAAAAkACQAAAN+GLocRCDK+aq1Lb/Jwf1P1mydBH4iQ5beiaXKWrovLHd0BccQ2+Y7R4+VC+1unCIhiKQUmcOZckqtWl2CrHYruIK4YO8HzBVfyFuzBa1VV9hZ9wPeldPlhLsdju/7vQOBgoMDeISHhoeDiYqBjI2PipGIco2Ck4SYi5WWhXIJACH5BA0KAAQALAAAAAAkACQAAAN7KLosRCHK+YC9GLT9pg9Vlm1N90mheJGMeYKEirGLe6YyrdgfruoOyAsmW+l4Hp8IiKTEipqj8KUcSYdE6GPL7Xq/4LB4/B2Yz+gBeZ1ur8nt9HscR8/F9fM9nDfvwX1qf16Bg4R9hl2FiYyNjo+QkZKTlJWWl5iZmpoJACH5BA0KAAQALAAAAAAkACQAAAN8OLo8RCLK+YK9OLT9phdVlm1N90mheJGMeYKEirGLe6YyrdgfruoOyAsmW+l4Hp8IiKTEipqj8KUcSYdE6GPL7Xq/4LB4TC5/Aei0GmAer99t8XsdD8/VdfA9nT/v2X1df4CBW4OFXIeID4qLjo+QkZKTlJWWl5iZmptxCQAh+QQNCgAEACwAAAAAJAAkAAADfUi6vPMwKkGrFS2ryMe8l5Z1EgGGIkNC30ml6uqZ7gtvcuve+KqfPIJsVrPdhj9QEEmrLXPNXXBKrVqvi4B2yw1gM93wtxHujhll7jmb1q4Vbfc77p3H3wQ6Xo/v+68AgYKDAHiEh4aHg4mKgYyNj4qRiG+NgpOEmIuVlgAJACH5BA0KAAQALAAAAAAkACQAAAN8SLrcziPKOZ69hGrMoZ5d+IEhN0qleVbptbLt88bWTDv27Z167/8cgXBIFAAJxeQxWVwyh86nESgVRp9XZlZJrR6/4AdgTC4rAui0OhAquwHn9br9JsflaXodTsCr9XV3foBvgniEboZyiGZ9fmiMdo6PkWOKcx17lpN+CQAh+QQNCgAEACwAAAAAJAAkAAADd0i63P4wykmrvTjrzbv/YCiOZGmSQ6quQ8i+7rvGckrXt5zDYK3uLODsRIQAjsgkQBFoOp8KgXRKFSivzKc2Wq1elVmtk9udfpNhcYBctp6PaTG7/IYT1GNC21yPb/V7bm9+UIB7dUt3eGuGbYiEeYGCZ5BNc10JACH5BA0KAAQALAAAAAAkACQAAAN3SLrc/jDKSau9OOvNu/9gKI5kaS5Aqq5AyL7uu8ZySte3nMNgre4s4OxELAaOyGRAIWg6n4qBdEodKK/MpzZarV6VWa2T251+k2GxgFy2no9pMbv8hhPUY0LbXI9v9Xtub35QgHt1S3d4a4ZtiIR5gYJnkE1zXQkAOw==)}.pogoSlider-slide-element{-webkit-animation-fill-mode:both;animation-fill-mode:both}.m-pogoSlider .pogoSlider-slide-element{position:absolute;margin:0;box-sizing:border-box}.pogoSlider-progressBar{position:absolute;width:100%;height:5px;top:0;left:0;background:#fff;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=20)";filter:alpha(opacity=20);background:rgba(255,255,255,.2);z-index:6}.pogoSlider-progressBar-duration{position:absolute;height:100%;left:0;width:0;background:#fff;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";filter:alpha(opacity=40);background:rgba(255,255,255,.4)}.pogoSlider-dir-btn{position:absolute;z-index:10;background:0 0;width:20px;height:20px;border-color:#eaeaea;border-color:rgba(255,255,255,.7);border-style:solid;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);cursor:pointer}.pogoSlider-dir-btn:hover{border-color:#fff}.pogoSlider--dirBottomLeft .pogoSlider-dir-btn--prev,.pogoSlider--dirBottomRight .pogoSlider-dir-btn--prev,.pogoSlider--dirCenterHorizontal .pogoSlider-dir-btn--prev,.pogoSlider--dirTopLeft .pogoSlider-dir-btn--prev,.pogoSlider--dirTopRight .pogoSlider-dir-btn--prev{border-width:0 0 3px 3px}.pogoSlider--dirBottomLeft .pogoSlider-dir-btn--next,.pogoSlider--dirBottomRight .pogoSlider-dir-btn--next,.pogoSlider--dirCenterHorizontal .pogoSlider-dir-btn--next,.pogoSlider--dirTopLeft .pogoSlider-dir-btn--next,.pogoSlider--dirTopRight .pogoSlider-dir-btn--next{border-width:3px 3px 0 0}.pogoSlider--dirCenterVertical .pogoSlider-dir-btn--next{border-width:3px 0 0 3px}.pogoSlider--dirCenterVertical .pogoSlider-dir-btn--prev{border-width:0 3px 3px 0}.pogoSlider--dirCenterVertical .pogoSlider-dir-btn--next,.pogoSlider--dirTopLeft .pogoSlider-dir-btn,.pogoSlider--dirTopRight .pogoSlider-dir-btn{top:14px}.pogoSlider--dirBottomLeft .pogoSlider-dir-btn--prev,.pogoSlider--dirCenterHorizontal .pogoSlider-dir-btn--prev,.pogoSlider--dirTopLeft .pogoSlider-dir-btn--prev{left:14px}.pogoSlider--dirBottomLeft .pogoSlider-dir-btn--next,.pogoSlider--dirTopLeft .pogoSlider-dir-btn--next{left:50px}.pogoSlider--dirBottomRight .pogoSlider-dir-btn--prev,.pogoSlider--dirTopRight .pogoSlider-dir-btn--prev{right:50px}.pogoSlider--dirBottomRight .pogoSlider-dir-btn--next,.pogoSlider--dirCenterHorizontal .pogoSlider-dir-btn--next,.pogoSlider--dirTopRight .pogoSlider-dir-btn--next{right:14px}.pogoSlider--dirBottomLeft .pogoSlider-dir-btn,.pogoSlider--dirBottomRight .pogoSlider-dir-btn,.pogoSlider--dirCenterVertical .pogoSlider-dir-btn--prev{bottom:14px}.pogoSlider--dirCenterVertical .pogoSlider-dir-btn{left:50%;margin-left:-10px}.pogoSlider--dirCenterHorizontal .pogoSlider-dir-btn{top:50%;margin-top:-10px}.pogoSlider-nav{position:absolute;padding:0;margin:0;z-index:10}.pogoSlider--navBottom .pogoSlider-nav,.pogoSlider--navTop .pogoSlider-nav{left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.pogoSlider--navTop .pogoSlider-nav{top:10px}.pogoSlider--navBottom .pogoSlider-nav{bottom:10px}.pogoSlider--navBottom .pogoSlider-nav li,.pogoSlider--navTop .pogoSlider-nav li{display:inline;margin:0 6px}.pogoSlider--navLeft .pogoSlider-nav,.pogoSlider--navRight .pogoSlider-nav{top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.pogoSlider--navLeft .pogoSlider-nav{left:10px}.pogoSlider--navRight .pogoSlider-nav{right:10px}.pogoSlider--navLeft .pogoSlider-nav li,.pogoSlider--navRight .pogoSlider-nav li{display:block;margin:6px 0}.pogoSlider-nav-btn{background:#ccc;background:rgba(255,255,255,.5);border:none;border-radius:50%;width:20px;height:20px;box-shadow:0 1px 1px rgba(0,0,0,.1);cursor:pointer}.pogoSlider-nav-btn--selected{background:#fff;box-shadow:0 1px 1px rgba(0,0,0,.3)}.pogoSlider-slide-slice{overflow:hidden;position:absolute;background-size:cover}.pogoSlider-slide-slice-inner{position:absolute;overflow:hidden}.pogoSlider-animation-slideDownIn{-webkit-animation-name:slideDownIn;animation-name:slideDownIn}@-webkit-keyframes slideDownIn{0%{-webkit-transform:translateY(-50px);transform:translateY(-50px);opacity:0}100%{-webkit-transform:translateY(0);transform:translateY(0);opacity:1}}@keyframes slideDownIn{0%{-webkit-transform:translateY(-50px);transform:translateY(-50px);opacity:0}100%{-webkit-transform:translateY(0);transform:translateY(0);opacity:1}}.pogoSlider-animation-slideDownOut{-webkit-animation-name:slideDownOut;animation-name:slideDownOut}@-webkit-keyframes slideDownOut{0%{-webkit-transform:translateY(0);transform:translateY(0);opacity:1}100%{-webkit-transform:translateY(50px);transform:translateY(50px);opacity:0}}@keyframes slideDownOut{0%{-webkit-transform:translateY(0);transform:translateY(0);opacity:1}100%{-webkit-transform:translateY(50px);transform:translateY(50px);opacity:0}}.pogoSlider-animation-slideUpIn{-webkit-animation-name:slideUpIn;animation-name:slideUpIn}@-webkit-keyframes slideUpIn{0%{-webkit-transform:translateY(50px);transform:translateY(50px);opacity:0}100%{-webkit-transform:translateY(0);transform:translateY(0);opacity:1}}@keyframes slideUpIn{0%{-webkit-transform:translateY(50px);transform:translateY(50px);opacity:0}100%{-webkit-transform:translateY(0);transform:translateY(0);opacity:1}}.pogoSlider-animation-slideUpOut{-webkit-animation-name:slideUpOut;animation-name:slideUpOut}@-webkit-keyframes slideUpOut{0%{-webkit-transform:translateY(0);transform:translateY(0);opacity:1}100%{-webkit-transform:translateY(50px);transform:translateY(50px);opacity:0}}@keyframes slideUpOut{0%{-webkit-transform:translateY(0);transform:translateY(0);opacity:1}100%{-webkit-transform:translateY(50px);transform:translateY(50px);opacity:0}}.pogoSlider-animation-slideRightIn{-webkit-animation-name:slideRightIn;animation-name:slideRightIn}.pogoSlider-animation-slideRightOut{-webkit-animation-name:slideRightOut;animation-name:slideRightOut}@-webkit-keyframes slideRightIn{0%{-webkit-transform:translateX(-50px);transform:translateX(-50px);opacity:0}100%{-webkit-transform:translateX(0);transform:translateX(0);opacity:1}}@keyframes slideRightIn{0%{-webkit-transform:translateX(-50px);transform:translateX(-50px);opacity:0}100%{-webkit-transform:translateX(0);transform:translateX(0);opacity:1}}@-webkit-keyframes slideRightOut{0%{-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform:translateX(50px);transform:translateX(50px);opacity:0}}@keyframes slideRightOut{0%{-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform:translateX(50px);transform:translateX(50px);opacity:0}}.pogoSlider-animation-slideLeftIn{-webkit-animation-name:slideLeftIn;animation-name:slideLeftIn}.pogoSlider-animation-slideLeftOut{-webkit-animation-name:slideLeftOut;animation-name:slideLeftOut}@-webkit-keyframes slideLeftIn{0%{-webkit-transform:translateX(50px);transform:translateX(50px);opacity:0}100%{-webkit-transform:translateX(0);transform:translateX(0);opacity:1}}@keyframes slideLeftIn{0%{-webkit-transform:translateX(50px);transform:translateX(50px);opacity:0}100%{-webkit-transform:translateX(0);transform:translateX(0);opacity:1}}@-webkit-keyframes slideLeftOut{0%{-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform:translateX(-50px);transform:translateX(-50px);opacity:0}}@keyframes slideLeftOut{0%{-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform:translateX(-50px);transform:translateX(-50px);opacity:0}}.pogoSlider-animation-expandIn{-webkit-animation-name:expandIn;animation-name:expandIn}.pogoSlider-animation-expandOut{-webkit-animation-name:expandOut;animation-name:expandOut}@-webkit-keyframes expandIn{0%{-webkit-transform:scale(.7);transform:scale(.7);opacity:0}100%{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes expandIn{0%{-webkit-transform:scale(.7);transform:scale(.7);opacity:0}100%{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@-webkit-keyframes expandOut{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}100%{-webkit-transform:scale(1.5);transform:scale(1.5);opacity:0}}@keyframes expandOut{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}100%{-webkit-transform:scale(1.5);transform:scale(1.5);opacity:0}}.pogoSlider-animation-contractIn{-webkit-animation-name:contractIn;animation-name:contractIn}.pogoSlider-animation-contractOut{-webkit-animation-name:contractOut;animation-name:contractOut}@-webkit-keyframes contractIn{0%{-webkit-transform:scale(2);transform:scale(2);opacity:0}100%{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes contractIn{0%{-webkit-transform:scale(2);transform:scale(2);opacity:0}100%{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@-webkit-keyframes contractOut{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}100%{-webkit-transform:scale(.5);transform:scale(.5);opacity:0}}@keyframes contractOut{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}100%{-webkit-transform:scale(.5);transform:scale(.5);opacity:0}}.pogoSlider-animation-spinIn{-webkit-animation-name:spinIn;animation-name:spinIn}.pogoSlider-animation-spinOut{-webkit-animation-name:spinOut;animation-name:spinOut}@-webkit-keyframes spinIn{0%{-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:scale(0)rotate(720deg);transform:scale(0)rotate(720deg)}100%{-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:scale(1)rotate(0);transform:scale(1)rotate(0)}}@keyframes spinIn{0%{-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:scale(0)rotate(720deg);transform:scale(0)rotate(720deg)}100%{-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:scale(1)rotate(0);transform:scale(1)rotate(0)}}@-webkit-keyframes spinOut{0%{-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:scale(1)rotate(0);transform:scale(1)rotate(0)}100%{-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:scale(0)rotate(720deg);transform:scale(0)rotate(720deg)}}@keyframes spinOut{0%{-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:scale(1)rotate(0);transform:scale(1)rotate(0)}100%{-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:scale(0)rotate(720deg);transform:scale(0)rotate(720deg)}}.pogoSlider-animation-sideFallIn{-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-animation-name:sideFallIn;animation-name:sideFallIn}.pogoSlider-animation-sideFallOut{-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-animation-name:sideFallOut;animation-name:sideFallOut}@-webkit-keyframes sideFallIn{0%{-webkit-transform:translate(30%)translateZ(600px)rotate(10deg);transform:translate(30%)translateZ(600px)rotate(10deg);opacity:0}100%{-webkit-transform:translate(0)translateZ(0)rotate(0);transform:translate(0)translateZ(0)rotate(0);opacity:1}}@keyframes sideFallIn{0%{-webkit-transform:translate(30%)translateZ(600px)rotate(10deg);transform:translate(30%)translateZ(600px)rotate(10deg);opacity:0}100%{-webkit-transform:translate(0)translateZ(0)rotate(0);transform:translate(0)translateZ(0)rotate(0);opacity:1}}@-webkit-keyframes sideFallOut{0%{-webkit-transform:translate(0)translateZ(0)rotate(0);transform:translate(0)translateZ(0)rotate(0);opacity:1}100%{-webkit-transform:translate(30%)translateZ(600px)rotate(10deg);transform:translate(30%)translateZ(600px)rotate(10deg);opacity:0}}@keyframes sideFallOut{0%{-webkit-transform:translate(0)translateZ(0)rotate(0);transform:translate(0)translateZ(0)rotate(0);opacity:1}100%{-webkit-transform:translate(30%)translateZ(600px)rotate(10deg);transform:translate(30%)translateZ(600px)rotate(10deg);opacity:0}}.pogoSlider-animation-horizontal3DFlipIn{-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-animation-name:horizontal3DFlipIn;animation-name:horizontal3DFlipIn}.pogoSlider-animation-horizontal3DFlipOut{-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-animation-name:horizontal3DFlipOut;animation-name:horizontal3DFlipOut}@-webkit-keyframes horizontal3DFlipIn{0%{-webkit-transform:rotateY(-70deg);transform:rotateY(-70deg);opacity:0}100%{-webkit-transform:rotateY(0);transform:rotateY(0);opacity:1}}@keyframes horizontal3DFlipIn{0%{-webkit-transform:rotateY(-70deg);transform:rotateY(-70deg);opacity:0}100%{-webkit-transform:rotateY(0);transform:rotateY(0);opacity:1}}@-webkit-keyframes horizontal3DFlipOut{0%{-webkit-transform:rotateY(0);transform:rotateY(0);opacity:1}100%{-webkit-transform:rotateY(-70deg);transform:rotateY(-70deg);opacity:0}}@keyframes horizontal3DFlipOut{0%{-webkit-transform:rotateY(0);transform:rotateY(0);opacity:1}100%{-webkit-transform:rotateY(-70deg);transform:rotateY(-70deg);opacity:0}}.pogoSlider-animation-vertical3DFlipIn{-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-animation-name:vertical3DFlipIn;animation-name:vertical3DFlipIn}.pogoSlider-animation-vertical3DFlipOut{-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-animation-name:vertical3DFlipOut;animation-name:vertical3DFlipOut}@-webkit-keyframes vertical3DFlipIn{0%{-webkit-transform:rotateX(-70deg);transform:rotateX(-70deg);opacity:0}100%{-webkit-transform:rotateX(0);transform:rotateX(0);opacity:1}}@keyframes vertical3DFlipIn{0%{-webkit-transform:rotateX(-70deg);transform:rotateX(-70deg);opacity:0}100%{-webkit-transform:rotateX(0);transform:rotateX(0);opacity:1}}@-webkit-keyframes vertical3DFlipOut{0%{-webkit-transform:rotateX(0);transform:rotateX(0);opacity:1}100%{-webkit-transform:rotateX(-70deg);transform:rotateX(-70deg);opacity:0}}@keyframes vertical3DFlipOut{0%{-webkit-transform:rotateX(0);transform:rotateX(0);opacity:1}100%{-webkit-transform:rotateX(-70deg);transform:rotateX(-70deg);opacity:0}}.pogoSlider-animation-3DPivotIn{-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-animation-name:pivotIn;animation-name:pivotIn}.pogoSlider-animation-3DPivotOut{-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-animation-name:pivotOut;animation-name:pivotOut}@-webkit-keyframes pivotIn{0%{-webkit-transform:rotateX(-60deg);transform:rotateX(-60deg);-webkit-transform-origin:50% 0;transform-origin:50% 0;opacity:0}100%{-webkit-transform:rotateX(0);transform:rotateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@keyframes pivotIn{0%{-webkit-transform:rotateX(-60deg);transform:rotateX(-60deg);-webkit-transform-origin:50% 0;transform-origin:50% 0;opacity:0}100%{-webkit-transform:rotateX(0);transform:rotateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@-webkit-keyframes pivotOut{0%{-webkit-transform:rotateX(0);transform:rotateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}100%{-webkit-transform:rotateX(-60deg);transform:rotateX(-60deg);-webkit-transform-origin:50% 0;transform-origin:50% 0;opacity:0}}@keyframes pivotOut{0%{-webkit-transform:rotateX(0);transform:rotateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}100%{-webkit-transform:rotateX(-60deg);transform:rotateX(-60deg);-webkit-transform-origin:50% 0;transform-origin:50% 0;opacity:0}}.pogoSlider-animation-rollLeftIn{-webkit-animation-name:rollLeftIn;animation-name:rollLeftIn}.pogoSlider-animation-rollLeftOut{-webkit-animation-name:rollLeftOut;animation-name:rollLeftOut}@-webkit-keyframes rollLeftIn{0%{opacity:0;-webkit-transform:translateX(100%)rotate(120deg);transform:translateX(100%)rotate(120deg)}100%{opacity:1;-webkit-transform:translateX(0)rotate(0);transform:translateX(0)rotate(0)}}@keyframes rollLeftIn{0%{opacity:0;-webkit-transform:translateX(100%)rotate(120deg);transform:translateX(100%)rotate(120deg)}100%{opacity:1;-webkit-transform:translateX(0)rotate(0);transform:translateX(0)rotate(0)}}@-webkit-keyframes rollLeftOut{0%{opacity:1;-webkit-transform:translateX(0)rotate(0);transform:translateX(0)rotate(0)}100%{opacity:0;-webkit-transform:translateX(-100%)rotate(-120deg);transform:translateX(-100%)rotate(-120deg)}}@keyframes rollLeftOut{0%{opacity:1;-webkit-transform:translateX(0)rotate(0);transform:translateX(0)rotate(0)}100%{opacity:0;-webkit-transform:translateX(-100%)rotate(-120deg);transform:translateX(-100%)rotate(-120deg)}}.pogoSlider-animation-rollRightIn{-webkit-animation-name:rollRightIn;animation-name:rollRightIn}.pogoSlider-animation-rollRightOut{-webkit-animation-name:rollRightOut;animation-name:rollRightOut}@-webkit-keyframes rollRightIn{0%{opacity:0;-webkit-transform:translateX(-100%)rotate(-120deg);transform:translateX(-100%)rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0)rotate(0);transform:translateX(0)rotate(0)}}@keyframes rollRightIn{0%{opacity:0;-webkit-transform:translateX(-100%)rotate(-120deg);transform:translateX(-100%)rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0)rotate(0);transform:translateX(0)rotate(0)}}@-webkit-keyframes rollRightOut{0%{opacity:1;-webkit-transform:translateX(0)rotate(0);transform:translateX(0)rotate(0)}100%{opacity:0;-webkit-transform:translateX(100%)rotate(120deg);transform:translateX(100%)rotate(120deg)}}@keyframes rollRightOut{0%{opacity:1;-webkit-transform:translateX(0)rotate(0);transform:translateX(0)rotate(0)}100%{opacity:0;-webkit-transform:translateX(100%)rotate(120deg);transform:translateX(100%)rotate(120deg)}}.pogoSlider-animation-glideLeftIn{-webkit-animation-name:glideLeftIn;animation-name:glideLeftIn;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}.pogoSlider-animation-glideLeftOut{-webkit-animation-name:glideLeftOut;animation-name:glideLeftOut;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes glideLeftIn{0%{-webkit-transform:translateX(100%)skewX(-30deg);transform:translateX(100%)skewX(-30deg);opacity:0}60%{-webkit-transform:translateX(-20%)skewX(30deg);transform:translateX(-20%)skewX(30deg);opacity:1}80%{-webkit-transform:translateX(0)skewX(-15deg);transform:translateX(0)skewX(-15deg);opacity:1}100%{-webkit-transform:translateX(0)skewX(0);transform:translateX(0)skewX(0);opacity:1}}@keyframes glideLeftIn{0%{-webkit-transform:translateX(100%)skewX(-30deg);transform:translateX(100%)skewX(-30deg);opacity:0}60%{-webkit-transform:translateX(-20%)skewX(30deg);transform:translateX(-20%)skewX(30deg);opacity:1}80%{-webkit-transform:translateX(0)skewX(-15deg);transform:translateX(0)skewX(-15deg);opacity:1}100%{-webkit-transform:translateX(0)skewX(0);transform:translateX(0)skewX(0);opacity:1}}@-webkit-keyframes glideLeftOut{0%{-webkit-transform:translateX(0)skewX(0);transform:translateX(0)skewX(0);opacity:1}100%{-webkit-transform:translateX(-100%)skewX(30deg);transform:translateX(-100%)skewX(30deg);opacity:0}}@keyframes glideLeftOut{0%{-webkit-transform:translateX(0)skewX(0);transform:translateX(0)skewX(0);opacity:1}100%{-webkit-transform:translateX(-100%)skewX(30deg);transform:translateX(-100%)skewX(30deg);opacity:0}}.pogoSlider-animation-glideRightIn{-webkit-animation-name:glideRightIn;animation-name:glideRightIn;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}.pogoSlider-animation-glideRightOut{-webkit-animation-name:glideRightOut;animation-name:glideRightOut;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes glideRightIn{0%{-webkit-transform:translateX(-100%)skewX(30deg);transform:translateX(-100%)skewX(30deg);opacity:0}60%{-webkit-transform:translateX(20%)skewX(-30deg);transform:translateX(20%)skewX(-30deg);opacity:1}80%{-webkit-transform:translateX(0)skewX(15deg);transform:translateX(0)skewX(15deg);opacity:1}100%{-webkit-transform:translateX(0)skewX(0);transform:translateX(0)skewX(0);opacity:1}}@keyframes glideRightIn{0%{-webkit-transform:translateX(-100%)skewX(30deg);transform:translateX(-100%)skewX(30deg);opacity:0}60%{-webkit-transform:translateX(20%)skewX(-30deg);transform:translateX(20%)skewX(-30deg);opacity:1}80%{-webkit-transform:translateX(0)skewX(15deg);transform:translateX(0)skewX(15deg);opacity:1}100%{-webkit-transform:translateX(0)skewX(0);transform:translateX(0)skewX(0);opacity:1}}@-webkit-keyframes glideRightOut{0%{-webkit-transform:translateX(0)skewX(0);transform:translateX(0)skewX(0);opacity:1}100%{-webkit-transform:translateX(100%)skewX(-30deg);transform:translateX(100%)skewX(-30deg);opacity:0}}@keyframes glideRightOut{0%{-webkit-transform:translateX(0)skewX(0);transform:translateX(0)skewX(0);opacity:1}100%{-webkit-transform:translateX(100%)skewX(-30deg);transform:translateX(100%)skewX(-30deg);opacity:0}}.pogoSlider-animation-flipXIn{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipXIn;animation-name:flipXIn}.pogoSlider-animation-flipXOut{-webkit-animation-name:flipXOut;animation-name:flipXOut;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipXIn{0%{-webkit-transform:perspective(400px)rotateX(90deg);transform:perspective(400px)rotateX(90deg);opacity:0}40%{-webkit-transform:perspective(400px)rotateX(-10deg);transform:perspective(400px)rotateX(-10deg)}70%{-webkit-transform:perspective(400px)rotateX(10deg);transform:perspective(400px)rotateX(10deg)}100%{-webkit-transform:perspective(400px)rotateX(0);transform:perspective(400px)rotateX(0);opacity:1}}@keyframes flipXIn{0%{-webkit-transform:perspective(400px)rotateX(90deg);transform:perspective(400px)rotateX(90deg);opacity:0}40%{-webkit-transform:perspective(400px)rotateX(-10deg);transform:perspective(400px)rotateX(-10deg)}70%{-webkit-transform:perspective(400px)rotateX(10deg);transform:perspective(400px)rotateX(10deg)}100%{-webkit-transform:perspective(400px)rotateX(0);transform:perspective(400px)rotateX(0);opacity:1}}@-webkit-keyframes flipXOut{0%{-webkit-transform:perspective(400px)rotateX(0);transform:perspective(400px)rotateX(0);opacity:1}100%{-webkit-transform:perspective(400px)rotateX(90deg);transform:perspective(400px)rotateX(90deg);opacity:0}}@keyframes flipXOut{0%{-webkit-transform:perspective(400px)rotateX(0);transform:perspective(400px)rotateX(0);opacity:1}100%{-webkit-transform:perspective(400px)rotateX(90deg);transform:perspective(400px)rotateX(90deg);opacity:0}}.pogoSlider-animation-flipYIn{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipYIn;animation-name:flipYIn}.pogoSlider-animation-flipYOut{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipYOut;animation-name:flipYOut}@-webkit-keyframes flipYIn{0%{-webkit-transform:perspective(400px)rotateY(90deg);transform:perspective(400px)rotateY(90deg);opacity:0}40%{-webkit-transform:perspective(400px)rotateY(-10deg);transform:perspective(400px)rotateY(-10deg)}70%{-webkit-transform:perspective(400px)rotateY(10deg);transform:perspective(400px)rotateY(10deg)}100%{-webkit-transform:perspective(400px)rotateY(0);transform:perspective(400px)rotateY(0);opacity:1}}@keyframes flipYIn{0%{-webkit-transform:perspective(400px)rotateY(90deg);transform:perspective(400px)rotateY(90deg);opacity:0}40%{-webkit-transform:perspective(400px)rotateY(-10deg);transform:perspective(400px)rotateY(-10deg)}70%{-webkit-transform:perspective(400px)rotateY(10deg);transform:perspective(400px)rotateY(10deg)}100%{-webkit-transform:perspective(400px)rotateY(0);transform:perspective(400px)rotateY(0);opacity:1}}@-webkit-keyframes flipYOut{0%{-webkit-transform:perspective(400px)rotateY(0);transform:perspective(400px)rotateY(0);opacity:1}100%{-webkit-transform:perspective(400px)rotateY(90deg);transform:perspective(400px)rotateY(90deg);opacity:0}}@keyframes flipYOut{0%{-webkit-transform:perspective(400px)rotateY(0);transform:perspective(400px)rotateY(0);opacity:1}100%{-webkit-transform:perspective(400px)rotateY(90deg);transform:perspective(400px)rotateY(90deg);opacity:0}}.pogoSlider-animation-foldInLeft{-webkit-animation-name:foldInLeft;animation-name:foldInLeft;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform-origin:0 0 0;-ms-transform-origin:0 0 0;transform-origin:0 0 0;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}@-webkit-keyframes foldInLeft{0%{-webkit-transform:rotateY(0);transform:rotateY(0)}100%{-webkit-transform:rotateY(-180deg);transform:rotateY(-180deg)}}@keyframes foldInLeft{0%{-webkit-transform:rotateY(0);transform:rotateY(0)}100%{-webkit-transform:rotateY(-180deg);transform:rotateY(-180deg)}}.pogoSlider-animation-foldOutLeft{-webkit-animation-name:foldOutLeft;animation-name:foldOutLeft;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform-origin:100% 100% 0;-ms-transform-origin:100% 100% 0;transform-origin:100% 100% 0;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}@-webkit-keyframes foldOutLeft{0%{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}100%{-webkit-transform:rotateY(0);transform:rotateY(0)}}@keyframes foldOutLeft{0%{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}100%{-webkit-transform:rotateY(0);transform:rotateY(0)}}.pogoSlider-animation-foldInRight{-webkit-animation-name:foldInRight;animation-name:foldInRight;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform-origin:100% 100% 0;-ms-transform-origin:100% 100% 0;transform-origin:100% 100% 0;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}@-webkit-keyframes foldInRight{0%{-webkit-transform:rotateY(0);transform:rotateY(0)}100%{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}}@keyframes foldInRight{0%{-webkit-transform:rotateY(0);transform:rotateY(0)}100%{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}}.pogoSlider-animation-foldOutRight{-webkit-animation-name:foldOutRight;animation-name:foldOutRight;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform-origin:0 0 0;-ms-transform-origin:0 0 0;transform-origin:0 0 0;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}@-webkit-keyframes foldOutRight{0%{-webkit-transform:rotateY(-180deg);transform:rotateY(-180deg)}100%{-webkit-transform:rotateY(0);transform:rotateY(0)}}@keyframes foldOutRight{0%{-webkit-transform:rotateY(-180deg);transform:rotateY(-180deg)}100%{-webkit-transform:rotateY(0);transform:rotateY(0)}}.pogoSlider-animation-expandReveal{-webkit-animation-name:expandReveal;animation-name:expandReveal;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}@-webkit-keyframes expandReveal{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}100%{-webkit-transform:scale(1.3);transform:scale(1.3);opacity:0}}@keyframes expandReveal{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}100%{-webkit-transform:scale(1.3);transform:scale(1.3);opacity:0}}.pogoSlider-animation-shrinkReveal{-webkit-animation-name:shrinkReveal;animation-name:shrinkReveal;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}@-webkit-keyframes shrinkReveal{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}100%{-webkit-transform:scale(.5);transform:scale(.5);opacity:0}}@keyframes shrinkReveal{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}100%{-webkit-transform:scale(.5);transform:scale(.5);opacity:0}}.pogoSlider-animation-blocksReveal{-webkit-animation-name:blocksReveal;animation-name:blocksReveal;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}@-webkit-keyframes blocksReveal{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}100%{-webkit-transform:scale(.8);transform:scale(.8);opacity:0}}@keyframes blocksReveal{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}100%{-webkit-transform:scale(.8);transform:scale(.8);opacity:0}}.pogoSlider-animation-downIn{-webkit-animation-name:downIn;animation-name:downIn;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}@-webkit-keyframes downIn{0%{-webkit-transform:translateY(-100%);transform:translateY(-100%)}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes downIn{0%{-webkit-transform:translateY(-100%);transform:translateY(-100%)}100%{-webkit-transform:translateY(0);transform:translateY(0)}}.pogoSlider-animation-downOut{-webkit-animation-name:downOut;animation-name:downOut;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}@-webkit-keyframes downOut{0%{-webkit-transform:translateY(0);transform:translateY(0)}100%{-webkit-transform:translateY(100%);transform:translateY(100%)}}@keyframes downOut{0%{-webkit-transform:translateY(0);transform:translateY(0)}100%{-webkit-transform:translateY(100%);transform:translateY(100%)}}.pogoSlider-animation-upIn{-webkit-animation-name:upIn;animation-name:upIn;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}@-webkit-keyframes upIn{0%{-webkit-transform:translateY(100%);transform:translateY(100%)}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes upIn{0%{-webkit-transform:translateY(100%);transform:translateY(100%)}100%{-webkit-transform:translateY(0);transform:translateY(0)}}.pogoSlider-animation-upOut{-webkit-animation-name:upOut;animation-name:upOut;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}@-webkit-keyframes upOut{0%{-webkit-transform:translateY(0);transform:translateY(0)}100%{-webkit-transform:translateY(-100%);transform:translateY(-100%)}}@keyframes upOut{0%{-webkit-transform:translateY(0);transform:translateY(0)}100%{-webkit-transform:translateY(-100%);transform:translateY(-100%)}}.pogoSlider-animation-rightIn{-webkit-animation-name:rightIn;animation-name:rightIn;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}@-webkit-keyframes rightIn{0%{-webkit-transform:translateX(-100%);transform:translateX(-100%)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes rightIn{0%{-webkit-transform:translateX(-100%);transform:translateX(-100%)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}.pogoSlider-animation-rightOut{-webkit-animation-name:rightOut;animation-name:rightOut;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}@-webkit-keyframes rightOut{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{-webkit-transform:translateX(100%);transform:translateX(100%)}}@keyframes rightOut{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{-webkit-transform:translateX(100%);transform:translateX(100%)}}.pogoSlider-animation-leftIn{-webkit-animation-name:leftIn;animation-name:leftIn;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}@-webkit-keyframes leftIn{0%{-webkit-transform:translateX(100%);transform:translateX(100%)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes leftIn{0%{-webkit-transform:translateX(100%);transform:translateX(100%)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}.pogoSlider-animation-leftOut{-webkit-animation-name:leftOut;animation-name:leftOut;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}@-webkit-keyframes leftOut{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{-webkit-transform:translateX(-100%);transform:translateX(-100%)}}@keyframes leftOut{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{-webkit-transform:translateX(-100%);transform:translateX(-100%)}} -------------------------------------------------------------------------------- /src/jquery.pogo-slider.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * jQuery Pogo Slider v0.7 4 | * 5 | * Copyright 2015, Michael Griffin (mike@fluice.com) 6 | * 7 | **/ 8 | 9 | (function ( $, window, document, undefined ) { 10 | 11 | function appendPrefixedStyles(obj,prop,val) { 12 | 13 | if (prop.charAt(0) === '*') { 14 | 15 | obj[prop.substring(1)] = val; 16 | 17 | } else { 18 | 19 | obj['-ms-' + prop] = val; 20 | obj['-webkit-' + prop] = val; 21 | obj[prop] = val; 22 | 23 | } 24 | 25 | } 26 | 27 | $.fn.precss = function (styles) { 28 | 29 | var prefixedStyles = {}; 30 | 31 | if (arguments.length === 1) { 32 | 33 | for (style in styles) { 34 | if (styles.hasOwnProperty(style)) { 35 | appendPrefixedStyles(prefixedStyles,style,styles[style]); 36 | } 37 | } 38 | 39 | } else { 40 | appendPrefixedStyles(prefixedStyles,arguments[0],arguments[1]); 41 | } 42 | 43 | this.css(prefixedStyles); 44 | 45 | return this; 46 | 47 | } 48 | 49 | })( jQuery, window, document ); 50 | 51 | 52 | (function ( $, window, document, undefined ) { 53 | 54 | 'use strict'; 55 | 56 | var supportsCSSProp = function (featurename) { 57 | 58 | var feature = false; 59 | var domPrefixes = 'Webkit Moz ms O'.split(' '); 60 | var elm = document.createElement('div'); 61 | var featurenameCapital = null; 62 | 63 | featurename = featurename.toLowerCase(); 64 | 65 | if(elm.style[featurename]) { 66 | feature = true; 67 | } 68 | 69 | if(feature === false) { 70 | 71 | featurenameCapital = featurename.charAt(0).toUpperCase() + featurename.substr(1); 72 | 73 | for(var i = 0; i < domPrefixes.length; i++) { 74 | 75 | if(elm.style[domPrefixes[i] + featurenameCapital ] !== undefined) { 76 | feature = true; 77 | break; 78 | } 79 | 80 | } 81 | 82 | } 83 | 84 | return feature; 85 | 86 | }; 87 | 88 | var supports = {}; 89 | supports.animation = supportsCSSProp('animation'); 90 | supports.transition = supportsCSSProp('transition'); 91 | supports.transform = supportsCSSProp('transform'); 92 | 93 | var pluginName = 'pogoSlider'; 94 | 95 | var defaults = { 96 | autoplayTimeout: 4000, 97 | autoplay: true, 98 | baseZindex: 1, 99 | displayProgess: true, 100 | onSlideStart: null, 101 | onSlideEnd: null, 102 | onSliderPause: null, 103 | onSliderResume: null, 104 | slideTransition: 'slide', 105 | slideTransitionDuration: 1000, 106 | elementTransitionStart: 500, 107 | elementTransitionDuration: 1000, 108 | elementTransitionIn: 'slideUp', 109 | elementTransitionOut: 'slideDown', 110 | generateButtons: true, 111 | buttonPosition: 'CenterHorizontal', 112 | generateNav: true, 113 | navPosition: 'Bottom', 114 | preserveTargetSize: false, 115 | targetWidth: 1000, 116 | targetHeight: 300, 117 | responsive: false, 118 | pauseOnHover: true 119 | }; 120 | 121 | function Plugin ( element, options ) { 122 | 123 | this.element = element; 124 | this.$element = $(element); 125 | this.settings = $.extend( {}, defaults, options ); 126 | this.currentSlideIndex = 0; 127 | this.prevSlideIndex = 0; 128 | this.slideTimeoutId = 0; 129 | this.slides = []; 130 | this.calls = []; 131 | this.paused = false; 132 | this.navigating = false; 133 | this.slideStartTime = null; 134 | this.slideTimeRemaining = 0; 135 | 136 | this._init(); 137 | 138 | } 139 | 140 | Plugin.prototype = { 141 | 142 | // creates the slides object to store all slide data 143 | // sets initial state and starts the wheels in motion 144 | _init: function () { 145 | 146 | var self = this; 147 | 148 | self.$element.find('.pogoSlider-slide').each(function () { 149 | 150 | var children = []; 151 | var elementTransitionDuration = 0; 152 | 153 | // store the original styles, so that we can restore them later 154 | $(this).data('original-styles',$(this).attr('style')); 155 | 156 | // create the slides object sotring all data 157 | $(this).find('.pogoSlider-slide-element').each(function () { 158 | 159 | var startTime = parseInt($(this).data('start')) !== undefined? $(this).data('start') : self.settings.elementTransitionStart; 160 | var duration = parseInt($(this).data('duration')) || self.settings.elementTransitionDuration; 161 | 162 | if ((startTime + duration) > elementTransitionDuration) { 163 | elementTransitionDuration = (startTime + duration); 164 | } 165 | 166 | children.push({ 167 | $element: $(this), 168 | element: this, 169 | startTime: startTime, 170 | duration: duration, 171 | transitionIn: $(this).data('in') || self.settings.elementTransitionIn, 172 | transitionOut: $(this).data('out') || self.settings.elementTransitionOut 173 | }); 174 | 175 | $(this).css('opacity',0); 176 | 177 | }); 178 | 179 | var slide = { 180 | $element: $(this), 181 | element: this, 182 | transition: $(this).data('transition') || self.settings.slideTransition, 183 | duration: parseInt($(this).data('duration')) || self.settings.slideTransitionDuration, 184 | elementTransitionDuration: elementTransitionDuration, 185 | totalSlideDuration: self.settings.autoplayTimeout + elementTransitionDuration, 186 | children: children 187 | }; 188 | 189 | self.slides.push(slide); 190 | 191 | }); 192 | 193 | self.numSlides = self.slides.length; 194 | 195 | // initialize the first slide 196 | self.slides[0].$element.css('opacity',1); 197 | 198 | // if autoplay set the corrext startTime and time remaining properties 199 | if (self.settings.autoplay && self.settings.displayProgess) { 200 | self._createProgessBar(); 201 | } 202 | 203 | // set the correct aspect ratio of the slider 204 | self.$element.css('padding-bottom',(100 / (self.settings.targetWidth / self.settings.targetHeight)) + '%'); 205 | 206 | var numImages = self.$element.find('img').length; 207 | 208 | // if there are images to load 209 | if (numImages > 0) { 210 | 211 | var imagesLoaded = 0; 212 | 213 | // show a loading div while assets are being loaded 214 | self.$element.prepend('
'); 215 | 216 | // when all images have loaded 217 | self.$element.find('img').one('load',function () { 218 | 219 | if (++imagesLoaded === numImages) { 220 | 221 | $('.pogoSlider-loading').remove(); 222 | 223 | self._onSliderReady(); 224 | 225 | } 226 | 227 | }).each(function(){ 228 | if(this.complete) { 229 | $(this).trigger('load'); 230 | } 231 | }); 232 | 233 | } else { 234 | 235 | self._onSliderReady(); 236 | 237 | } 238 | 239 | }, 240 | 241 | _onSliderReady: function () { 242 | 243 | var self = this; 244 | 245 | // start the slider if autoplay is true 246 | if (self.settings.autoplay) { 247 | self.slideStartTime = new Date(); 248 | self.slideTimeRemaining = self.slides[0].totalSlideDuration; 249 | self._slideTimeout(self.slideTimeRemaining); 250 | } 251 | 252 | if (self.settings.generateButtons && self.slides.length > 1) { 253 | self._createDirButtons(); 254 | } 255 | 256 | if (self.settings.generateNav && self.slides.length > 1) { 257 | self._createNavigation(); 258 | } 259 | 260 | if (self.settings.preserveTargetSize) { 261 | self._preserveTargetSize(); 262 | 263 | if (self.settings.responsive) { 264 | $(window).on('resize', function () { 265 | self._preserveTargetSize(); 266 | }); 267 | } 268 | 269 | } 270 | 271 | if (self.settings.pauseOnHover) { 272 | 273 | self.$element.on('mouseenter', function () { 274 | self.pause(); 275 | }); 276 | 277 | self.$element.on('mouseleave', function () { 278 | self.resume(); 279 | }); 280 | 281 | } 282 | 283 | self._onSlideStart(0); 284 | 285 | }, 286 | 287 | _createDirButtons: function () { 288 | 289 | var self = this; 290 | 291 | self.$element.addClass('pogoSlider--dir' + self.settings.buttonPosition); 292 | 293 | $('').appendTo(self.$element).on('click', function () { 294 | self.prevSlide(); 295 | }); 296 | 297 | $('').appendTo(self.$element).on('click', function () { 298 | self.nextSlide(); 299 | }); 300 | 301 | }, 302 | 303 | _createNavigation: function () { 304 | 305 | var self = this; 306 | 307 | self.$element.addClass('pogoSlider--nav' + self.settings.navPosition); 308 | 309 | var $navContainer = $('
    ').appendTo(self.$element); 310 | 311 | for (var i = 0;i < self.slides.length;i++) { 312 | $('
  • ').appendTo($navContainer).on('click', function () { 313 | self.toSlide($(this).data('num')); 314 | }); 315 | } 316 | 317 | }, 318 | 319 | getAppliedProps: function(el) { 320 | 321 | var styleSheets = document.styleSheets; 322 | var stylesReg = new RegExp('{(.+)}'); 323 | el.matches = el.matches || el.webkitMatchesSelector || el.mozMatchesSelector || el.msMatchesSelector || el.oMatchesSelector; 324 | var inlineStyles = el.getAttribute('style').replace(/ /g,'').split(';'); 325 | var props = []; 326 | 327 | for (var k = 0;k < inlineStyles.length;k++) { 328 | var inlineProp = inlineStyles[k].split(':')[0]; 329 | // if this prop is not empty and has a value and is not already in the props array 330 | if (inlineProp && props.indexOf(inlineProp) === -1) { 331 | props.push(inlineProp); 332 | } 333 | } 334 | 335 | for (var sheet in styleSheets) { 336 | if (styleSheets.hasOwnProperty(sheet)) { 337 | var cssRules = styleSheets[sheet].rules || styleSheets[sheet].cssRules; 338 | for (var r in cssRules) { 339 | if (el.matches(cssRules[r].selectorText)) { 340 | var matchedStyles = stylesReg.exec(cssRules[r].cssText.replace(/ /g,'')); 341 | if (matchedStyles) { 342 | var styles = matchedStyles[1].split(';'); 343 | for (var j = 0;j < styles.length;j++) { 344 | var prop = styles[j].split(':')[0]; 345 | // if this prop is not empty and has a value and is not already in the props array 346 | if (prop && props.indexOf(prop) === -1) { 347 | props.push(prop); 348 | } 349 | } 350 | } 351 | 352 | } 353 | } 354 | } 355 | } 356 | 357 | return props; 358 | 359 | }, 360 | 361 | _preserveTargetSize: function () { 362 | 363 | var self = this; 364 | var unitReg = new RegExp('px|%|em','i'); 365 | var numReg = new RegExp('[0-9]*.?[0-9]+'); 366 | var pixelReg = new RegExp('px','i'); 367 | var scaleFactor = 1; 368 | 369 | if (this.scaledBy) { 370 | scaleFactor = (this.$element.width() / this.settings.targetWidth) / this.scaledBy; 371 | } else { 372 | scaleFactor = this.$element.width() / this.settings.targetWidth; 373 | } 374 | 375 | this.scaledBy = this.$element.width() / this.settings.targetWidth; 376 | 377 | this.$element.find('.pogoSlider-slide-element').each(function () { 378 | 379 | var elementStyles = window.getComputedStyle(this); 380 | var appliedProps = self.getAppliedProps(this); 381 | var styleObj = {}; 382 | 383 | // store the oringal styles 384 | if (!$.data(self,'originalStyles')) { 385 | $.data(self,'originalStyles',$(this).attr('style')); 386 | } 387 | 388 | for (var i = 0;i < appliedProps.length;i++) { 389 | 390 | var cssVal = elementStyles.getPropertyValue(appliedProps[i]); 391 | 392 | if (unitReg.test(cssVal) && numReg.test(cssVal)) { 393 | 394 | // get the number 395 | var numVal = numReg.exec(cssVal); 396 | // get the unit 397 | var unitVal = unitReg.exec(cssVal); 398 | 399 | // if this is a pixel value 400 | if (pixelReg.test(unitVal[0])) { 401 | styleObj[appliedProps[i]] = Math.ceil(numVal[0] * scaleFactor) + unitVal[0]; 402 | } else { 403 | styleObj[appliedProps[i]] = (numVal[0] * scaleFactor) + unitVal[0]; 404 | } 405 | 406 | } 407 | 408 | } 409 | 410 | $(this).css(styleObj); 411 | 412 | }); 413 | 414 | }, 415 | 416 | // private method to create the slide progress bar 417 | _createProgessBar: function () { 418 | 419 | var progressHtml = ''; 420 | 421 | progressHtml += '
    '; 422 | progressHtml += '
    '; 423 | progressHtml += '
    '; 424 | 425 | //this.$element.prepend(progressHtml); 426 | 427 | for (var i = 0;i < this.slides.length;i++) { 428 | this.slides[i].$element.prepend(progressHtml); 429 | } 430 | 431 | }, 432 | 433 | // private method to create a slide pause call 434 | _slideTimeout: function (pauseFor) { 435 | 436 | var self = this; 437 | var timeoutId; 438 | 439 | timeoutId = self.slideTimeoutId = setTimeout(function () { 440 | 441 | if (!self.paused && timeoutId === self.slideTimeoutId) { 442 | self._changeToNext(); 443 | } 444 | 445 | },pauseFor); 446 | 447 | }, 448 | 449 | // public method to pause the slider 450 | pause: function () { 451 | 452 | if (this.settings.autoplay) { 453 | 454 | this.paused = true; 455 | 456 | clearTimeout(this.slideTimeoutId); 457 | 458 | if (this.settings.displayProgess) { 459 | this.$element.find('.pogoSlider-progressBar-duration').stop(true); 460 | } 461 | 462 | this.slidePauseTime = new Date(); 463 | this.slideTimeRemaining = this.slideTimeRemaining - ((new Date()) - this.slideStartTime); 464 | 465 | for (var i = 0;i < this.slides[this.currentSlideIndex].children.length;i++) { 466 | this.slides[this.currentSlideIndex].children[i].$element.precss('animation-play-state','paused'); 467 | } 468 | 469 | if (this.settings.onSliderPause) { 470 | this.settings.onSliderPause.apply(this); 471 | } 472 | 473 | } 474 | 475 | }, 476 | 477 | // public method to resume the slider 478 | resume: function () { 479 | 480 | if (this.settings.autoplay) { 481 | 482 | this.paused = false; 483 | this.slideStartTime = new Date(); 484 | 485 | for (var i = 0;i < this.slides[this.currentSlideIndex].children.length;i++) { 486 | this.slides[this.currentSlideIndex].children[i].$element.precss('animation-play-state',''); 487 | } 488 | 489 | // only add the additonal pause if there is time remaining 490 | if (this.slideTimeRemaining > 0 && !this.navigating) { 491 | 492 | if (this.settings.displayProgess) { 493 | this.$element.find('.pogoSlider-progressBar-duration').animate({'width':'100%'},this.slideTimeRemaining,'linear'); 494 | } 495 | 496 | this._slideTimeout(this.slideTimeRemaining); 497 | 498 | } 499 | 500 | if (this.settings.onSliderResume) { 501 | this.settings.onSliderResume.apply(this); 502 | } 503 | 504 | } 505 | 506 | }, 507 | 508 | // public method to change to the next slide 509 | nextSlide: function () { 510 | 511 | if (!this.navigating) { 512 | 513 | clearTimeout(this.slideTimeoutId); 514 | 515 | this.prevSlideIndex = this.currentSlideIndex; 516 | 517 | if (++this.currentSlideIndex > (this.numSlides - 1)) { 518 | this.currentSlideIndex = 0; 519 | } 520 | 521 | this._changeSlide(this.prevSlideIndex,this.currentSlideIndex); 522 | 523 | } 524 | 525 | }, 526 | 527 | // public method to change to previous slide 528 | prevSlide: function () { 529 | 530 | if (!this.navigating) { 531 | 532 | clearTimeout(this.slideTimeoutId); 533 | 534 | this.prevSlideIndex = this.currentSlideIndex; 535 | 536 | if (--this.currentSlideIndex < 0) { 537 | this.currentSlideIndex = this.numSlides - 1; 538 | } 539 | 540 | this._changeSlide(this.prevSlideIndex,this.currentSlideIndex); 541 | 542 | } 543 | 544 | }, 545 | 546 | // public method to change to a specified slide 547 | toSlide: function (slideIndex) { 548 | 549 | if (!this.navigating) { 550 | 551 | clearTimeout(this.slideTimeoutId); 552 | 553 | // return if the we are already on the called slide, 554 | // or the called slide is greater than the nuber of slides 555 | if (slideIndex === this.currentSlideIndex || slideIndex > (this.slides.length - 1)) { 556 | return; 557 | } 558 | 559 | this.prevSlideIndex = this.currentSlideIndex; 560 | this.currentSlideIndex = slideIndex; 561 | this._changeSlide(this.prevSlideIndex,this.currentSlideIndex); 562 | 563 | } 564 | 565 | }, 566 | 567 | // public method to destroy the plugin 568 | destroy: function () { 569 | 570 | this.paused = true; 571 | clearTimeout(this.slideTimeoutId); 572 | $.removeData(this.element, 'plugin_' + pluginName); 573 | 574 | }, 575 | 576 | // private method to change to the next slide 577 | // used for the autoplay functionality 578 | _changeToNext: function () { 579 | 580 | this.prevSlideIndex = this.currentSlideIndex; 581 | 582 | if (++this.currentSlideIndex > (this.numSlides - 1)) { 583 | this.currentSlideIndex = 0; 584 | } 585 | 586 | this._changeSlide(this.prevSlideIndex,this.currentSlideIndex); 587 | 588 | }, 589 | 590 | // private method to change slides 591 | _changeSlide: function (prevSlideIndex,currentSlideIndex) { 592 | 593 | var self = this; 594 | var slideTransitions; 595 | 596 | self._onSlideEnd(prevSlideIndex); 597 | 598 | self.navigating = true; 599 | 600 | // check if browser support modern css3 features, fallback to javascript animations if it does not 601 | if (supports.animation && supports.transition && supports.transform) { 602 | slideTransitions = self.slideTransitions; 603 | } else { 604 | slideTransitions = self.compatSlideTransitions; 605 | } 606 | 607 | // check if transitions is available, if not fall back to simple slide transition 608 | var slideTransition = slideTransitions[self.slides[currentSlideIndex].transition] ? self.slides[currentSlideIndex].transition : 'slide'; 609 | var slideTransitionCallback = slideTransitions[slideTransition].apply(self,[prevSlideIndex,currentSlideIndex]); 610 | 611 | setTimeout(function () { 612 | 613 | // if this function has a callback, call it 614 | if (slideTransitionCallback) { 615 | slideTransitionCallback(); 616 | } 617 | 618 | self.navigating = false; 619 | 620 | self._slideCleanup(prevSlideIndex,false); 621 | self._slideElementCleanup(prevSlideIndex); 622 | 623 | if (self.settings.autoplay) { 624 | self._slideTimeout(self.slides[currentSlideIndex].totalSlideDuration); 625 | } 626 | 627 | self._onSlideStart(currentSlideIndex); 628 | 629 | }, self.slides[currentSlideIndex].duration); 630 | 631 | }, 632 | 633 | // private method called on slide start 634 | _onSlideStart: function (slideIndex) { 635 | 636 | this.slides[slideIndex].$element.css('z-index', 1); 637 | 638 | if (this.settings.autoplay) { 639 | // need to set them regardless of whether it is paused or not 640 | this.slideStartTime = new Date(); 641 | this.slideTimeRemaining = this.slides[slideIndex].totalSlideDuration; 642 | 643 | if (this.settings.displayProgess && !this.paused) { 644 | this.slides[slideIndex].$element.find('.pogoSlider-progressBar-duration').css('width','0').animate({'width':'100%'},this.slideTimeRemaining,'linear'); 645 | } 646 | } 647 | 648 | if (this.slides[slideIndex].children.length > 0) { 649 | this._slideElementsTransitionIn(slideIndex); 650 | } 651 | 652 | // if slide is paused on change, preserve paused state to next slide 653 | if (this.paused) { 654 | 655 | for (var i = 0;i < this.slides[slideIndex].children.length;i++) { 656 | this.slides[slideIndex].children[i].$element.precss('animation-play-state','paused'); 657 | } 658 | 659 | } 660 | 661 | if (this.settings.generateNav) { 662 | this.$element.find('.pogoSlider-nav-btn').removeClass('pogoSlider-nav-btn--selected'); 663 | this.$element.find('.pogoSlider-nav-btn').eq(slideIndex).addClass('pogoSlider-nav-btn--selected'); 664 | } 665 | 666 | if (this.settings.onSlideStart) { 667 | // run the slideEnd callback 668 | this.settings.onSlideStart.apply(this); 669 | } 670 | 671 | }, 672 | 673 | // private method called on slide end 674 | _onSlideEnd: function (slideIndex) { 675 | 676 | var timeElapsed; 677 | 678 | if (this.settings.autoplay) { 679 | if (this.settings.displayProgess) { 680 | this.slides[slideIndex].$element.find('.pogoSlider-progressBar-duration').stop(true).css('width','0'); 681 | } 682 | } 683 | 684 | if (this.paused) { 685 | 686 | timeElapsed = this.slides[slideIndex].totalSlideDuration - this.slideTimeRemaining; 687 | 688 | for (var i = 0;i < this.slides[slideIndex].children.length;i++) { 689 | this.slides[slideIndex].children[i].$element.precss('animation-play-state',''); 690 | } 691 | 692 | } else { 693 | 694 | timeElapsed = this.slides[slideIndex].totalSlideDuration - (this.slideTimeRemaining - ((new Date()) - this.slideStartTime)); 695 | 696 | } 697 | 698 | // transition out, if slides elements have already transitioned in 699 | if (this.slides[slideIndex].children.length > 0 && timeElapsed > this.slides[slideIndex].elementTransitionDuration) { 700 | //if (this.slides[slideIndex].children.length > 0 && (this.slides[slideIndex].totalSlideDuration - (this.slideTimeRemaining - ((new Date()) - this.slideStartTime))) > this.slides[slideIndex].elementTransitionDuration) { 701 | this._slideElementsTransitionOut(slideIndex); 702 | } 703 | 704 | if (this.settings.onSlideEnd) { 705 | // run the slideEnd callback 706 | this.settings.onSlideEnd.apply(this); 707 | } 708 | 709 | }, 710 | 711 | // private methosd to animate in elements 712 | _slideElementsTransitionIn: function (slideIndex) { 713 | 714 | for (var i = 0; i < this.slides[slideIndex].children.length ; i++) { 715 | 716 | var el = this.slides[slideIndex].children[i]; 717 | 718 | el.$element 719 | .precss({ 720 | '*opacity': 1, 721 | 'animation-duration': el.duration + 'ms', 722 | 'animation-delay': el.startTime + 'ms' 723 | }) 724 | .addClass('pogoSlider-animation-' + el.transitionIn + 'In'); 725 | 726 | } 727 | 728 | }, 729 | 730 | // private methosd to animate out elements 731 | _slideElementsTransitionOut: function (slideIndex) { 732 | 733 | for (var i = 0; i < this.slides[slideIndex].children.length ; i++) { 734 | 735 | var el = this.slides[slideIndex].children[i]; 736 | 737 | el.$element 738 | .precss('animation-delay','') 739 | .removeClass('pogoSlider-animation-' + el.transitionIn + 'In') 740 | .addClass('pogoSlider-animation-' + el.transitionOut + 'Out'); 741 | } 742 | 743 | }, 744 | 745 | // ensure the slide are put back to their origninal state after they have transitioned out 746 | _slideCleanup: function (slideIndex,slideVisible) { 747 | 748 | if (this.slides[slideIndex].$element.find('.pogoSlider-slide-slice').length > 0) { 749 | this._removeSlideSlices(slideIndex); 750 | } 751 | 752 | this.slides[slideIndex].$element.attr('style',this.slides[slideIndex].$element.data('original-styles')).css('opacity',slideVisible? '1':'0'); 753 | 754 | }, 755 | 756 | // private method to clean up elements after slide ends 757 | _slideElementCleanup: function (slideIndex) { 758 | 759 | var removePogoSlideElementClasses = function (index,className) { 760 | return (className.match (/pogoSlider-(?:(?:transition)|(?:animation))(?:-[a-zA-Z0-9]+)?(?:--[a-z]+)?/gi) || []).join(' '); 761 | }; 762 | 763 | var removePogoSlideElementStyles = function (index,style) { 764 | return style.replace(/(?:-webkit-)?(?:-ms-)?((?:transition)|(?:animation))[^;]+;/g, ''); 765 | }; 766 | 767 | this.slides[slideIndex].$element.find('.pogoSlider-progressBar-duration').css('width','0'); 768 | 769 | for (var i = 0; i < this.slides[slideIndex].children.length ; i++) { 770 | this.slides[slideIndex].children[i].$element.removeClass(removePogoSlideElementClasses).attr('style',removePogoSlideElementStyles).css('opacity',0); 771 | } 772 | 773 | }, 774 | 775 | _createSlideSlices: function (slideIndex,rows,cols) { 776 | 777 | var numSlices = cols * rows; 778 | var sliceWidth = 100 / cols; 779 | var sliceHeight = 100 / rows; 780 | var sliceInnerWidth = 100 * cols; 781 | var sliceInnerHeight = 100 * rows; 782 | var $el = this.slides[slideIndex].$element; 783 | var styleAttr = $el.attr('style'); 784 | var timeElapsed; 785 | 786 | if (this.paused) { 787 | timeElapsed = this.slides[slideIndex].totalSlideDuration - this.slideTimeRemaining; 788 | } else { 789 | timeElapsed = this.slides[slideIndex].totalSlideDuration - (this.slideTimeRemaining - ((new Date()) - this.slideStartTime)); 790 | } 791 | 792 | // if the elements are still transitioning in in the previous slide 793 | // set a negative animation delay to prevent the animation from restarting 794 | if (slideIndex === this.prevSlideIndex && this.slides[slideIndex].children.length > 0 && timeElapsed < this.slides[slideIndex].elementTransitionDuration) { 795 | 796 | for (var i = 0;i < this.slides[slideIndex].children.length;i++) { 797 | 798 | var animationDelay = (this.slides[slideIndex].children[i].startTime - timeElapsed) + 'ms'; 799 | 800 | // change the animation delay, to reflect the actual amount of time 801 | this.slides[slideIndex].children[i].$element.precss('animation-delay',animationDelay); 802 | 803 | } 804 | 805 | } 806 | 807 | $el 808 | .children() 809 | .wrapAll('
    ') 810 | .wrapAll('
    '); 811 | 812 | $el.attr('style',function (i,style) { 813 | return style.replace(/(?:background)[^;]+;/g, ''); 814 | }); 815 | 816 | for (var j = 0; j < numSlices; j++) { 817 | 818 | var colNum = j % rows; 819 | var rowNum = Math.floor(j / rows); 820 | 821 | var slicePosStyles = 'width:' + sliceWidth + '%;height:' + sliceHeight + '%;top:' + (sliceHeight * colNum )+ '%;left:' + (sliceWidth * rowNum) + '%;'; 822 | var sliceInnerPosStyles = 'width:' + sliceInnerWidth + '%;height:' + sliceInnerHeight + '%;top:-' + (100 * colNum) + '%;left:-' + (100 * rowNum) + '%;'; 823 | var sliceInnerBackgroundStyles = ''; 824 | if(this.settings.preserveTargetSize) { 825 | sliceInnerBackgroundStyles = 'background-size:' + this.$element.width() + 'px ' + parseFloat(this.$element.css('padding-bottom')) + 'px;'; 826 | } 827 | 828 | var el = $el.find('.pogoSlider-slide-slice') 829 | .last(); 830 | if(j != 0) { 831 | el = el.clone(true,true) 832 | .appendTo(this.slides[slideIndex].element); 833 | } 834 | el.attr('style',slicePosStyles) 835 | .find('.pogoSlider-slide-slice-inner') 836 | .attr('style',styleAttr + sliceInnerPosStyles + sliceInnerBackgroundStyles); 837 | 838 | } 839 | 840 | }, 841 | 842 | // remove the slices and restore the slide back to its original state 843 | _removeSlideSlices: function (slideIndex) { 844 | 845 | var self = this; 846 | var $el = self.slides[slideIndex].$element; 847 | 848 | $el.attr('style',$el.data('original-styles')); 849 | 850 | // remove all slices except the first slide (which was the one we wrapped) 851 | $el.find('.pogoSlider-slide-slice').not(':first').remove(); 852 | // unwrap the remaining slides (to preserve event handler etc.) 853 | $el.find('.pogoSlider-slide-slice-inner').children().unwrap(); 854 | $el.find('.pogoSlider-slide-slice').children().unwrap(); 855 | 856 | }, 857 | 858 | _generateARandomArray: function (numItems) { 859 | 860 | var arr = []; 861 | 862 | for(var i = 0;i < numItems;i++) { 863 | arr.push(i); 864 | } 865 | 866 | for (var j = arr.length - 1; j > 0; j--) { 867 | var k = Math.floor(Math.random() * (j + 1)); 868 | var temp = arr[j]; 869 | arr[j] = arr[k]; 870 | arr[k] = temp; 871 | } 872 | 873 | return arr; 874 | 875 | }, 876 | 877 | // any slide transition effects can be added onto this object 878 | slideTransitions: { 879 | 880 | fade: function (prevSlideIndex,currentSlideIndex) { 881 | 882 | var currentSlide = this.slides[currentSlideIndex]; 883 | 884 | // carry out transiton on previous slide and then clean up 885 | this.slides[prevSlideIndex].$element 886 | .precss({ 887 | '*opacity': '0', 888 | 'transition-duration': currentSlide.duration + 'ms' 889 | }); 890 | 891 | // transiton in the current slide 892 | currentSlide.$element 893 | .precss({ 894 | '*opacity': '1', 895 | 'transition-duration': currentSlide.duration + 'ms' 896 | }); 897 | 898 | }, 899 | 900 | slide: function (prevSlideIndex,currentSlideIndex) { 901 | 902 | var method; 903 | 904 | if (currentSlideIndex === 0 && prevSlideIndex === this.slides.length - 1) { 905 | method = 'slideLeft'; 906 | } else if (prevSlideIndex === 0 && currentSlideIndex === this.slides.length - 1) { 907 | method = 'slideRight'; 908 | } else if (currentSlideIndex > prevSlideIndex) { 909 | method = 'slideLeft'; 910 | } else { 911 | method = 'slideRight'; 912 | } 913 | 914 | return this.slideTransitions[method].apply(this,[prevSlideIndex,currentSlideIndex]); 915 | 916 | }, 917 | 918 | verticalSlide: function (prevSlideIndex,currentSlideIndex) { 919 | 920 | var method; 921 | 922 | if (currentSlideIndex === 0 && prevSlideIndex === this.slides.length - 1) { 923 | method = 'slideUp'; 924 | } else if (prevSlideIndex === 0 && currentSlideIndex === this.slides.length - 1) { 925 | method = 'slideDown'; 926 | } else if (currentSlideIndex > prevSlideIndex) { 927 | method = 'slideUp'; 928 | } else { 929 | method = 'slideDown'; 930 | } 931 | 932 | return this.slideTransitions[method].apply(this,[prevSlideIndex,currentSlideIndex]); 933 | 934 | }, 935 | 936 | slideLeft: function (prevSlideIndex,currentSlideIndex) { 937 | 938 | var self = this; 939 | var currentSlide = self.slides[currentSlideIndex]; 940 | 941 | self.slides[prevSlideIndex].$element 942 | .precss('animation-duration',currentSlide.duration + 'ms') 943 | .addClass('pogoSlider-animation-leftOut'); 944 | 945 | currentSlide.$element 946 | .precss({ 947 | '*opacity': '1', 948 | 'animation-duration': currentSlide.duration + 'ms' 949 | }) 950 | .addClass('pogoSlider-animation-leftIn'); 951 | 952 | return function () { 953 | self.slides[prevSlideIndex].$element.removeClass('pogoSlider-animation-leftOut'); 954 | currentSlide.$element.attr('style',currentSlide.$element.data('original-styles')).css('opacity','1').removeClass('pogoSlider-animation-leftIn'); 955 | }; 956 | 957 | }, 958 | 959 | slideRight: function (prevSlideIndex,currentSlideIndex) { 960 | 961 | var self = this; 962 | var currentSlide = self.slides[currentSlideIndex]; 963 | 964 | self.slides[prevSlideIndex].$element 965 | .precss('animation-duration',currentSlide.duration + 'ms') 966 | .addClass('pogoSlider-animation-rightOut'); 967 | 968 | currentSlide.$element 969 | .precss({ 970 | '*opacity': '1', 971 | 'animation-duration': currentSlide.duration + 'ms' 972 | }) 973 | .addClass('pogoSlider-animation-rightIn'); 974 | 975 | return function () { 976 | self.slides[prevSlideIndex].$element.removeClass('pogoSlider-animation-rightOut'); 977 | currentSlide.$element.attr('style',currentSlide.$element.data('original-styles')).css('opacity','1').removeClass('pogoSlider-animation-rightIn'); 978 | }; 979 | 980 | }, 981 | 982 | slideUp: function (prevSlideIndex,currentSlideIndex) { 983 | 984 | var self = this; 985 | var currentSlide = self.slides[currentSlideIndex]; 986 | 987 | self.slides[prevSlideIndex].$element 988 | .precss('animation-duration',currentSlide.duration + 'ms') 989 | .addClass('pogoSlider-animation-upOut'); 990 | 991 | currentSlide.$element 992 | .precss({ 993 | '*opacity': '1', 994 | 'animation-duration': currentSlide.duration + 'ms' 995 | }) 996 | .addClass('pogoSlider-animation-upIn'); 997 | 998 | return function () { 999 | self.slides[prevSlideIndex].$element.removeClass('pogoSlider-animation-upOut'); 1000 | currentSlide.$element.attr('style',currentSlide.$element.data('original-styles')).css('opacity','1').removeClass('pogoSlider-animation-upIn'); 1001 | 1002 | }; 1003 | 1004 | }, 1005 | 1006 | slideDown: function (prevSlideIndex,currentSlideIndex) { 1007 | 1008 | var self = this; 1009 | var currentSlide = self.slides[currentSlideIndex]; 1010 | 1011 | self.slides[prevSlideIndex].$element 1012 | .precss('animation-duration',currentSlide.duration + 'ms') 1013 | .addClass('pogoSlider-animation-downOut'); 1014 | 1015 | currentSlide.$element 1016 | .precss({ 1017 | '*opacity': '1', 1018 | 'animation-duration': currentSlide.duration + 'ms' 1019 | }) 1020 | .addClass('pogoSlider-animation-downIn'); 1021 | 1022 | return function () { 1023 | self.slides[prevSlideIndex].$element.removeClass('pogoSlider-animation-downOut'); 1024 | currentSlide.$element.attr('style',currentSlide.$element.data('original-styles')).css('opacity','1').removeClass('pogoSlider-animation-downIn'); 1025 | 1026 | }; 1027 | 1028 | }, 1029 | 1030 | slideRevealLeft: function (prevSlideIndex,currentSlideIndex) { 1031 | 1032 | var self = this; 1033 | var currentSlide = self.slides[currentSlideIndex]; 1034 | 1035 | self.slides[prevSlideIndex].$element 1036 | .precss({ 1037 | '*z-index': self.settings.baseZindex + 1, 1038 | 'animation-duration': currentSlide.duration + 'ms' 1039 | }) 1040 | .addClass('pogoSlider-animation-leftOut'); 1041 | 1042 | currentSlide.$element.css({'opacity':1,'z-index':self.settings.baseZindex}); 1043 | 1044 | return function () { 1045 | self.slides[prevSlideIndex].$element.removeClass('pogoSlider-animation-leftOut'); 1046 | }; 1047 | 1048 | }, 1049 | 1050 | slideRevealRight: function (prevSlideIndex,currentSlideIndex) { 1051 | 1052 | var self = this; 1053 | var currentSlide = self.slides[currentSlideIndex]; 1054 | 1055 | self.slides[prevSlideIndex].$element 1056 | .precss({ 1057 | '*z-index': self.settings.baseZindex + 1, 1058 | 'animation-duration': currentSlide.duration + 'ms' 1059 | }) 1060 | .addClass('pogoSlider-animation-rightOut'); 1061 | 1062 | currentSlide.$element.css({'opacity':1,'z-index':self.settings.baseZindex}); 1063 | 1064 | return function () { 1065 | self.slides[prevSlideIndex].$element.removeClass('pogoSlider-animation-rightOut'); 1066 | }; 1067 | 1068 | }, 1069 | 1070 | slideOverLeft: function (prevSlideIndex,currentSlideIndex) { 1071 | 1072 | var currentSlide = this.slides[currentSlideIndex]; 1073 | 1074 | currentSlide.$element 1075 | .precss({ 1076 | '*opacity': '1', 1077 | '*z-index': this.settings.baseZindex + 1, 1078 | 'animation-duration': currentSlide.duration + 'ms' 1079 | }) 1080 | .addClass('pogoSlider-animation-leftIn'); 1081 | 1082 | return function () { 1083 | currentSlide.$element.attr('style',currentSlide.$element.data('original-styles')).css('opacity','1').removeClass('pogoSlider-animation-leftIn'); 1084 | }; 1085 | 1086 | }, 1087 | 1088 | slideOverRight: function (prevSlideIndex,currentSlideIndex) { 1089 | 1090 | var currentSlide = this.slides[currentSlideIndex]; 1091 | 1092 | currentSlide.$element 1093 | .precss({ 1094 | '*opacity': '1', 1095 | '*z-index': this.settings.baseZindex + 1, 1096 | 'animation-duration': currentSlide.duration + 'ms' 1097 | }) 1098 | .addClass('pogoSlider-animation-rightIn'); 1099 | 1100 | return function () { 1101 | currentSlide.$element.attr('style',currentSlide.$element.data('original-styles')).css('opacity','1').removeClass('pogoSlider-animation-rightIn'); 1102 | }; 1103 | 1104 | }, 1105 | 1106 | expandReveal: function (prevSlideIndex,currentSlideIndex) { 1107 | 1108 | var self = this; 1109 | var currentSlide = self.slides[currentSlideIndex]; 1110 | 1111 | self.$element.css('overflow','visible'); 1112 | 1113 | self.slides[prevSlideIndex].$element 1114 | .precss({ 1115 | '*z-index': self.settings.baseZindex + 1, 1116 | 'animation-duration': currentSlide.duration + 'ms' 1117 | }) 1118 | .addClass('pogoSlider-animation-expandReveal'); 1119 | 1120 | currentSlide.$element.css({'opacity':1,'z-index':self.settings.baseZindex}); 1121 | 1122 | return function () { 1123 | self.$element.css('overflow',''); 1124 | self.slides[prevSlideIndex].$element.removeClass('pogoSlider-animation-expandReveal'); 1125 | }; 1126 | 1127 | }, 1128 | 1129 | shrinkReveal: function (prevSlideIndex,currentSlideIndex) { 1130 | 1131 | var self = this; 1132 | var currentSlide = self.slides[currentSlideIndex]; 1133 | 1134 | self.slides[prevSlideIndex].$element 1135 | .precss({ 1136 | '*z-index': self.settings.baseZindex + 1, 1137 | 'animation-duration': currentSlide.duration + 'ms' 1138 | }) 1139 | .addClass('pogoSlider-animation-shrinkReveal'); 1140 | 1141 | currentSlide.$element.css({'opacity':1,'z-index':self.settings.baseZindex}); 1142 | 1143 | return function () { 1144 | self.slides[prevSlideIndex].$element.removeClass('pogoSlider-animation-shrinkReveal'); 1145 | }; 1146 | 1147 | }, 1148 | 1149 | verticalSplitReveal: function (prevSlideIndex,currentSlideIndex) { 1150 | 1151 | var self = this; 1152 | var currentSlide = self.slides[currentSlideIndex]; 1153 | 1154 | // init current slide and prev slides position 1155 | self.slides[prevSlideIndex].$element.css('z-index',self.settings.baseZindex + 1); 1156 | currentSlide.$element.css({'opacity': 1,'z-index': self.settings.baseZindex}); 1157 | 1158 | self._createSlideSlices(prevSlideIndex,1,2); 1159 | 1160 | var $slices = self.slides[prevSlideIndex].$element.find('.pogoSlider-slide-slice'); 1161 | 1162 | $slices.precss('animation-duration',currentSlide.duration + 'ms'); 1163 | 1164 | $slices.eq(0).addClass('pogoSlider-animation-leftOut'); 1165 | $slices.eq(1).addClass('pogoSlider-animation-rightOut'); 1166 | 1167 | }, 1168 | 1169 | horizontalSplitReveal: function (prevSlideIndex,currentSlideIndex) { 1170 | 1171 | var self = this; 1172 | var currentSlide = self.slides[currentSlideIndex]; 1173 | 1174 | // init current slide and prev slides position 1175 | self.slides[prevSlideIndex].$element.css('z-index',self.settings.baseZindex + 1); 1176 | currentSlide.$element.css({'opacity': 1,'z-index': self.settings.baseZindex}); 1177 | 1178 | self._createSlideSlices(prevSlideIndex,2,1); 1179 | 1180 | var $slices = self.slides[prevSlideIndex].$element.find('.pogoSlider-slide-slice'); 1181 | 1182 | $slices.precss('animation-duration',currentSlide.duration + 'ms'); 1183 | 1184 | $slices.eq(0).addClass('pogoSlider-animation-upOut'); 1185 | $slices.eq(1).addClass('pogoSlider-animation-downOut'); 1186 | 1187 | }, 1188 | 1189 | zipReveal: function (prevSlideIndex,currentSlideIndex) { 1190 | 1191 | var self = this; 1192 | var currentSlide = self.slides[currentSlideIndex]; 1193 | 1194 | // init current slide and prev slides position 1195 | self.slides[prevSlideIndex].$element.css('z-index',self.settings.baseZindex + 1); 1196 | currentSlide.$element.css({'opacity': 1,'z-index': self.settings.baseZindex}); 1197 | 1198 | self._createSlideSlices(prevSlideIndex,1,Math.round(self.$element.width() / 100)); 1199 | 1200 | var $slices = self.slides[prevSlideIndex].$element.find('.pogoSlider-slide-slice'); 1201 | 1202 | $slices.precss('animation-duration',currentSlide.duration + 'ms'); 1203 | 1204 | //var transitionDelay = currentSlide.duration / ($slices.length + 1); 1205 | //var transitionDuration = transitionDelay * 2; 1206 | 1207 | $slices.each(function (index) { 1208 | 1209 | if (index % 2 === 0) { 1210 | $(this).addClass('pogoSlider-animation-upOut'); 1211 | } else { 1212 | $(this).addClass('pogoSlider-animation-downOut'); 1213 | } 1214 | 1215 | }); 1216 | 1217 | }, 1218 | 1219 | barRevealDown: function (prevSlideIndex,currentSlideIndex) { 1220 | 1221 | return this.slideTransitions['barReveal'].apply(this,[prevSlideIndex,currentSlideIndex,'down']); 1222 | 1223 | }, 1224 | 1225 | barRevealUp: function (prevSlideIndex,currentSlideIndex) { 1226 | 1227 | return this.slideTransitions['barReveal'].apply(this,[prevSlideIndex,currentSlideIndex,'up']); 1228 | 1229 | }, 1230 | 1231 | barReveal: function (prevSlideIndex,currentSlideIndex,direction) { 1232 | 1233 | var self = this; 1234 | var currentSlide = self.slides[currentSlideIndex]; 1235 | 1236 | // init current slide and prev slides position 1237 | self.slides[prevSlideIndex].$element.css('z-index',self.settings.baseZindex + 1); 1238 | currentSlide.$element.css({'opacity': 1,'z-index': self.settings.baseZindex}); 1239 | 1240 | self._createSlideSlices(prevSlideIndex,1,Math.round(self.$element.width() / 100)); 1241 | 1242 | var $slices = self.slides[prevSlideIndex].$element.find('.pogoSlider-slide-slice'); 1243 | 1244 | var animationDelay = currentSlide.duration / ($slices.length + 1); 1245 | var animationDuration = animationDelay * 2; 1246 | 1247 | $slices.precss('animation-duration',animationDuration + 'ms'); 1248 | 1249 | $slices.each(function (index) { 1250 | 1251 | if (direction === 'down') { 1252 | 1253 | $(this) 1254 | .addClass('pogoSlider-animation-downOut') 1255 | .precss('animation-delay',animationDelay * index + 'ms'); 1256 | 1257 | } else { 1258 | 1259 | $(this) 1260 | .addClass('pogoSlider-animation-upOut') 1261 | .precss('animation-delay',animationDelay * index + 'ms'); 1262 | 1263 | } 1264 | 1265 | }); 1266 | 1267 | }, 1268 | 1269 | blocksReveal: function (prevSlideIndex,currentSlideIndex) { 1270 | 1271 | var self = this; 1272 | var currentSlide = self.slides[currentSlideIndex]; 1273 | 1274 | var height = 0; 1275 | if(self.settings.preserveTargetSize) { 1276 | height = parseFloat(self.$element.css('padding-bottom')); 1277 | } else { 1278 | height = self.$element.height(); 1279 | } 1280 | var numRows = Math.round(height / 100); // 100 is the target square size 1281 | var numCols = Math.round(self.$element.width() / 100); 1282 | 1283 | // init current slide and prev slides position 1284 | self.slides[prevSlideIndex].$element.css('z-index',self.settings.baseZindex + 1); 1285 | currentSlide.$element.css({'opacity': 1,'z-index': self.settings.baseZindex}); 1286 | 1287 | var randArr = self._generateARandomArray(numRows * numCols); 1288 | self._createSlideSlices(prevSlideIndex,numRows,numCols); 1289 | var $slices = self.slides[prevSlideIndex].$element.find('.pogoSlider-slide-slice'); 1290 | 1291 | var animationDelay = currentSlide.duration / ($slices.length + 1); 1292 | var animationDuration = animationDelay * 2; 1293 | 1294 | $slices.precss('animation-duration',animationDuration + 'ms'); 1295 | 1296 | for (var i = 0;i < $slices.length;i++) { 1297 | $slices.eq(randArr.pop()) 1298 | .precss('animation-delay',(animationDelay * i) + 'ms') 1299 | .addClass('pogoSlider-animation-blocksReveal'); 1300 | } 1301 | 1302 | }, 1303 | 1304 | fold: function (prevSlideIndex,currentSlideIndex) { 1305 | 1306 | var method; 1307 | 1308 | if (currentSlideIndex === 0 && prevSlideIndex === this.slides.length - 1) { 1309 | method = 'foldLeft'; 1310 | } else if (prevSlideIndex === 0 && currentSlideIndex === this.slides.length - 1) { 1311 | method = 'foldRight'; 1312 | } else if (currentSlideIndex > prevSlideIndex) { 1313 | method = 'foldLeft'; 1314 | } else { 1315 | method = 'foldRight'; 1316 | } 1317 | 1318 | return this.slideTransitions[method].apply(this,[prevSlideIndex,currentSlideIndex]); 1319 | 1320 | }, 1321 | 1322 | foldRight: function (prevSlideIndex,currentSlideIndex) { 1323 | 1324 | var self = this; 1325 | var currentSlide = self.slides[currentSlideIndex]; 1326 | var prevSlide = self.slides[prevSlideIndex]; 1327 | 1328 | // init current slide and prev slides position 1329 | self.$element.css('overflow','visible'); 1330 | prevSlide.$element.css({'overflow':'visible','z-index': self.settings.baseZindex}); 1331 | currentSlide.$element.css({'opacity': 1,'overflow':'visible','z-index': self.settings.baseZindex + 1}); 1332 | 1333 | self._createSlideSlices(prevSlideIndex,1,2); 1334 | var $prevSlideSlices = prevSlide.$element.find('.pogoSlider-slide-slice'); 1335 | 1336 | self._createSlideSlices(currentSlideIndex,1,2); 1337 | var $currentSlideSlices = self.slides[currentSlideIndex].$element.find('.pogoSlider-slide-slice'); 1338 | 1339 | var $bottomLeft = $prevSlideSlices.eq(0); 1340 | //var $bottomRight = $prevSlideSlices.eq(1); 1341 | var $topLeft = $currentSlideSlices.eq(0); 1342 | var $topRight = $currentSlideSlices.eq(1); 1343 | 1344 | currentSlide.$element.prepend($bottomLeft.detach()); 1345 | prevSlide.$element.prepend($topLeft.detach()); 1346 | 1347 | $bottomLeft 1348 | .addClass('pogoSlider-animation-foldInRight') 1349 | .precss('animation-duration',currentSlide.duration + 'ms'); 1350 | 1351 | $topRight 1352 | .addClass('pogoSlider-animation-foldOutRight') 1353 | .precss('animation-duration',currentSlide.duration + 'ms'); 1354 | 1355 | return function () { 1356 | 1357 | // restore original overflow 1358 | self.$element.css('overflow',''); 1359 | 1360 | // since the original element has been move, restore it to the original position 1361 | currentSlide.$element.prepend($topLeft.detach()); 1362 | prevSlide.$element.prepend($bottomLeft.detach()); 1363 | 1364 | // need to manually cleanup the current slide 1365 | self._slideCleanup(currentSlideIndex,true); 1366 | 1367 | }; 1368 | 1369 | }, 1370 | 1371 | foldLeft: function (prevSlideIndex,currentSlideIndex) { 1372 | 1373 | var self = this; 1374 | var currentSlide = self.slides[currentSlideIndex]; 1375 | var prevSlide = self.slides[prevSlideIndex]; 1376 | 1377 | // init current slide and prev slides position 1378 | self.$element.css('overflow','visible'); 1379 | prevSlide.$element.css({'overflow':'visible','z-index': self.settings.baseZindex}); 1380 | currentSlide.$element.css({'opacity': 1,'overflow':'visible','z-index': self.settings.baseZindex + 1}); 1381 | 1382 | self._createSlideSlices(prevSlideIndex,1,2); 1383 | var $prevSlideSlices = prevSlide.$element.find('.pogoSlider-slide-slice'); 1384 | 1385 | self._createSlideSlices(currentSlideIndex,1,2); 1386 | var $currentSlideSlices = self.slides[currentSlideIndex].$element.find('.pogoSlider-slide-slice'); 1387 | 1388 | //var $bottomLeft = $prevSlideSlices.eq(0); 1389 | var $bottomRight = $prevSlideSlices.eq(1); 1390 | var $topLeft = $currentSlideSlices.eq(0); 1391 | var $topRight = $currentSlideSlices.eq(1); 1392 | 1393 | currentSlide.$element.append($bottomRight.detach()); 1394 | prevSlide.$element.append($topRight.detach()); 1395 | 1396 | $bottomRight 1397 | .addClass('pogoSlider-animation-foldInLeft') 1398 | .precss('animation-duration',currentSlide.duration + 'ms'); 1399 | 1400 | $topLeft 1401 | .addClass('pogoSlider-animation-foldOutLeft') 1402 | .precss('animation-duration',currentSlide.duration + 'ms'); 1403 | 1404 | return function () { 1405 | 1406 | // restore original overflow 1407 | self.$element.css('overflow',''); 1408 | 1409 | // need to manually cleanup the current slide 1410 | self._slideCleanup(currentSlideIndex,true); 1411 | }; 1412 | 1413 | } 1414 | 1415 | }, 1416 | 1417 | // plain javascript transitions for older browsers 1418 | compatSlideTransitions: { 1419 | 1420 | fade: function (prevSlideIndex,currentSlideIndex) { 1421 | 1422 | var currentSlide = this.slides[currentSlideIndex]; 1423 | 1424 | // carry out transiton on previous slide and then clean up 1425 | this.slides[prevSlideIndex].$element.animate({opacity:0},currentSlide.duration); 1426 | 1427 | // transiton in the current slide 1428 | currentSlide.$element.animate({opacity:1},currentSlide.duration); 1429 | 1430 | }, 1431 | 1432 | slide: function (prevSlideIndex,currentSlideIndex) { 1433 | 1434 | var method; 1435 | 1436 | if (prevSlideIndex > currentSlideIndex && prevSlideIndex === this.slides.length - 1 && currentSlideIndex === 0) { 1437 | method = 'slideLeft'; 1438 | } else if (prevSlideIndex < currentSlideIndex && prevSlideIndex === 0 && currentSlideIndex === this.slides.length - 1) { 1439 | method = 'slideRight'; 1440 | } else if (prevSlideIndex < currentSlideIndex) { 1441 | method = 'slideLeft'; 1442 | } else { 1443 | method = 'slideRight'; 1444 | } 1445 | 1446 | return this.slideTransitions[method].apply(this,[prevSlideIndex,currentSlideIndex]); 1447 | 1448 | }, 1449 | 1450 | verticalSlide: function (prevSlideIndex,currentSlideIndex) { 1451 | 1452 | var method; 1453 | 1454 | if (prevSlideIndex > currentSlideIndex && prevSlideIndex === this.slides.length - 1 && currentSlideIndex === 0) { 1455 | method = 'slideUp'; 1456 | } else if (prevSlideIndex < currentSlideIndex && prevSlideIndex === 0 && currentSlideIndex === this.slides.length - 1) { 1457 | method = 'slideDown'; 1458 | } else if (prevSlideIndex < currentSlideIndex) { 1459 | method = 'slideUp'; 1460 | } else { 1461 | method = 'slideDown'; 1462 | } 1463 | 1464 | return this.slideTransitions[method].apply(this,[prevSlideIndex,currentSlideIndex]); 1465 | 1466 | }, 1467 | 1468 | slideLeft: function (prevSlideIndex,currentSlideIndex) { 1469 | 1470 | var currentSlide = this.slides[currentSlideIndex]; 1471 | 1472 | this.slides[prevSlideIndex].$element.animate({left:'-100%'},currentSlide.duration); 1473 | 1474 | currentSlide.$element.css({left:'100%','opacity':1}).animate({left:0},currentSlide.duration); 1475 | 1476 | }, 1477 | 1478 | slideRight: function (prevSlideIndex,currentSlideIndex) { 1479 | 1480 | var currentSlide = this.slides[currentSlideIndex]; 1481 | 1482 | this.slides[prevSlideIndex].$element.animate({left:'100%'},currentSlide.duration); 1483 | 1484 | currentSlide.$element.css({left:'-100%','opacity':1}).animate({left:0},currentSlide.duration); 1485 | 1486 | }, 1487 | 1488 | slideUp: function (prevSlideIndex,currentSlideIndex) { 1489 | 1490 | var currentSlide = this.slides[currentSlideIndex]; 1491 | 1492 | this.slides[prevSlideIndex].$element.animate({top:'-100%'},currentSlide.duration); 1493 | 1494 | currentSlide.$element.css({top:'100%','opacity':1}).animate({top:'0'},currentSlide.duration); 1495 | 1496 | }, 1497 | 1498 | slideDown: function (prevSlideIndex,currentSlideIndex) { 1499 | 1500 | var currentSlide = this.slides[currentSlideIndex]; 1501 | 1502 | this.slides[prevSlideIndex].$element.animate({top:'100%'},currentSlide.duration); 1503 | 1504 | currentSlide.$element.css({top:'-100%','opacity':1}).animate({top:'0'},currentSlide.duration); 1505 | 1506 | }, 1507 | 1508 | slideRevealLeft: function (prevSlideIndex,currentSlideIndex) { 1509 | 1510 | var currentSlide = this.slides[currentSlideIndex]; 1511 | 1512 | this.slides[prevSlideIndex].$element.css('z-index',this.settings.baseZindex + 1).animate({left:'-100%'},currentSlide.duration); 1513 | 1514 | currentSlide.$element.css({'opacity':1,'z-index':this.settings.baseZindex}); 1515 | 1516 | }, 1517 | 1518 | slideRevealRight: function (prevSlideIndex,currentSlideIndex) { 1519 | 1520 | var currentSlide = this.slides[currentSlideIndex]; 1521 | 1522 | this.slides[prevSlideIndex].$element.css('z-index',this.settings.baseZindex + 1).animate({left:'100%'},currentSlide.duration); 1523 | 1524 | currentSlide.$element.css({'opacity':1,'z-index':this.settings.baseZindex}); 1525 | 1526 | }, 1527 | 1528 | slideOverLeft: function (prevSlideIndex,currentSlideIndex) { 1529 | 1530 | var currentSlide = this.slides[currentSlideIndex]; 1531 | 1532 | currentSlide.$element.css({'opacity':1,'z-index':this.settings.baseZindex,'left': '100%'}).animate({'left':0},currentSlide.duration); 1533 | 1534 | }, 1535 | 1536 | slideOverRight: function (prevSlideIndex,currentSlideIndex) { 1537 | 1538 | var currentSlide = this.slides[currentSlideIndex]; 1539 | 1540 | currentSlide.$element.css({'opacity':1,'z-index':this.settings.baseZindex,'right': '100%'}).animate({'right':0},currentSlide.duration); 1541 | 1542 | }, 1543 | 1544 | expandReveal: function (prevSlideIndex,currentSlideIndex) { 1545 | 1546 | var currentSlide = this.slides[currentSlideIndex]; 1547 | 1548 | this.slides[prevSlideIndex].$element 1549 | .css('z-index',this.settings.baseZindex + 1) 1550 | .animate({ 1551 | width:'120%', 1552 | height: '120%', 1553 | 'left': '-10%', 1554 | 'top': '-10%', 1555 | opacity: 0 1556 | },currentSlide.duration); 1557 | 1558 | currentSlide.$element.css({'opacity':1,'z-index':this.settings.baseZindex}); 1559 | 1560 | }, 1561 | 1562 | shrinkReveal: function (prevSlideIndex,currentSlideIndex) { 1563 | 1564 | var currentSlide = this.slides[currentSlideIndex]; 1565 | 1566 | this.slides[prevSlideIndex].$element 1567 | .css('z-index',this.settings.baseZindex + 1) 1568 | .animate({ 1569 | width: '50%', 1570 | height: '50%', 1571 | 'left': '25%', 1572 | 'top': '25%', 1573 | opacity: 0 1574 | },currentSlide.duration); 1575 | 1576 | currentSlide.$element.css({'opacity':1,'z-index':this.settings.baseZindex}); 1577 | 1578 | }, 1579 | 1580 | verticalSplitReveal: function (prevSlideIndex,currentSlideIndex) { 1581 | 1582 | var self = this; 1583 | var currentSlide = self.slides[currentSlideIndex]; 1584 | 1585 | self.slides[prevSlideIndex].$element.css('z-index',self.settings.baseZindex + 1); 1586 | 1587 | currentSlide.$element.css({'opacity': 1,'z-index': self.settings.baseZindex}); 1588 | 1589 | self._createSlideSlices(prevSlideIndex,1,2); 1590 | 1591 | var $slices = self.slides[prevSlideIndex].$element.find('.pogoSlider-slide-slice'); 1592 | 1593 | $slices.eq(0).animate({'left': '-50%'}, currentSlide.duration); 1594 | 1595 | $slices.eq(1).animate({'left': '100%'}, currentSlide.duration); 1596 | 1597 | }, 1598 | 1599 | horizontalSplitReveal: function (prevSlideIndex,currentSlideIndex) { 1600 | 1601 | var self = this; 1602 | var currentSlide = self.slides[currentSlideIndex]; 1603 | 1604 | self.slides[prevSlideIndex].$element.css('z-index',self.settings.baseZindex + 1); 1605 | 1606 | currentSlide.$element.css({'opacity': 1,'z-index': self.settings.baseZindex}); 1607 | 1608 | self._createSlideSlices(prevSlideIndex,2,1); 1609 | 1610 | var $slices = self.slides[prevSlideIndex].$element.find('.pogoSlider-slide-slice'); 1611 | 1612 | $slices.eq(0).animate({'top': '-50%'}, currentSlide.duration); 1613 | 1614 | $slices.eq(1).animate({'top': '100%'}, currentSlide.duration); 1615 | 1616 | }, 1617 | 1618 | zipReveal: function (prevSlideIndex,currentSlideIndex) { 1619 | 1620 | var self = this; 1621 | var currentSlide = self.slides[currentSlideIndex]; 1622 | 1623 | // init prev slide 1624 | self.slides[prevSlideIndex].$element.css('z-index',self.settings.baseZindex + 1); 1625 | // init current slide 1626 | currentSlide.$element.css({'opacity': 1,'z-index': self.settings.baseZindex}); 1627 | 1628 | self._createSlideSlices(prevSlideIndex,1,Math.round(self.$element.width() / 100)); 1629 | 1630 | var $slices = self.slides[prevSlideIndex].$element.find('.pogoSlider-slide-slice'); 1631 | 1632 | var transitionDelay = currentSlide.duration / ($slices.length + 1); 1633 | var transitionDuration = transitionDelay * 2; 1634 | 1635 | $slices.each(function (index) { 1636 | 1637 | if (index % 2 === 0) { 1638 | $(this).delay(transitionDelay * index).animate({'top': '100%'}, transitionDuration); 1639 | } else { 1640 | $(this).delay(transitionDelay * index).animate({'top': '-100%'}, transitionDuration); 1641 | } 1642 | 1643 | }); 1644 | 1645 | }, 1646 | 1647 | barRevealDown: function (prevSlideIndex,currentSlideIndex) { 1648 | 1649 | return this.slideTransitions['barReveal'].apply(this,[prevSlideIndex,currentSlideIndex,'down']); 1650 | 1651 | }, 1652 | 1653 | barRevealUp: function (prevSlideIndex,currentSlideIndex) { 1654 | 1655 | return this.slideTransitions['barReveal'].apply(this,[prevSlideIndex,currentSlideIndex,'up']); 1656 | 1657 | }, 1658 | 1659 | barReveal: function (prevSlideIndex,currentSlideIndex,direction) { 1660 | 1661 | var self = this; 1662 | var currentSlide = self.slides[currentSlideIndex]; 1663 | 1664 | // init prev slide 1665 | self.slides[prevSlideIndex].$element.css('z-index',self.settings.baseZindex + 1); 1666 | // init current slide 1667 | currentSlide.$element.css({'opacity': 1,'z-index': self.settings.baseZindex}); 1668 | 1669 | self._createSlideSlices(prevSlideIndex,1,Math.round(self.$element.width() / 100)); 1670 | 1671 | var $slices = self.slides[prevSlideIndex].$element.find('.pogoSlider-slide-slice'); 1672 | 1673 | var transitionDelay = currentSlide.duration / ($slices.length + 1); 1674 | var transitionDuration = transitionDelay * 2; 1675 | 1676 | $slices.each(function (index) { 1677 | 1678 | if (direction === 'down') { 1679 | $(this).delay(transitionDelay * index).animate({'top': '100%'}, transitionDuration); 1680 | } else { 1681 | $(this).delay(transitionDelay * index).animate({'top': '-100%'}, transitionDuration); 1682 | } 1683 | 1684 | }); 1685 | 1686 | } 1687 | 1688 | } 1689 | 1690 | }; 1691 | 1692 | $.fn[ pluginName ] = function (options) { 1693 | 1694 | this.each(function() { 1695 | if ( !$.data( this, 'plugin_' + pluginName ) ) { 1696 | $.data( this, 'plugin_' + pluginName, new Plugin( this, options ) ); 1697 | } 1698 | }); 1699 | 1700 | // chain jQuery functions 1701 | return this; 1702 | }; 1703 | 1704 | 1705 | })( jQuery, window, document ); -------------------------------------------------------------------------------- /src/pogo-slider.css: -------------------------------------------------------------------------------- 1 | /** 2 | * === z-index === 3 | * 4 | * pogoSlider-progressBar = 6 5 | * pogoSlider-dir-btn = 10 6 | * pogoSlider-nav = 10 7 | * pogoSlider-loading = 11 8 | * 9 | */ 10 | 11 | .pogoSlider { 12 | width: 100%; 13 | height: 0; 14 | padding-bottom: 48%; 15 | position: relative; 16 | overflow: hidden; 17 | } 18 | 19 | #column-left .pogoSlider, 20 | #column-right .pogoSlider, 21 | #content .pogoSlider { 22 | margin-bottom: 20px; 23 | } 24 | 25 | .pogoSlider--banner .pogoSlider-slide { 26 | ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; 27 | filter: alpha(opacity=100); 28 | opacity: 1; 29 | } 30 | 31 | .pogoSlider-slide { 32 | width: 100%; 33 | height: 100%; 34 | position: absolute; 35 | background-size: cover; 36 | -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; 37 | filter: alpha(opacity=0); 38 | opacity: 0; 39 | perspective: 1300px; 40 | overflow: hidden; 41 | } 42 | 43 | .pogoSlider-loading { 44 | position: absolute; 45 | top: 0; 46 | left: 0; 47 | width: 100%; 48 | height: 100%; 49 | background: #eaeaea; 50 | z-index: 11; 51 | } 52 | 53 | .pogoSlider-loading-icon { 54 | position: absolute; 55 | top: 50%; 56 | margin-top: -18px; 57 | left: 50%; 58 | margin-left: -18px; 59 | width: 36px; 60 | height: 36px; 61 | background-image: url(data:image/gif;base64,R0lGODlhJAAkAPIAAJmZmczMzObm5vLy8gAAAAAAAAAAAAAAACH5BA0KAAQAIf8LTkVUU0NBUEUyLjADAQAAACwAAAAAJAAkAAADfQi6DPQwyhmbpTgT27Sv3PKNoTh6pXKi6aqljovB8tzWE43vfH8GwKAw4HsMj0XCcZhcCptOIDQ6dVaXV2QxKk16vzWBeEwWPAbotHpUbp/VcHab/Ian5XNx3T7A5/d2fnOAcR95Y4RrhodmBHx3i4eJkB6MjY9ogm6OmCMJACH5BA0KAAQALAAAAAAkACQAAAN+GLocRCDK+aq1Lb/Jwf1P1mydBH4iQ5beiaXKWrovLHd0BccQ2+Y7R4+VC+1unCIhiKQUmcOZckqtWl2CrHYruIK4YO8HzBVfyFuzBa1VV9hZ9wPeldPlhLsdju/7vQOBgoMDeISHhoeDiYqBjI2PipGIco2Ck4SYi5WWhXIJACH5BA0KAAQALAAAAAAkACQAAAN7KLosRCHK+YC9GLT9pg9Vlm1N90mheJGMeYKEirGLe6YyrdgfruoOyAsmW+l4Hp8IiKTEipqj8KUcSYdE6GPL7Xq/4LB4/B2Yz+gBeZ1ur8nt9HscR8/F9fM9nDfvwX1qf16Bg4R9hl2FiYyNjo+QkZKTlJWWl5iZmpoJACH5BA0KAAQALAAAAAAkACQAAAN8OLo8RCLK+YK9OLT9phdVlm1N90mheJGMeYKEirGLe6YyrdgfruoOyAsmW+l4Hp8IiKTEipqj8KUcSYdE6GPL7Xq/4LB4TC5/Aei0GmAer99t8XsdD8/VdfA9nT/v2X1df4CBW4OFXIeID4qLjo+QkZKTlJWWl5iZmptxCQAh+QQNCgAEACwAAAAAJAAkAAADfUi6vPMwKkGrFS2ryMe8l5Z1EgGGIkNC30ml6uqZ7gtvcuve+KqfPIJsVrPdhj9QEEmrLXPNXXBKrVqvi4B2yw1gM93wtxHujhll7jmb1q4Vbfc77p3H3wQ6Xo/v+68AgYKDAHiEh4aHg4mKgYyNj4qRiG+NgpOEmIuVlgAJACH5BA0KAAQALAAAAAAkACQAAAN8SLrcziPKOZ69hGrMoZ5d+IEhN0qleVbptbLt88bWTDv27Z167/8cgXBIFAAJxeQxWVwyh86nESgVRp9XZlZJrR6/4AdgTC4rAui0OhAquwHn9br9JsflaXodTsCr9XV3foBvgniEboZyiGZ9fmiMdo6PkWOKcx17lpN+CQAh+QQNCgAEACwAAAAAJAAkAAADd0i63P4wykmrvTjrzbv/YCiOZGmSQ6quQ8i+7rvGckrXt5zDYK3uLODsRIQAjsgkQBFoOp8KgXRKFSivzKc2Wq1elVmtk9udfpNhcYBctp6PaTG7/IYT1GNC21yPb/V7bm9+UIB7dUt3eGuGbYiEeYGCZ5BNc10JACH5BA0KAAQALAAAAAAkACQAAAN3SLrc/jDKSau9OOvNu/9gKI5kaS5Aqq5AyL7uu8ZySte3nMNgre4s4OxELAaOyGRAIWg6n4qBdEodKK/MpzZarV6VWa2T251+k2GxgFy2no9pMbv8hhPUY0LbXI9v9Xtub35QgHt1S3d4a4ZtiIR5gYJnkE1zXQkAOw==); 62 | } 63 | 64 | .pogoSlider-slide-element { 65 | animation-fill-mode: both; 66 | } 67 | 68 | .m-pogoSlider .pogoSlider-slide-element { 69 | position: absolute; 70 | margin: 0; 71 | box-sizing: border-box; 72 | } 73 | 74 | .pogoSlider-progressBar { 75 | position: absolute; 76 | width: 100%; 77 | height: 5px; 78 | top: 0; 79 | left: 0%; 80 | background: #fff; /* fallback */ 81 | -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=20)"; 82 | filter: alpha(opacity=20); 83 | background: rgba(255,255,255,0.2); 84 | z-index: 6; 85 | } 86 | 87 | .pogoSlider-progressBar-duration { 88 | position: absolute; 89 | height: 100%; 90 | left: 0; 91 | width: 0%; 92 | background: #fff; /* fallback */ 93 | -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"; 94 | filter: alpha(opacity=40); 95 | background: rgba(255,255,255,0.4); 96 | } 97 | 98 | .pogoSlider-dir-btn { 99 | position: absolute; 100 | z-index: 10; 101 | background: none; 102 | width: 20px; 103 | height: 20px; 104 | border-color: #eaeaea; 105 | border-color: rgba(255,255,255,0.7); 106 | border-style: solid; 107 | transform: rotate(45deg); 108 | cursor: pointer; 109 | } 110 | 111 | .pogoSlider-dir-btn:hover { 112 | border-color: #fff; 113 | } 114 | 115 | .pogoSlider-dir-btn:focus { 116 | outline: none; 117 | } 118 | 119 | .pogoSlider--dirTopLeft .pogoSlider-dir-btn--prev, 120 | .pogoSlider--dirTopRight .pogoSlider-dir-btn--prev, 121 | .pogoSlider--dirBottomLeft .pogoSlider-dir-btn--prev, 122 | .pogoSlider--dirBottomRight .pogoSlider-dir-btn--prev, 123 | .pogoSlider--dirCenterHorizontal .pogoSlider-dir-btn--prev { 124 | border-width: 0 0 3px 3px; 125 | } 126 | 127 | .pogoSlider--dirTopLeft .pogoSlider-dir-btn--next, 128 | .pogoSlider--dirTopRight .pogoSlider-dir-btn--next, 129 | .pogoSlider--dirBottomLeft .pogoSlider-dir-btn--next, 130 | .pogoSlider--dirBottomRight .pogoSlider-dir-btn--next, 131 | .pogoSlider--dirCenterHorizontal .pogoSlider-dir-btn--next { 132 | border-width: 3px 3px 0 0; 133 | 134 | } 135 | 136 | .pogoSlider--dirCenterVertical .pogoSlider-dir-btn--next { 137 | border-width: 3px 0 0 3px; 138 | } 139 | 140 | .pogoSlider--dirCenterVertical .pogoSlider-dir-btn--prev { 141 | border-width: 0 3px 3px 0; 142 | } 143 | 144 | .pogoSlider--dirTopLeft .pogoSlider-dir-btn, 145 | .pogoSlider--dirTopRight .pogoSlider-dir-btn, 146 | .pogoSlider--dirCenterVertical .pogoSlider-dir-btn--next { 147 | top: 14px; 148 | } 149 | 150 | .pogoSlider--dirTopLeft .pogoSlider-dir-btn--prev, 151 | .pogoSlider--dirBottomLeft .pogoSlider-dir-btn--prev, 152 | .pogoSlider--dirCenterHorizontal .pogoSlider-dir-btn--prev { 153 | left: 14px; 154 | } 155 | 156 | .pogoSlider--dirTopLeft .pogoSlider-dir-btn--next, 157 | .pogoSlider--dirBottomLeft .pogoSlider-dir-btn--next { 158 | left: 50px; 159 | } 160 | 161 | .pogoSlider--dirTopRight .pogoSlider-dir-btn--prev, 162 | .pogoSlider--dirBottomRight .pogoSlider-dir-btn--prev { 163 | right: 50px; 164 | } 165 | 166 | .pogoSlider--dirTopRight .pogoSlider-dir-btn--next, 167 | .pogoSlider--dirBottomRight .pogoSlider-dir-btn--next, 168 | .pogoSlider--dirCenterHorizontal .pogoSlider-dir-btn--next { 169 | right: 14px; 170 | } 171 | 172 | .pogoSlider--dirBottomLeft .pogoSlider-dir-btn, 173 | .pogoSlider--dirBottomRight .pogoSlider-dir-btn, 174 | .pogoSlider--dirCenterVertical .pogoSlider-dir-btn--prev { 175 | bottom: 14px; 176 | } 177 | 178 | .pogoSlider--dirCenterVertical .pogoSlider-dir-btn { 179 | left: 50%; 180 | margin-left: -10px 181 | } 182 | 183 | .pogoSlider--dirCenterHorizontal .pogoSlider-dir-btn { 184 | top: 50%; 185 | margin-top: -10px; 186 | } 187 | 188 | .pogoSlider-nav { 189 | position: absolute; 190 | padding: 0; 191 | margin: 0; 192 | z-index: 10; 193 | } 194 | 195 | .pogoSlider--navTop .pogoSlider-nav, 196 | .pogoSlider--navBottom .pogoSlider-nav { 197 | left: 50%; 198 | transform: translateX(-50%); 199 | } 200 | 201 | .pogoSlider--navTop .pogoSlider-nav { 202 | top: 10px; 203 | } 204 | 205 | .pogoSlider--navBottom .pogoSlider-nav { 206 | bottom: 10px; 207 | } 208 | 209 | .pogoSlider--navTop .pogoSlider-nav li, 210 | .pogoSlider--navBottom .pogoSlider-nav li { 211 | display: inline; 212 | margin: 0 6px; 213 | } 214 | 215 | .pogoSlider--navLeft .pogoSlider-nav, 216 | .pogoSlider--navRight .pogoSlider-nav { 217 | top: 50%; 218 | transform: translateY(-50%); 219 | } 220 | 221 | .pogoSlider--navLeft .pogoSlider-nav { 222 | left: 10px; 223 | } 224 | 225 | .pogoSlider--navRight .pogoSlider-nav { 226 | right: 10px; 227 | } 228 | 229 | .pogoSlider--navLeft .pogoSlider-nav li, 230 | .pogoSlider--navRight .pogoSlider-nav li { 231 | display: block; 232 | margin: 6px 0; 233 | } 234 | 235 | .pogoSlider-nav-btn { 236 | background: #cccccc; 237 | background: rgba(255,255,255,0.5); 238 | border: none; 239 | border-radius: 50%; 240 | width: 20px; 241 | height: 20px; 242 | box-shadow: 0 1px 1px rgba(0,0,0,0.1); 243 | cursor: pointer; 244 | } 245 | 246 | .pogoSlider-nav-btn:focus { 247 | outline: none; 248 | } 249 | 250 | .pogoSlider-nav-btn--selected { 251 | background: #fff; 252 | box-shadow: 0 1px 1px rgba(0,0,0,0.3); 253 | } 254 | 255 | .pogoSlider-slide-slice { 256 | overflow: hidden; 257 | position: absolute; 258 | background-size: cover; 259 | } 260 | 261 | .pogoSlider-slide-slice-inner { 262 | position: absolute; 263 | overflow: hidden; 264 | } 265 | 266 | /** 267 | * Element Animations 268 | */ 269 | 270 | /* Slide Down */ 271 | 272 | .pogoSlider-animation-slideDownIn { 273 | animation-name: slideDownIn; 274 | } 275 | 276 | @keyframes slideDownIn { 277 | 0% { 278 | transform: translateY(-50px); 279 | opacity: 0; 280 | } 281 | 282 | 100% { 283 | transform: translateY(0); 284 | opacity: 1; 285 | } 286 | } 287 | 288 | .pogoSlider-animation-slideDownOut { 289 | animation-name: slideDownOut; 290 | } 291 | 292 | @keyframes slideDownOut { 293 | 0% { 294 | transform: translateY(0); 295 | opacity: 1; 296 | } 297 | 298 | 100% { 299 | transform: translateY(50px); 300 | opacity: 0; 301 | } 302 | } 303 | 304 | /* Slide Up */ 305 | 306 | .pogoSlider-animation-slideUpIn { 307 | animation-name: slideUpIn; 308 | } 309 | 310 | @keyframes slideUpIn { 311 | 0% { 312 | transform: translateY(50px); 313 | opacity: 0; 314 | } 315 | 316 | 100% { 317 | transform: translateY(0); 318 | opacity: 1; 319 | } 320 | } 321 | 322 | .pogoSlider-animation-slideUpOut { 323 | animation-name: slideUpOut; 324 | } 325 | 326 | @keyframes slideUpOut { 327 | 0% { 328 | transform: translateY(0); 329 | opacity: 1; 330 | } 331 | 332 | 100% { 333 | transform: translateY(50px); 334 | opacity: 0; 335 | } 336 | } 337 | 338 | /* Slide Right */ 339 | 340 | .pogoSlider-animation-slideRightIn { 341 | animation-name: slideRightIn; 342 | } 343 | 344 | .pogoSlider-animation-slideRightOut { 345 | animation-name: slideRightOut; 346 | } 347 | 348 | @keyframes slideRightIn { 349 | 0% { 350 | transform: translateX(-50px); 351 | opacity: 0; 352 | } 353 | 354 | 100% { 355 | transform: translateX(0); 356 | opacity: 1; 357 | } 358 | } 359 | 360 | @keyframes slideRightOut { 361 | 0% { 362 | transform: translateX(0); 363 | opacity: 1; 364 | } 365 | 366 | 100% { 367 | transform: translateX(50px); 368 | opacity: 0; 369 | } 370 | } 371 | 372 | /* Slide Left */ 373 | 374 | .pogoSlider-animation-slideLeftIn { 375 | animation-name: slideLeftIn; 376 | } 377 | 378 | .pogoSlider-animation-slideLeftOut { 379 | animation-name: slideLeftOut; 380 | } 381 | 382 | @keyframes slideLeftIn { 383 | 0% { 384 | transform: translateX(50px); 385 | opacity: 0; 386 | } 387 | 388 | 100% { 389 | transform: translateX(0); 390 | opacity: 1; 391 | } 392 | } 393 | 394 | @keyframes slideLeftOut { 395 | 0% { 396 | transform: translateX(0); 397 | opacity: 1; 398 | } 399 | 400 | 100% { 401 | transform: translateX(-50px); 402 | opacity: 0; 403 | } 404 | } 405 | 406 | /* Expand */ 407 | 408 | .pogoSlider-animation-expandIn { 409 | animation-name: expandIn; 410 | } 411 | 412 | .pogoSlider-animation-expandOut { 413 | animation-name: expandOut; 414 | } 415 | 416 | @keyframes expandIn { 417 | 0% { 418 | transform: scale(0.7); 419 | opacity: 0; 420 | } 421 | 422 | 100% { 423 | transform: scale(1); 424 | opacity: 1; 425 | } 426 | } 427 | 428 | @keyframes expandOut { 429 | 0% { 430 | transform: scale(1); 431 | opacity: 1; 432 | } 433 | 434 | 100% { 435 | transform: scale(1.5); 436 | opacity: 0; 437 | } 438 | } 439 | 440 | /* Contract */ 441 | 442 | .pogoSlider-animation-contractIn { 443 | animation-name: contractIn; 444 | } 445 | 446 | .pogoSlider-animation-contractOut { 447 | animation-name: contractOut; 448 | } 449 | 450 | @keyframes contractIn { 451 | 0% { 452 | transform: scale(2); 453 | opacity: 0; 454 | } 455 | 456 | 100% { 457 | transform: scale(1); 458 | opacity: 1; 459 | } 460 | } 461 | 462 | @keyframes contractOut { 463 | 0% { 464 | transform: scale(1); 465 | opacity: 1; 466 | } 467 | 468 | 100% { 469 | transform: scale(0.5); 470 | opacity: 0; 471 | } 472 | } 473 | 474 | /* Spin In */ 475 | 476 | .pogoSlider-animation-spinIn { 477 | animation-name: spinIn; 478 | } 479 | 480 | .pogoSlider-animation-spinOut { 481 | animation-name: spinOut; 482 | } 483 | 484 | @keyframes spinIn { 485 | 0% { 486 | backface-visibility: hidden; 487 | transform: scale(0) rotate(720deg); 488 | } 489 | 490 | 100% { 491 | backface-visibility: hidden; 492 | transform: scale(1) rotate(0); 493 | } 494 | } 495 | 496 | @keyframes spinOut { 497 | 0% { 498 | backface-visibility: hidden; 499 | transform: scale(1) rotate(0); 500 | } 501 | 502 | 100% { 503 | backface-visibility: hidden; 504 | transform: scale(0) rotate(720deg); 505 | } 506 | } 507 | 508 | /* Side Fall */ 509 | 510 | .pogoSlider-animation-sideFallIn { 511 | transform-style: preserve-3d; 512 | animation-name: sideFallIn; 513 | } 514 | 515 | .pogoSlider-animation-sideFallOut { 516 | transform-style: preserve-3d; 517 | animation-name: sideFallOut; 518 | } 519 | 520 | @keyframes sideFallIn { 521 | 0% { 522 | transform: translate(30%) translateZ(600px) rotate(10deg); 523 | opacity: 0; 524 | } 525 | 526 | 100% { 527 | transform: translate(0) translateZ(0) rotate(0); 528 | opacity: 1; 529 | } 530 | } 531 | 532 | @keyframes sideFallOut { 533 | 0% { 534 | transform: translate(0) translateZ(0) rotate(0); 535 | opacity: 1; 536 | } 537 | 538 | 100% { 539 | transform: translate(30%) translateZ(600px) rotate(10deg); 540 | opacity: 0; 541 | } 542 | } 543 | 544 | /* 3D Horizontal Flip */ 545 | 546 | .pogoSlider-animation-horizontal3DFlipIn { 547 | transform-style: preserve-3d; 548 | animation-name: horizontal3DFlipIn; 549 | } 550 | 551 | .pogoSlider-animation-horizontal3DFlipOut { 552 | transform-style: preserve-3d; 553 | animation-name: horizontal3DFlipOut; 554 | } 555 | 556 | @keyframes horizontal3DFlipIn { 557 | 0% { 558 | transform: rotateY(-70deg); 559 | opacity: 0; 560 | } 561 | 562 | 100% { 563 | transform: rotateY(0deg); 564 | opacity: 1; 565 | } 566 | } 567 | 568 | @keyframes horizontal3DFlipOut { 569 | 0% { 570 | transform: rotateY(0deg); 571 | opacity: 1; 572 | } 573 | 574 | 100% { 575 | transform: rotateY(-70deg); 576 | opacity: 0; 577 | } 578 | } 579 | 580 | /* 3D Vertical Flip */ 581 | 582 | .pogoSlider-animation-vertical3DFlipIn { 583 | transform-style: preserve-3d; 584 | animation-name: vertical3DFlipIn; 585 | } 586 | 587 | .pogoSlider-animation-vertical3DFlipOut { 588 | transform-style: preserve-3d; 589 | animation-name: vertical3DFlipOut; 590 | } 591 | 592 | @keyframes vertical3DFlipIn { 593 | 0% { 594 | transform: rotateX(-70deg); 595 | opacity: 0; 596 | } 597 | 598 | 100% { 599 | transform: rotateX(0); 600 | opacity: 1; 601 | } 602 | } 603 | 604 | @keyframes vertical3DFlipOut { 605 | 0% { 606 | transform: rotateX(0); 607 | opacity: 1; 608 | } 609 | 610 | 100% { 611 | transform: rotateX(-70deg); 612 | opacity: 0; 613 | } 614 | } 615 | 616 | /* 3d Pivot */ 617 | 618 | .pogoSlider-animation-3DPivotIn { 619 | transform-style: preserve-3d; 620 | animation-name: pivotIn; 621 | } 622 | 623 | .pogoSlider-animation-3DPivotOut { 624 | transform-style: preserve-3d; 625 | animation-name: pivotOut; 626 | } 627 | 628 | @keyframes pivotIn { 629 | 0% { 630 | transform: rotateX(-60deg); 631 | transform-origin: 50% 0; 632 | opacity: 0; 633 | } 634 | 635 | 100% { 636 | transform: rotateX(0); 637 | transform-origin: 0 0; 638 | opacity: 1; 639 | } 640 | } 641 | 642 | @keyframes pivotOut { 643 | 0% { 644 | transform: rotateX(0); 645 | transform-origin: 0 0; 646 | opacity: 1; 647 | } 648 | 649 | 100% { 650 | transform: rotateX(-60deg); 651 | transform-origin: 50% 0; 652 | opacity: 0; 653 | } 654 | } 655 | 656 | /* Roll Left */ 657 | 658 | .pogoSlider-animation-rollLeftIn { 659 | animation-name: rollLeftIn; 660 | } 661 | 662 | .pogoSlider-animation-rollLeftOut { 663 | animation-name: rollLeftOut; 664 | } 665 | 666 | @keyframes rollLeftIn { 667 | 0% { 668 | opacity: 0; 669 | transform: translateX(100%) rotate(120deg); 670 | } 671 | 672 | 100% { 673 | opacity: 1; 674 | transform: translateX(0px) rotate(0deg); 675 | } 676 | } 677 | 678 | @keyframes rollLeftOut { 679 | 0% { 680 | opacity: 1; 681 | transform: translateX(0px) rotate(0deg); 682 | } 683 | 684 | 100% { 685 | opacity: 0; 686 | transform: translateX(-100%) rotate(-120deg); 687 | } 688 | } 689 | 690 | 691 | /* Roll Right */ 692 | 693 | .pogoSlider-animation-rollRightIn { 694 | animation-name: rollRightIn; 695 | } 696 | 697 | .pogoSlider-animation-rollRightOut { 698 | animation-name: rollRightOut; 699 | } 700 | 701 | @keyframes rollRightIn { 702 | 0% { 703 | opacity: 0; 704 | transform: translateX(-100%) rotate(-120deg); 705 | } 706 | 707 | 100% { 708 | opacity: 1; 709 | transform: translateX(0px) rotate(0deg); 710 | } 711 | } 712 | 713 | @keyframes rollRightOut { 714 | 0% { 715 | opacity: 1; 716 | transform: translateX(0px) rotate(0deg); 717 | } 718 | 719 | 100% { 720 | opacity: 0; 721 | transform: translateX(100%) rotate(120deg); 722 | } 723 | } 724 | 725 | /* Glide Left */ 726 | 727 | .pogoSlider-animation-glideLeftIn { 728 | animation-name: glideLeftIn; 729 | animation-timing-function: ease-out; 730 | } 731 | 732 | .pogoSlider-animation-glideLeftOut { 733 | animation-name: glideLeftOut; 734 | animation-timing-function: ease-in; 735 | } 736 | 737 | @keyframes glideLeftIn { 738 | 0% { 739 | transform: translateX(100%) skewX(-30deg); 740 | opacity: 0; 741 | } 742 | 743 | 60% { 744 | transform: translateX(-20%) skewX(30deg); 745 | opacity: 1; 746 | } 747 | 748 | 80% { 749 | transform: translateX(0%) skewX(-15deg); 750 | opacity: 1; 751 | } 752 | 753 | 100% { 754 | transform: translateX(0%) skewX(0deg); 755 | opacity: 1; 756 | } 757 | } 758 | 759 | @keyframes glideLeftOut { 760 | 0% { 761 | transform: translateX(0%) skewX(0deg); 762 | opacity: 1; 763 | } 764 | 765 | 100% { 766 | transform: translateX(-100%) skewX(30deg); 767 | opacity: 0; 768 | } 769 | } 770 | 771 | 772 | /* Glide Right */ 773 | 774 | .pogoSlider-animation-glideRightIn { 775 | animation-name: glideRightIn; 776 | animation-timing-function: ease-out; 777 | } 778 | 779 | .pogoSlider-animation-glideRightOut { 780 | animation-name: glideRightOut; 781 | animation-timing-function: ease-in; 782 | } 783 | 784 | @keyframes glideRightIn { 785 | 0% { 786 | transform: translateX(-100%) skewX(30deg); 787 | opacity: 0; 788 | } 789 | 790 | 60% { 791 | transform: translateX(20%) skewX(-30deg); 792 | opacity: 1; 793 | } 794 | 795 | 80% { 796 | transform: translateX(0%) skewX(15deg); 797 | opacity: 1; 798 | } 799 | 800 | 100% { 801 | transform: translateX(0%) skewX(0deg); 802 | opacity: 1; 803 | } 804 | } 805 | 806 | @keyframes glideRightOut { 807 | 0% { 808 | transform: translateX(0%) skewX(0deg); 809 | opacity: 1; 810 | } 811 | 812 | 100% { 813 | transform: translateX(100%) skewX(-30deg); 814 | opacity: 0; 815 | } 816 | } 817 | 818 | /* FlipX */ 819 | 820 | .pogoSlider-animation-flipXIn { 821 | backface-visibility: visible !important; 822 | animation-name: flipXIn; 823 | } 824 | 825 | .pogoSlider-animation-flipXOut { 826 | animation-name: flipXOut; 827 | backface-visibility: visible !important; 828 | } 829 | 830 | @keyframes flipXIn { 831 | 0% { 832 | transform: perspective(400px) rotateX(90deg); 833 | opacity: 0; 834 | } 835 | 836 | 40% { 837 | transform: perspective(400px) rotateX(-10deg); 838 | } 839 | 840 | 70% { 841 | transform: perspective(400px) rotateX(10deg); 842 | } 843 | 844 | 100% { 845 | transform: perspective(400px) rotateX(0deg); 846 | opacity: 1; 847 | } 848 | } 849 | 850 | @keyframes flipXOut { 851 | 0% { 852 | transform: perspective(400px) rotateX(0deg); 853 | opacity: 1; 854 | } 855 | 856 | 100% { 857 | transform: perspective(400px) rotateX(90deg); 858 | opacity: 0; 859 | } 860 | } 861 | 862 | /* FlipY */ 863 | 864 | .pogoSlider-animation-flipYIn { 865 | backface-visibility: visible !important; 866 | animation-name: flipYIn; 867 | } 868 | 869 | .pogoSlider-animation-flipYOut { 870 | backface-visibility: visible !important; 871 | animation-name: flipYOut; 872 | } 873 | 874 | @keyframes flipYIn { 875 | 0% { 876 | transform: perspective(400px) rotateY(90deg); 877 | opacity: 0; 878 | } 879 | 880 | 40% { 881 | transform: perspective(400px) rotateY(-10deg); 882 | } 883 | 884 | 70% { 885 | transform: perspective(400px) rotateY(10deg); 886 | } 887 | 888 | 100% { 889 | transform: perspective(400px) rotateY(0deg); 890 | opacity: 1; 891 | } 892 | } 893 | 894 | @keyframes flipYOut { 895 | 0% { 896 | transform: perspective(400px) rotateY(0deg); 897 | opacity: 1; 898 | } 899 | 900 | 100% { 901 | transform: perspective(400px) rotateY(90deg); 902 | opacity: 0; 903 | } 904 | } 905 | 906 | /** 907 | * Slide Animations 908 | */ 909 | 910 | /* Fold Left */ 911 | 912 | .pogoSlider-animation-foldInLeft { 913 | animation-name: foldInLeft; 914 | animation-fill-mode: forwards; 915 | backface-visibility: hidden; 916 | transform-origin: 0% 0% 0; 917 | transform-style: preserve-3d; 918 | } 919 | 920 | @keyframes foldInLeft { 921 | 0% { 922 | transform: rotateY(0deg); 923 | } 924 | 925 | 100% { 926 | transform: rotateY(-180deg); 927 | } 928 | } 929 | 930 | .pogoSlider-animation-foldOutLeft { 931 | animation-name: foldOutLeft; 932 | animation-fill-mode: forwards; 933 | backface-visibility: hidden; 934 | transform-origin: 100% 100% 0; 935 | transform-style: preserve-3d; 936 | } 937 | 938 | @keyframes foldOutLeft { 939 | 0% { 940 | transform: rotateY(180deg); 941 | } 942 | 943 | 100% { 944 | transform: rotateY(0deg); 945 | } 946 | } 947 | 948 | /* Fold Right */ 949 | 950 | .pogoSlider-animation-foldInRight { 951 | animation-name: foldInRight; 952 | animation-fill-mode: forwards; 953 | backface-visibility: hidden; 954 | transform-origin: 100% 100% 0; 955 | transform-style: preserve-3d; 956 | } 957 | 958 | @keyframes foldInRight { 959 | 0% { 960 | transform: rotateY(0deg); 961 | } 962 | 963 | 100% { 964 | transform: rotateY(180deg); 965 | } 966 | } 967 | 968 | .pogoSlider-animation-foldOutRight { 969 | animation-name: foldOutRight; 970 | animation-fill-mode: forwards; 971 | backface-visibility: hidden; 972 | transform-origin: 0% 0% 0; 973 | transform-style: preserve-3d; 974 | } 975 | 976 | @keyframes foldOutRight { 977 | 0% { 978 | transform: rotateY(-180deg); 979 | } 980 | 981 | 100% { 982 | transform: rotateY(0deg); 983 | } 984 | } 985 | 986 | /* Expand Reveal */ 987 | 988 | .pogoSlider-animation-expandReveal { 989 | animation-name: expandReveal; 990 | animation-fill-mode: forwards; 991 | } 992 | 993 | @keyframes expandReveal { 994 | 0% { 995 | transform: scale(1); 996 | opacity: 1; 997 | } 998 | 999 | 100% { 1000 | transform: scale(1.3); 1001 | opacity: 0; 1002 | } 1003 | } 1004 | 1005 | /* Shrink Reveal */ 1006 | 1007 | .pogoSlider-animation-shrinkReveal { 1008 | animation-name: shrinkReveal; 1009 | animation-fill-mode: forwards; 1010 | } 1011 | 1012 | @keyframes shrinkReveal { 1013 | 0% { 1014 | transform: scale(1); 1015 | opacity: 1; 1016 | } 1017 | 1018 | 100% { 1019 | transform: scale(0.5); 1020 | opacity: 0; 1021 | } 1022 | } 1023 | 1024 | /* Blocks Reveal */ 1025 | 1026 | .pogoSlider-animation-blocksReveal { 1027 | animation-name: blocksReveal; 1028 | animation-fill-mode: forwards; 1029 | } 1030 | 1031 | @keyframes blocksReveal { 1032 | 0% { 1033 | transform: scale(1); 1034 | opacity: 1; 1035 | } 1036 | 1037 | 100% { 1038 | transform: scale(0.8); 1039 | opacity: 0; 1040 | } 1041 | } 1042 | 1043 | /* Down */ 1044 | 1045 | .pogoSlider-animation-downIn { 1046 | animation-name: downIn; 1047 | animation-fill-mode: forwards; 1048 | } 1049 | 1050 | @keyframes downIn { 1051 | 0% { 1052 | transform: translateY(-100%); 1053 | } 1054 | 1055 | 100% { 1056 | transform: translateY(0); 1057 | } 1058 | } 1059 | 1060 | .pogoSlider-animation-downOut { 1061 | animation-name: downOut; 1062 | animation-fill-mode: forwards; 1063 | } 1064 | 1065 | @keyframes downOut { 1066 | 0% { 1067 | transform: translateY(0); 1068 | } 1069 | 1070 | 100% { 1071 | transform: translateY(100%); 1072 | } 1073 | } 1074 | 1075 | /* Up */ 1076 | 1077 | .pogoSlider-animation-upIn { 1078 | animation-name: upIn; 1079 | animation-fill-mode: forwards; 1080 | } 1081 | 1082 | @keyframes upIn { 1083 | 0% { 1084 | transform: translateY(100%); 1085 | } 1086 | 1087 | 100% { 1088 | transform: translateY(0); 1089 | } 1090 | } 1091 | 1092 | .pogoSlider-animation-upOut { 1093 | animation-name: upOut; 1094 | animation-fill-mode: forwards; 1095 | } 1096 | 1097 | @keyframes upOut { 1098 | 0% { 1099 | transform: translateY(0); 1100 | } 1101 | 1102 | 100% { 1103 | transform: translateY(-100%); 1104 | } 1105 | } 1106 | 1107 | /* Right */ 1108 | 1109 | .pogoSlider-animation-rightIn { 1110 | animation-name: rightIn; 1111 | animation-fill-mode: forwards; 1112 | } 1113 | 1114 | @keyframes rightIn { 1115 | 0% { 1116 | transform: translateX(-100%); 1117 | } 1118 | 1119 | 100% { 1120 | transform: translateX(0); 1121 | } 1122 | } 1123 | 1124 | .pogoSlider-animation-rightOut { 1125 | animation-name: rightOut; 1126 | animation-fill-mode: forwards; 1127 | } 1128 | 1129 | @keyframes rightOut { 1130 | 0% { 1131 | transform: translateX(0); 1132 | } 1133 | 1134 | 100% { 1135 | transform: translateX(100%); 1136 | } 1137 | } 1138 | 1139 | /* Left */ 1140 | 1141 | .pogoSlider-animation-leftIn { 1142 | animation-name: leftIn; 1143 | animation-fill-mode: forwards; 1144 | } 1145 | 1146 | @keyframes leftIn { 1147 | 0% { 1148 | transform: translateX(100%); 1149 | } 1150 | 1151 | 100% { 1152 | transform: translateX(0); 1153 | } 1154 | } 1155 | 1156 | .pogoSlider-animation-leftOut { 1157 | animation-name: leftOut; 1158 | animation-fill-mode: forwards; 1159 | } 1160 | 1161 | @keyframes leftOut { 1162 | 0% { 1163 | transform: translateX(0); 1164 | } 1165 | 1166 | 100% { 1167 | transform: translateX(-100%); 1168 | } 1169 | } --------------------------------------------------------------------------------