full demo on http://wagerfield.github.io/parallax/
A Pen by CSS_Masters on CodePen.
| <!-- project url https://github.com/wagerfield/parallax/</br> --> | |
| <!-- full demo https://wagerfield.github.io/parallax/ --> | |
| <html class="mouse"> | |
| <body> | |
| <div id="container" class="wrapper"> | |
| <ul id="scene" class="scene unselectable" data-friction-x="0.1" data-friction-y="0.1" data-scalar-x="25" data-scalar-y="15" style="width: 1680px; height: 569px; -webkit-transform: translate3d(0, 0, 0); -webkit-transform-style: preserve-3d; -webkit-backface-visibility: hidden;"> | |
| <li class="layer" data-depth="0.00" style="position: relative; display: block; height: 100%; width: 100%; left: 0px; top: 0px; -webkit-transform: translate3d(0%, 0%, 0px); -webkit-transform-style: preserve-3d; -webkit-backface-visibility: hidden;"></li> | |
| <li class="layer" data-depth="0.10" style="position: absolute; display: block; height: 100%; width: 100%; left: 0px; top: 0px; -webkit-transform: translate3d(0.29761904761904784%, -1.4893992932862183%, 0px); -webkit-transform-style: preserve-3d; -webkit-backface-visibility: hidden;"><div class="background"></div></li> | |
| <li class="layer" data-depth="0.10" style="position: absolute; display: block; height: 100%; width: 100%; left: 0px; top: 0px; -webkit-transform: translate3d(0.29761904761904784%, -1.4893992932862183%, 0px); -webkit-transform-style: preserve-3d; -webkit-backface-visibility: hidden;"><div class="light orange b phase-4"></div></li> | |
| <li class="layer" data-depth="0.10" style="position: absolute; display: block; height: 100%; width: 100%; left: 0px; top: 0px; -webkit-transform: translate3d(0.29761904761904784%, -1.4893992932862183%, 0px); -webkit-transform-style: preserve-3d; -webkit-backface-visibility: hidden;"><div class="light purple c phase-5"></div></li> | |
| <li class="layer" data-depth="0.10" style="position: absolute; display: block; height: 100%; width: 100%; left: 0px; top: 0px; -webkit-transform: translate3d(0.29761904761904784%, -1.4893992932862183%, 0px); -webkit-transform-style: preserve-3d; -webkit-backface-visibility: hidden;"><div class="light orange d phase-3"></div></li> | |
| <li class="layer" data-depth="0.15" style="position: absolute; display: block; height: 100%; width: 100%; left: 0px; top: 0px; -webkit-transform: translate3d(0.4464285714285717%, -2.234098939929327%, 0px); -webkit-transform-style: preserve-3d; -webkit-backface-visibility: hidden;"> | |
| <ul class="rope depth-10"> | |
| <li><img src="https://wagerfield.github.io/parallax/assets/images/rope.png" alt="Rope"/></li> | |
| <li class="hanger position-2"> | |
| <div class="board cloud-2 swing-1"></div> | |
| </li> | |
| <li class="hanger position-4"> | |
| <div class="board cloud-1 swing-3"></div> | |
| </li> | |
| <li class="hanger position-8"> | |
| <div class="board birds swing-5"></div> | |
| </li> | |
| </ul> | |
| </li> | |
| <li class="layer" data-depth="0.20" style="position: absolute; display: block; height: 100%; width: 100%; left: 0px; top: 0px; -webkit-transform: translate3d(0.5952380952380957%, -2.9787985865724367%, 0px); -webkit-transform-style: preserve-3d; -webkit-backface-visibility: hidden;"><h1 class="title">parallax<em>.js</em></h1></li> | |
| <li class="layer" data-depth="0.30" style="position: absolute; display: block; height: 100%; width: 100%; left: 0px; top: 0px; -webkit-transform: translate3d(0.8928571428571433%, -4.468197879858654%, 0px); -webkit-transform-style: preserve-3d; -webkit-backface-visibility: hidden;"> | |
| <ul class="rope depth-30"> | |
| <li><img src="https://wagerfield.github.io/parallax/assets/images/rope.png" alt="Rope"/></li> | |
| <li class="hanger position-1"> | |
| <div class="board cloud-1 swing-3"></div> | |
| </li> | |
| <li class="hanger position-5"> | |
| <div class="board cloud-4 swing-1"></div> | |
| </li> | |
| </ul> | |
| </li> | |
| <li class="layer" data-depth="0.30" style="position: absolute; display: block; height: 100%; width: 100%; left: 0px; top: 0px; -webkit-transform: translate3d(0.8928571428571433%, -4.468197879858654%, 0px); -webkit-transform-style: preserve-3d; -webkit-backface-visibility: hidden;"><div class="wave paint depth-30"></div></li> | |
| <li class="layer" data-depth="0.60" style="position: absolute; display: block; height: 100%; width: 100%; left: 0px; top: 0px; -webkit-transform: translate3d(1.1904761904761914%, -5.957597173144873%, 0px); -webkit-transform-style: preserve-3d; -webkit-backface-visibility: hidden;"><div class="wave plain depth-40"></div></li> | |
| <li class="layer" data-depth="0.50" style="position: absolute; display: block; height: 100%; width: 100%; left: 0px; top: 0px; -webkit-transform: translate3d(1.488095238095239%, -7.4469964664310915%, 0px); -webkit-transform-style: preserve-3d; -webkit-backface-visibility: hidden;"><div class="wave paint depth-50"></div></li> | |
| <li class="layer" data-depth="0.60" style="position: absolute; display: block; height: 100%; width: 100%; left: 0px; top: 0px; -webkit-transform: translate3d(1.7857142857142867%, -8.936395759717309%, 0px); -webkit-transform-style: preserve-3d; -webkit-backface-visibility: hidden;"><div class="lighthouse depth-60"></div></li> | |
| <li class="layer" data-depth="0.60" style="position: absolute; display: block; height: 100%; width: 100%; left: 0px; top: 0px; -webkit-transform: translate3d(1.7857142857142867%, -8.936395759717309%, 0px); -webkit-transform-style: preserve-3d; -webkit-backface-visibility: hidden;"> | |
| <ul class="rope depth-60"> | |
| <li><img src="https://wagerfield.github.io/parallax/assets/images/rope.png" alt="Rope"/></li> | |
| <li class="hanger position-3"> | |
| <div class="board birds swing-5"></div> | |
| </li> | |
| <li class="hanger position-6"> | |
| <div class="board cloud-2 swing-2"></div> | |
| </li> | |
| <li class="hanger position-8"> | |
| <div class="board cloud-3 swing-4"></div> | |
| </li> | |
| </ul> | |
| </li> | |
| <li class="layer" data-depth="0.60" style="position: absolute; display: block; height: 100%; width: 100%; left: 0px; top: 0px; -webkit-transform: translate3d(1.7857142857142867%, -8.936395759717309%, 0px); -webkit-transform-style: preserve-3d; -webkit-backface-visibility: hidden;"><div class="wave plain depth-60"></div></li> | |
| <li class="layer" data-depth="0.80" style="position: absolute; display: block; height: 100%; width: 100%; left: 0px; top: 0px; -webkit-transform: translate3d(2.3809523809523827%, -11.915194346289747%, 0px); -webkit-transform-style: preserve-3d; -webkit-backface-visibility: hidden;"><div class="wave plain depth-80"></div></li> | |
| <li class="layer" data-depth="1.00" style="position: absolute; display: block; height: 100%; width: 100%; left: 0px; top: 0px; -webkit-transform: translate3d(2.976190476190478%, -14.893992932862183%, 0px); -webkit-transform-style: preserve-3d; -webkit-backface-visibility: hidden;"><div class="wave paint depth-100"></div></li> | |
| </ul> | |
| </div> | |
| </body> | |
| </html> |
full demo on http://wagerfield.github.io/parallax/
A Pen by CSS_Masters on CodePen.
| //project url https://github.com/wagerfield/parallax/ | |
| //full demo https://wagerfield.github.io/parallax/ | |
| // Pretty simple huh? | |
| var scene = document.getElementById('scene'); | |
| var parallax = new Parallax(scene); | |
| //============================================================ | |
| // | |
| // The MIT License | |
| // | |
| // Copyright (C) 2013 Matthew Wagerfield - @mwagerfield | |
| // | |
| // Permission is hereby granted, free of charge, to any | |
| // person obtaining a copy of this software and associated | |
| // documentation files (the "Software"), to deal in the | |
| // Software without restriction, including without limitation | |
| // the rights to use, copy, modify, merge, publish, distribute, | |
| // sublicense, and/or sell copies of the Software, and to | |
| // permit persons to whom the Software is furnished to do | |
| // so, subject to the following conditions: | |
| // | |
| // The above copyright notice and this permission notice | |
| // shall be included in all copies or substantial portions | |
| // of the Software. | |
| // | |
| // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY | |
| // OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT | |
| // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS | |
| // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO | |
| // EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE | |
| // FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN | |
| // AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
| // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE | |
| // OR OTHER DEALINGS IN THE SOFTWARE. | |
| // | |
| //============================================================ | |
| /** | |
| * Parallax.js | |
| * @author Matthew Wagerfield - @mwagerfield | |
| * @description Creates a parallax effect between an array of layers, | |
| * driving the motion from the gyroscope output of a smartdevice. | |
| * If no gyroscope is available, the cursor position is used. | |
| */ | |
| ;(function(window, document, undefined) { | |
| var NAME = 'Parallax'; | |
| var MAGIC_NUMBER = 30; | |
| var DEFAULTS = { | |
| calibrationThreshold: 100, | |
| calibrationDelay: 500, | |
| supportDelay: 500, | |
| calibrateX: false, | |
| calibrateY: true, | |
| invertX: true, | |
| invertY: true, | |
| limitX: false, | |
| limitY: false, | |
| scalarX: 10.0, | |
| scalarY: 10.0, | |
| frictionX: 0.1, | |
| frictionY: 0.1 | |
| }; | |
| function Parallax(element, options) { | |
| // DOM Context | |
| this.element = element; | |
| this.layers = element.getElementsByClassName('layer'); | |
| // Data Extraction | |
| var data = { | |
| calibrateX: this.data(this.element, 'calibrate-x'), | |
| calibrateY: this.data(this.element, 'calibrate-y'), | |
| invertX: this.data(this.element, 'invert-x'), | |
| invertY: this.data(this.element, 'invert-y'), | |
| limitX: this.data(this.element, 'limit-x'), | |
| limitY: this.data(this.element, 'limit-y'), | |
| scalarX: this.data(this.element, 'scalar-x'), | |
| scalarY: this.data(this.element, 'scalar-y'), | |
| frictionX: this.data(this.element, 'friction-x'), | |
| frictionY: this.data(this.element, 'friction-y') | |
| }; | |
| // Delete Null Data Values | |
| for (var key in data) { | |
| if (data[key] === null) delete data[key]; | |
| } | |
| // Compose Settings Object | |
| this.extend(this, DEFAULTS, options, data); | |
| // States | |
| this.calibrationTimer = null; | |
| this.calibrationFlag = true; | |
| this.enabled = false; | |
| this.depths = []; | |
| this.raf = null; | |
| // Offset | |
| this.ox = 0; | |
| this.oy = 0; | |
| this.ow = 0; | |
| this.oh = 0; | |
| // Calibration | |
| this.cx = 0; | |
| this.cy = 0; | |
| // Input | |
| this.ix = 0; | |
| this.iy = 0; | |
| // Motion | |
| this.mx = 0; | |
| this.my = 0; | |
| // Velocity | |
| this.vx = 0; | |
| this.vy = 0; | |
| // Callbacks | |
| this.onMouseMove = this.onMouseMove.bind(this); | |
| this.onDeviceOrientation = this.onDeviceOrientation.bind(this); | |
| this.onOrientationTimer = this.onOrientationTimer.bind(this); | |
| this.onCalibrationTimer = this.onCalibrationTimer.bind(this); | |
| this.onAnimationFrame = this.onAnimationFrame.bind(this); | |
| this.onWindowResize = this.onWindowResize.bind(this); | |
| // Initialise | |
| this.initialise(); | |
| } | |
| Parallax.prototype.extend = function() { | |
| if (arguments.length > 1) { | |
| var master = arguments[0]; | |
| for (var i = 1, l = arguments.length; i < l; i++) { | |
| var object = arguments[i]; | |
| for (var key in object) { | |
| master[key] = object[key]; | |
| } | |
| } | |
| } | |
| }; | |
| Parallax.prototype.data = function(element, name) { | |
| return this.deserialize(element.getAttribute('data-'+name)); | |
| }; | |
| Parallax.prototype.deserialize = function(value) { | |
| if (value === "true") { | |
| return true; | |
| } else if (value === "false") { | |
| return false; | |
| } else if (value === "null") { | |
| return null; | |
| } else if (!isNaN(parseFloat(value)) && isFinite(value)) { | |
| return parseFloat(value); | |
| } else { | |
| return value; | |
| } | |
| }; | |
| Parallax.prototype.offset = function(element) { | |
| var x = 0, y = 0; | |
| while (element && !isNaN(element.offsetLeft) && !isNaN(element.offsetTop)) { | |
| x += element.offsetLeft - element.scrollLeft; | |
| y += element.offsetTop - element.scrollTop; | |
| element = element.offsetParent; | |
| } | |
| return {top:y, left:x}; | |
| }; | |
| Parallax.prototype.camelCase = function(value) { | |
| return value.replace(/-+(.)?/g, function(match, character){ | |
| return character ? character.toUpperCase() : ''; | |
| }); | |
| }; | |
| Parallax.prototype.transformSupport = function(value) { | |
| var element = document.createElement('div'); | |
| var propertySupport = false; | |
| var propertyValue = null; | |
| var featureSupport = false; | |
| var cssProperty = null; | |
| var jsProperty = null; | |
| for (var i = 0, l = this.vendors.length; i < l; i++) { | |
| if (this.vendors[i] !== null) { | |
| cssProperty = this.vendors[i][0] + 'transform'; | |
| jsProperty = this.vendors[i][1] + 'Transform'; | |
| } else { | |
| cssProperty = 'transform'; | |
| jsProperty = 'transform'; | |
| } | |
| if (element.style[jsProperty] !== undefined) { | |
| propertySupport = true; | |
| break; | |
| } | |
| } | |
| switch(value) { | |
| case '2D': | |
| featureSupport = propertySupport; | |
| break; | |
| case '3D': | |
| if (propertySupport) { | |
| document.body.appendChild(element); | |
| element.style[jsProperty] = 'translate3d(1px,1px,1px)'; | |
| propertyValue = window.getComputedStyle(element).getPropertyValue(cssProperty); | |
| featureSupport = propertyValue !== undefined && propertyValue.length > 0 && propertyValue !== "none"; | |
| document.body.removeChild(element); | |
| } | |
| break; | |
| } | |
| return featureSupport; | |
| }; | |
| Parallax.prototype.ww = null; | |
| Parallax.prototype.wh = null; | |
| Parallax.prototype.hw = null; | |
| Parallax.prototype.hh = null; | |
| Parallax.prototype.portrait = null; | |
| Parallax.prototype.desktop = !navigator.userAgent.match(/(iPhone|iPod|iPad|Android|BlackBerry|BB10|IEMobile)/); | |
| Parallax.prototype.vendors = [null,['-webkit-','webkit'],['-moz-','Moz'],['-o-','O'],['-ms-','ms']]; | |
| Parallax.prototype.motionSupport = window.DeviceMotionEvent !== undefined; | |
| Parallax.prototype.orientationSupport = window.DeviceOrientationEvent !== undefined; | |
| Parallax.prototype.orientationStatus = 0; | |
| Parallax.prototype.transform2DSupport = Parallax.prototype.transformSupport('2D'); | |
| Parallax.prototype.transform3DSupport = Parallax.prototype.transformSupport('3D'); | |
| Parallax.prototype.initialise = function() { | |
| // Configure Context Styles | |
| if (this.transform3DSupport) this.accelerate(this.element); | |
| var style = window.getComputedStyle(this.element); | |
| if (style.getPropertyValue('position') === 'static') { | |
| this.element.style.position = 'relative'; | |
| } | |
| // Configure Layer Styles | |
| for (var i = 0, l = this.layers.length; i < l; i++) { | |
| var layer = this.layers[i]; | |
| if (this.transform3DSupport) this.accelerate(layer); | |
| layer.style.position = i ? 'absolute' : 'relative'; | |
| layer.style.display = 'block'; | |
| layer.style.height = '100%'; | |
| layer.style.width = '100%'; | |
| layer.style.left = 0; | |
| layer.style.top = 0; | |
| // Cache Layer Depth | |
| this.depths.push(this.data(layer, 'depth') || 0); | |
| } | |
| // Setup | |
| this.updateDimensions(); | |
| this.enable(); | |
| this.queueCalibration(this.calibrationDelay); | |
| }; | |
| Parallax.prototype.updateDimensions = function() { | |
| // Cache Context Dimensions | |
| this.ox = this.offset(this.element).left; | |
| this.oy = this.offset(this.element).top; | |
| this.ow = this.element.offsetWidth; | |
| this.oh = this.element.offsetHeight; | |
| // Cache Window Dimensions | |
| this.ww = window.innerWidth; | |
| this.wh = window.innerHeight; | |
| this.hw = this.ww / 2; | |
| this.hh = this.wh / 2; | |
| }; | |
| Parallax.prototype.queueCalibration = function(delay) { | |
| clearTimeout(this.calibrationTimer); | |
| this.calibrationTimer = setTimeout(this.onCalibrationTimer, delay); | |
| }; | |
| Parallax.prototype.enable = function() { | |
| if (!this.enabled) { | |
| this.enabled = true; | |
| if (this.orientationSupport) { | |
| this.portrait = null; | |
| window.addEventListener('deviceorientation', this.onDeviceOrientation); | |
| setTimeout(this.onOrientationTimer, this.supportDelay); | |
| } else { | |
| this.cx = 0; | |
| this.cy = 0; | |
| this.portrait = false; | |
| window.addEventListener('mousemove', this.onMouseMove); | |
| } | |
| window.addEventListener('resize', this.onWindowResize); | |
| this.raf = requestAnimationFrame(this.onAnimationFrame); | |
| } | |
| }; | |
| Parallax.prototype.disable = function() { | |
| if (this.enabled) { | |
| this.enabled = false; | |
| if (this.orientationSupport) { | |
| window.removeEventListener('deviceorientation', this.onDeviceOrientation); | |
| } else { | |
| window.removeEventListener('mousemove', this.onMouseMove); | |
| } | |
| window.removeEventListener('resize', this.onWindowResize); | |
| cancelAnimationFrame(this.raf); | |
| } | |
| }; | |
| Parallax.prototype.calibrate = function(x, y) { | |
| this.calibrateX = x === undefined ? this.calibrateX : x; | |
| this.calibrateY = y === undefined ? this.calibrateY : y; | |
| }; | |
| Parallax.prototype.invert = function(x, y) { | |
| this.invertX = x === undefined ? this.invertX : x; | |
| this.invertY = y === undefined ? this.invertY : y; | |
| }; | |
| Parallax.prototype.friction = function(x, y) { | |
| this.frictionX = x === undefined ? this.frictionX : x; | |
| this.frictionY = y === undefined ? this.frictionY : y; | |
| }; | |
| Parallax.prototype.scalar = function(x, y) { | |
| this.scalarX = x === undefined ? this.scalarX : x; | |
| this.scalarY = y === undefined ? this.scalarY : y; | |
| }; | |
| Parallax.prototype.limit = function(x, y) { | |
| this.limitX = x === undefined ? this.limitX : x; | |
| this.limitY = y === undefined ? this.limitY : y; | |
| }; | |
| Parallax.prototype.clamp = function(value, min, max) { | |
| value = Math.max(value, min); | |
| value = Math.min(value, max); | |
| return value; | |
| }; | |
| Parallax.prototype.css = function(element, property, value) { | |
| var jsProperty = null; | |
| for (var i = 0, l = this.vendors.length; i < l; i++) { | |
| if (this.vendors[i] !== null) { | |
| jsProperty = this.camelCase(this.vendors[i][1] + '-' + property); | |
| } else { | |
| jsProperty = property; | |
| } | |
| if (element.style[jsProperty] !== undefined) { | |
| element.style[jsProperty] = value; | |
| break; | |
| } | |
| } | |
| }; | |
| Parallax.prototype.accelerate = function(element) { | |
| this.css(element, 'transform', 'translate3d(0,0,0)'); | |
| this.css(element, 'transform-style', 'preserve-3d'); | |
| this.css(element, 'backface-visibility', 'hidden'); | |
| }; | |
| Parallax.prototype.setPosition = function(element, x, y) { | |
| x += '%'; | |
| y += '%'; | |
| if (this.transform3DSupport) { | |
| this.css(element, 'transform', 'translate3d('+x+','+y+',0)'); | |
| } else if (this.transform2DSupport) { | |
| this.css(element, 'transform', 'translate('+x+','+y+')'); | |
| } else { | |
| element.style.left = x; | |
| element.style.top = y; | |
| } | |
| }; | |
| Parallax.prototype.onOrientationTimer = function(event) { | |
| if (this.orientationSupport && this.orientationStatus === 0) { | |
| this.disable(); | |
| this.orientationSupport = false; | |
| this.enable(); | |
| } | |
| }; | |
| Parallax.prototype.onCalibrationTimer = function(event) { | |
| this.calibrationFlag = true; | |
| }; | |
| Parallax.prototype.onWindowResize = function(event) { | |
| this.updateDimensions(); | |
| }; | |
| Parallax.prototype.onAnimationFrame = function() { | |
| var dx = this.ix - this.cx; | |
| var dy = this.iy - this.cy; | |
| if ((Math.abs(dx) > this.calibrationThreshold) || (Math.abs(dy) > this.calibrationThreshold)) { | |
| this.queueCalibration(0); | |
| } | |
| if (this.portrait) { | |
| this.mx = (this.calibrateX ? dy : this.iy) * this.scalarX; | |
| this.my = (this.calibrateY ? dx : this.ix) * this.scalarY; | |
| } else { | |
| this.mx = (this.calibrateX ? dx : this.ix) * this.scalarX; | |
| this.my = (this.calibrateY ? dy : this.iy) * this.scalarY; | |
| } | |
| if (!isNaN(parseFloat(this.limitX))) { | |
| this.mx = this.clamp(this.mx, -this.limitX, this.limitX); | |
| } | |
| if (!isNaN(parseFloat(this.limitY))) { | |
| this.my = this.clamp(this.my, -this.limitY, this.limitY); | |
| } | |
| this.vx += (this.mx - this.vx) * this.frictionX; | |
| this.vy += (this.my - this.vy) * this.frictionY; | |
| for (var i = 0, l = this.layers.length; i < l; i++) { | |
| var layer = this.layers[i]; | |
| var depth = this.depths[i]; | |
| var xOffset = this.vx * depth * (this.invertX ? -1 : 1); | |
| var yOffset = this.vy * depth * (this.invertY ? -1 : 1); | |
| this.setPosition(layer, xOffset, yOffset); | |
| } | |
| this.raf = requestAnimationFrame(this.onAnimationFrame); | |
| }; | |
| Parallax.prototype.onDeviceOrientation = function(event) { | |
| // Validate environment and event properties. | |
| if (!this.desktop && event.beta !== null && event.gamma !== null) { | |
| // Set orientation status. | |
| this.orientationStatus = 1; | |
| // Extract Rotation | |
| var x = (event.beta || 0) / MAGIC_NUMBER; // -90 :: 90 | |
| var y = (event.gamma || 0) / MAGIC_NUMBER; // -180 :: 180 | |
| // Detect Orientation Change | |
| var portrait = this.wh > this.ww; | |
| if (this.portrait !== portrait) { | |
| this.portrait = portrait; | |
| this.calibrationFlag = true; | |
| } | |
| // Set Calibration | |
| if (this.calibrationFlag) { | |
| this.calibrationFlag = false; | |
| this.cx = x; | |
| this.cy = y; | |
| } | |
| // Set Input | |
| this.ix = x; | |
| this.iy = y; | |
| } | |
| }; | |
| Parallax.prototype.onMouseMove = function(event) { | |
| // Calculate Input | |
| this.ix = (event.pageX - this.hw) / this.hw; | |
| this.iy = (event.pageY - this.hh) / this.hh; | |
| }; | |
| // Expose Parallax | |
| window[NAME] = Parallax; | |
| })(window, document); | |
| /** | |
| * Request Animation Frame Polyfill. | |
| * @author Tino Zijdel | |
| * @author Paul Irish | |
| * @see https://gist.github.com/paulirish/1579671 | |
| */ | |
| ;(function() { | |
| var lastTime = 0; | |
| var vendors = ['ms', 'moz', 'webkit', 'o']; | |
| for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) { | |
| window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame']; | |
| window.cancelAnimationFrame = window[vendors[x]+'CancelAnimationFrame'] || window[vendors[x]+'CancelRequestAnimationFrame']; | |
| } | |
| if (!window.requestAnimationFrame) { | |
| window.requestAnimationFrame = function(callback, element) { | |
| var currTime = new Date().getTime(); | |
| var timeToCall = Math.max(0, 16 - (currTime - lastTime)); | |
| var id = window.setTimeout(function() { callback(currTime + timeToCall); }, | |
| timeToCall); | |
| lastTime = currTime + timeToCall; | |
| return id; | |
| }; | |
| } | |
| if (!window.cancelAnimationFrame) { | |
| window.cancelAnimationFrame = function(id) { | |
| clearTimeout(id); | |
| }; | |
| } | |
| }()); |
| <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> |
| <!-- project url https://github.com/wagerfield/parallax/</br> --> | |
| <!-- full demo https://wagerfield.github.io/parallax/ --> | |
| html { | |
| font-family: "Roboto Slab", sans-serif; | |
| font-size: 12px; } | |
| body { | |
| -webkit-font-smoothing: antialiased; | |
| text-rendering: optimizeLegibility; | |
| line-height: 1.4em; | |
| background-color: black; | |
| text-align: center; | |
| color: white; } | |
| em { | |
| font-style: normal; | |
| color: #d92400; } | |
| img { | |
| display: block; | |
| width: 100%; } | |
| ul { | |
| list-style: none; | |
| display: block; | |
| padding: 0; | |
| margin: 0; | |
| } | |
| .toggle { | |
| -webkit-box-shadow: 0 2px 8px rgba(0, 0, 0, 0.6); | |
| -moz-box-shadow: 0 2px 8px rgba(0, 0, 0, 0.6); | |
| box-shadow: 0 2px 8px rgba(0, 0, 0, 0.6); | |
| margin: -24px; | |
| position: absolute; | |
| bottom: 11.6%; | |
| left: 50%; } | |
| .toggle.i .cross { | |
| -webkit-transform: rotateZ(0deg); | |
| -moz-transform: rotateZ(0deg); | |
| transform: rotateZ(0deg); } | |
| .toggle.i .cross .x { | |
| margin-left: -2px; | |
| width: 4px; | |
| margin-top: -12px; } | |
| .toggle.i .cross .y { | |
| margin-top: -4px; | |
| height: 16px; } | |
| .cross { | |
| -webkit-transform: rotateZ(45deg); | |
| -moz-transform: rotateZ(45deg); | |
| transform: rotateZ(45deg); | |
| position: absolute; | |
| left: 50%; | |
| top: 50%; } | |
| .cross .x, .cross .y { | |
| -webkit-border-radius: 2px; | |
| -moz-border-radius: 2px; | |
| border-radius: 2px; | |
| -webkit-background-clip: padding-box; | |
| -moz-background-clip: padding-box; | |
| background-clip: padding-box; | |
| background-color: #1d1f27; | |
| height: 4px; | |
| width: 4px; | |
| margin: -2px; | |
| position: absolute; | |
| left: 0; | |
| top: 0; } | |
| .cross .x { | |
| margin-left: -12px; | |
| margin-top: -2px; | |
| width: 24px; } | |
| .cross .y { | |
| margin-top: -12px; | |
| height: 24px; } | |
| .prompt.hide { | |
| visibility: hidden; } | |
| .prompt.hide .panel { | |
| -webkit-transform: translate3d(0,250%,0) rotateY(360deg); | |
| -moz-transform: translate3d(0,250%,0) rotateY(360deg); | |
| transform: translate3d(0,250%,0) rotateY(360deg); | |
| opacity: 0; } | |
| .prompt .cell { | |
| -webkit-perspective: 1000px; | |
| -moz-perspective: 1000px; | |
| perspective: 1000px; } | |
| .prompt .dismiss { | |
| -webkit-transform: scale(0.5); | |
| -moz-transform: scale(0.5); | |
| transform: scale(0.5); | |
| background-color: transparent; | |
| position: absolute; | |
| right: 4px; | |
| top: 4px; } | |
| .prompt .x, .prompt .y { | |
| background: white; } | |
| .prompt .center { | |
| max-width: 300px; | |
| width: 82%; } | |
| .prompt .panel { | |
| -webkit-perspective: none; | |
| -moz-perspective: none; | |
| perspective: none; | |
| -webkit-transform-style: flat; | |
| -moz-transform-style: flat; | |
| transform-style: flat; | |
| -webkit-transition: all 1.8s cubic-bezier(0.77, 0, 0.175, 1); | |
| -moz-transition: all 1.8s cubic-bezier(0.77, 0, 0.175, 1); | |
| transition: all 1.8s cubic-bezier(0.77, 0, 0.175, 1); | |
| border: 1px solid rgba(255, 255, 255, 0.15); | |
| background-color: rgba(0, 0, 0, 0.65); | |
| padding: 1.2em 0 1.8em; } | |
| .prompt .panel img { | |
| margin: 0.6em auto; | |
| width: 100px; } | |
| .prompt .panel h2 { | |
| margin: 0 0 0.4em; } | |
| .prompt .panel p { | |
| font-size: 1.25em; | |
| margin: 0 10% 1.25em; | |
| line-height: 1.25em; | |
| color: #999999; } | |
| .prompt .tilt-scene { | |
| -webkit-perspective: 1000px; | |
| -moz-perspective: 1000px; | |
| perspective: 1000px; | |
| -webkit-transform: translate3d(0,0,100px); | |
| -moz-transform: translate3d(0,0,100px); | |
| transform: translate3d(0,0,100px); | |
| margin: 0 auto; | |
| width: 60%; } | |
| .prompt .tilt { | |
| -webkit-animation: tilt 4s infinite alternate cubic-bezier(0.455, 0.03, 0.515, 0.955); | |
| -moz-animation: tilt 4s infinite alternate cubic-bezier(0.455, 0.03, 0.515, 0.955); | |
| animation: tilt 4s infinite alternate cubic-bezier(0.455, 0.03, 0.515, 0.955); } | |
| .scene, | |
| .layer { | |
| display: block; | |
| height: 100%; | |
| width: 100%; | |
| padding: 0; | |
| margin: 0; } | |
| .scene { | |
| min-height: 460px; | |
| position: relative; | |
| overflow: hidden; } | |
| .layer { | |
| position: absolute; } | |
| .layer div { | |
| -webkit-transform: translate3d(0,0,0); | |
| -moz-transform: translate3d(0,0,0); | |
| transform: translate3d(0,0,0); | |
| -webkit-transform-style: preserve-3d; | |
| -moz-transform-style: preserve-3d; | |
| transform-style: preserve-3d; | |
| -webkit-backface-visibility: hidden; | |
| -moz-backface-visibility: hidden; | |
| backface-visibility: hidden; } | |
| .title { | |
| font-size: 3em; | |
| text-shadow: 0 8px 6px rgba(0, 0, 0, 0.6); | |
| margin-top: -0.7em; | |
| position: absolute; | |
| width: 100%; | |
| top: 42%; } | |
| .background { | |
| background: url(https://wagerfield.github.io/parallax/assets/images/background.jpg) no-repeat 50% 100%; | |
| bottom: 96px; | |
| background-size: cover; | |
| position: absolute; | |
| width: 110%; | |
| left: -5%; | |
| top: -5%; } | |
| .lighthouse { | |
| -webkit-transform-origin: 50% 90%; | |
| -moz-transform-origin: 50% 90%; | |
| transform-origin: 50% 90%; | |
| -webkit-animation: lighthouse 4s 0.1s infinite alternate cubic-bezier(0.455, 0.03, 0.515, 0.955); | |
| -moz-animation: lighthouse 4s 0.1s infinite alternate cubic-bezier(0.455, 0.03, 0.515, 0.955); | |
| animation: lighthouse 4s 0.1s infinite alternate cubic-bezier(0.455, 0.03, 0.515, 0.955); | |
| margin: 0px -64px; | |
| background-size: 128px 224px; | |
| height: 224px; | |
| width: 128px; | |
| background-image: url(https://wagerfield.github.io/parallax/assets/images/lighthouse.png); | |
| background-repeat: no-repeat; | |
| bottom: 64px; | |
| position: absolute; | |
| right: 20%; } | |
| .wave { | |
| background: transparent repeat-x; | |
| position: absolute; | |
| width: 300%; | |
| left: -100%; } | |
| .wave:after { | |
| background-color: black; | |
| position: absolute; | |
| display: block; | |
| content: ""; | |
| height: 500px; | |
| width: 100%; | |
| top: 100%; | |
| left: 0; } | |
| .wave.plain { | |
| background-image: url(https://wagerfield.github.io/parallax/assets/images/wave-plain.png); } | |
| .wave.paint { | |
| background-image: url(https://wagerfield.github.io/parallax/assets/images/wave-paint.png); } | |
| .light { | |
| margin: -120px -120px; | |
| background-size: 240px 240px; | |
| height: 240px; | |
| width: 240px; | |
| background-repeat: no-repeat; | |
| bottom: 112px; | |
| position: absolute; | |
| left: 50%; } | |
| .light.orange { | |
| background-image: url(https://wagerfield.github.io/parallax/assets/images/light-orange.png); } | |
| .light.purple { | |
| background-image: url(https://wagerfield.github.io/parallax/assets/images/light-purple.png); } | |
| .light.a { | |
| bottom: 80px; | |
| left: 20%; } | |
| .light.b { | |
| bottom: 80px; | |
| left: 30%; } | |
| .light.c { | |
| bottom: 112px; | |
| left: 45%; } | |
| .light.d { | |
| bottom: 96px; | |
| left: 60%; } | |
| .light.e { | |
| bottom: 112px; | |
| left: 75%; } | |
| .light.f { | |
| bottom: 64px; | |
| left: 80%; } | |
| .light.phase-1 { | |
| -webkit-animation: phase 20s 0.1s infinite linear; | |
| -moz-animation: phase 20s 0.1s infinite linear; | |
| animation: phase 20s 0.1s infinite linear; } | |
| .light.phase-2 { | |
| -webkit-animation: phase 18s 0.1s infinite linear; | |
| -moz-animation: phase 18s 0.1s infinite linear; | |
| animation: phase 18s 0.1s infinite linear; } | |
| .light.phase-3 { | |
| -webkit-animation: phase 16s 0.1s infinite linear; | |
| -moz-animation: phase 16s 0.1s infinite linear; | |
| animation: phase 16s 0.1s infinite linear; } | |
| .light.phase-4 { | |
| -webkit-animation: phase 14s 0.1s infinite linear; | |
| -moz-animation: phase 14s 0.1s infinite linear; | |
| animation: phase 14s 0.1s infinite linear; } | |
| .light.phase-5 { | |
| -webkit-animation: phase 12s 0.1s infinite linear; | |
| -moz-animation: phase 12s 0.1s infinite linear; | |
| animation: phase 12s 0.1s infinite linear; } | |
| .light.phase-6 { | |
| -webkit-animation: phase 10s 0.1s infinite linear; | |
| -moz-animation: phase 10s 0.1s infinite linear; | |
| animation: phase 10s 0.1s infinite linear; } | |
| .rope { | |
| width: 120%; | |
| position: relative; | |
| left: -10%; | |
| position: relative; } | |
| .hanger { | |
| -webkit-transform-origin: 0% 0%; | |
| -moz-transform-origin: 0% 0%; | |
| transform-origin: 0% 0%; | |
| position: absolute; } | |
| .hanger.position-1 { | |
| top: 28%; } | |
| .hanger.position-2 { | |
| top: 46%; } | |
| .hanger.position-3 { | |
| top: 59%; } | |
| .hanger.position-4 { | |
| top: 66.5%; } | |
| .hanger.position-5 { | |
| top: 69.5%; } | |
| .hanger.position-6 { | |
| top: 66.5%; } | |
| .hanger.position-7 { | |
| top: 59%; } | |
| .hanger.position-8 { | |
| top: 46%; } | |
| .hanger.position-9 { | |
| top: 28%; } | |
| .hanger.position-1 { | |
| left: 10%; } | |
| .hanger.position-2 { | |
| left: 20%; } | |
| .hanger.position-3 { | |
| left: 30%; } | |
| .hanger.position-4 { | |
| left: 40%; } | |
| .hanger.position-5 { | |
| left: 50%; } | |
| .hanger.position-6 { | |
| left: 60%; } | |
| .hanger.position-7 { | |
| left: 70%; } | |
| .hanger.position-8 { | |
| left: 80%; } | |
| .hanger.position-9 { | |
| left: 90%; } | |
| .board { | |
| -webkit-transform-origin: 50% 0%; | |
| -moz-transform-origin: 50% 0%; | |
| transform-origin: 50% 0%; | |
| margin: 0px -140px; | |
| background-size: 280px 280px; | |
| height: 280px; | |
| width: 280px; | |
| background-repeat: no-repeat; | |
| position: absolute; | |
| top: -4px; | |
| left: 0; } | |
| .board.birds { | |
| background-image: url(https://wagerfield.github.io/parallax/assets/images/board-birds.png); } | |
| .board.cloud-1 { | |
| background-image: url(https://wagerfield.github.io/parallax/assets/images/board-cloud-1.png); } | |
| .board.cloud-2 { | |
| background-image: url(https://wagerfield.github.io/parallax/assets/images/board-cloud-2.png); } | |
| .board.cloud-3 { | |
| background-image: url(https://wagerfield.github.io/parallax/assets//images/board-cloud-3.png); } | |
| .board.cloud-4 { | |
| background-image: url(https://wagerfield.github.io/parallax/assets//images/board-cloud-4.png); } | |
| .swing-1 { | |
| -webkit-animation: swing 4s infinite alternate cubic-bezier(0.455, 0.03, 0.515, 0.955); | |
| -moz-animation: swing 4s infinite alternate cubic-bezier(0.455, 0.03, 0.515, 0.955); | |
| animation: swing 4s infinite alternate cubic-bezier(0.455, 0.03, 0.515, 0.955); } | |
| .swing-2 { | |
| -webkit-animation: swing 3.5s infinite alternate cubic-bezier(0.455, 0.03, 0.515, 0.955); | |
| -moz-animation: swing 3.5s infinite alternate cubic-bezier(0.455, 0.03, 0.515, 0.955); | |
| animation: swing 3.5s infinite alternate cubic-bezier(0.455, 0.03, 0.515, 0.955); } | |
| .swing-3 { | |
| -webkit-animation: swing 3s infinite alternate cubic-bezier(0.455, 0.03, 0.515, 0.955); | |
| -moz-animation: swing 3s infinite alternate cubic-bezier(0.455, 0.03, 0.515, 0.955); | |
| animation: swing 3s infinite alternate cubic-bezier(0.455, 0.03, 0.515, 0.955); } | |
| .swing-4 { | |
| -webkit-animation: swing 2.5s infinite alternate cubic-bezier(0.455, 0.03, 0.515, 0.955); | |
| -moz-animation: swing 2.5s infinite alternate cubic-bezier(0.455, 0.03, 0.515, 0.955); | |
| animation: swing 2.5s infinite alternate cubic-bezier(0.455, 0.03, 0.515, 0.955); } | |
| .swing-5 { | |
| -webkit-animation: swing 2s infinite alternate cubic-bezier(0.455, 0.03, 0.515, 0.955); | |
| -moz-animation: swing 2s infinite alternate cubic-bezier(0.455, 0.03, 0.515, 0.955); | |
| animation: swing 2s infinite alternate cubic-bezier(0.455, 0.03, 0.515, 0.955); } | |
| .wave.depth-10 { | |
| -webkit-animation: wave 8s 0.1s infinite linear; | |
| -moz-animation: wave 8s 0.1s infinite linear; | |
| animation: wave 8s 0.1s infinite linear; | |
| bottom: 140px; | |
| margin: 0px 0px; | |
| background-size: 40px 16px; | |
| height: 16px; } | |
| .wave.depth-10:after { | |
| height: 144px; } | |
| .rope.depth-10 { | |
| -webkit-transform: scale(1); | |
| -moz-transform: scale(1); | |
| transform: scale(1); | |
| top: 20%; } | |
| .rope.depth-10 .hanger { | |
| -webkit-transform: scale(0.25); | |
| -moz-transform: scale(0.25); | |
| transform: scale(0.25); } | |
| .wave.depth-20 { | |
| -webkit-animation: wave 7.55556s 0.1s infinite linear; | |
| -moz-animation: wave 7.55556s 0.1s infinite linear; | |
| animation: wave 7.55556s 0.1s infinite linear; | |
| bottom: 120px; | |
| margin: 0px 0px; | |
| background-size: 80px 32px; | |
| height: 32px; } | |
| .wave.depth-20:after { | |
| height: 128px; } | |
| .rope.depth-20 { | |
| -webkit-transform: scale(1.02778); | |
| -moz-transform: scale(1.02778); | |
| transform: scale(1.02778); | |
| top: 16.66667%; } | |
| .rope.depth-20 .hanger { | |
| -webkit-transform: scale(0.27778); | |
| -moz-transform: scale(0.27778); | |
| transform: scale(0.27778); } | |
| .wave.depth-30 { | |
| -webkit-animation: wave 7.11111s 0.1s infinite linear; | |
| -moz-animation: wave 7.11111s 0.1s infinite linear; | |
| animation: wave 7.11111s 0.1s infinite linear; | |
| bottom: 100px; | |
| margin: 0px 0px; | |
| background-size: 120px 48px; | |
| height: 48px; } | |
| .wave.depth-30:after { | |
| height: 112px; } | |
| .rope.depth-30 { | |
| -webkit-transform: scale(1.05556); | |
| -moz-transform: scale(1.05556); | |
| transform: scale(1.05556); | |
| top: 13.33333%; } | |
| .rope.depth-30 .hanger { | |
| -webkit-transform: scale(0.30556); | |
| -moz-transform: scale(0.30556); | |
| transform: scale(0.30556); } | |
| .wave.depth-40 { | |
| -webkit-animation: wave 6.66667s 0.1s infinite linear; | |
| -moz-animation: wave 6.66667s 0.1s infinite linear; | |
| animation: wave 6.66667s 0.1s infinite linear; | |
| bottom: 80px; | |
| margin: 0px 0px; | |
| background-size: 160px 64px; | |
| height: 64px; } | |
| .wave.depth-40:after { | |
| height: 96px; } | |
| .rope.depth-40 { | |
| -webkit-transform: scale(1.08333); | |
| -moz-transform: scale(1.08333); | |
| transform: scale(1.08333); | |
| top: 10.0%; } | |
| .rope.depth-40 .hanger { | |
| -webkit-transform: scale(0.33333); | |
| -moz-transform: scale(0.33333); | |
| transform: scale(0.33333); } | |
| .wave.depth-50 { | |
| -webkit-animation: wave 6.22222s 0.1s infinite linear; | |
| -moz-animation: wave 6.22222s 0.1s infinite linear; | |
| animation: wave 6.22222s 0.1s infinite linear; | |
| bottom: 60px; | |
| margin: 0px 0px; | |
| background-size: 200px 80px; | |
| height: 80px; } | |
| .wave.depth-50:after { | |
| height: 80px; } | |
| .rope.depth-50 { | |
| -webkit-transform: scale(1.11111); | |
| -moz-transform: scale(1.11111); | |
| transform: scale(1.11111); | |
| top: 6.66667%; } | |
| .rope.depth-50 .hanger { | |
| -webkit-transform: scale(0.36111); | |
| -moz-transform: scale(0.36111); | |
| transform: scale(0.36111); } | |
| .wave.depth-60 { | |
| -webkit-animation: wave 5.77778s 0.1s infinite linear; | |
| -moz-animation: wave 5.77778s 0.1s infinite linear; | |
| animation: wave 5.77778s 0.1s infinite linear; | |
| bottom: 40px; | |
| margin: 0px 0px; | |
| background-size: 240px 96px; | |
| height: 96px; } | |
| .wave.depth-60:after { | |
| height: 64px; } | |
| .rope.depth-60 { | |
| -webkit-transform: scale(1.13889); | |
| -moz-transform: scale(1.13889); | |
| transform: scale(1.13889); | |
| top: 3.33333%; } | |
| .rope.depth-60 .hanger { | |
| -webkit-transform: scale(0.38889); | |
| -moz-transform: scale(0.38889); | |
| transform: scale(0.38889); } | |
| .wave.depth-70 { | |
| -webkit-animation: wave 5.33333s 0.1s infinite linear; | |
| -moz-animation: wave 5.33333s 0.1s infinite linear; | |
| animation: wave 5.33333s 0.1s infinite linear; | |
| bottom: 20px; | |
| margin: 0px 0px; | |
| background-size: 280px 112px; | |
| height: 112px; } | |
| .wave.depth-70:after { | |
| height: 48px; } | |
| .rope.depth-70 { | |
| -webkit-transform: scale(1.16667); | |
| -moz-transform: scale(1.16667); | |
| transform: scale(1.16667); | |
| top: 0.0%; } | |
| .rope.depth-70 .hanger { | |
| -webkit-transform: scale(0.41667); | |
| -moz-transform: scale(0.41667); | |
| transform: scale(0.41667); } | |
| .wave.depth-80 { | |
| -webkit-animation: wave 4.88889s 0.1s infinite linear; | |
| -moz-animation: wave 4.88889s 0.1s infinite linear; | |
| animation: wave 4.88889s 0.1s infinite linear; | |
| bottom: 0px; | |
| margin: 0px 0px; | |
| background-size: 320px 128px; | |
| height: 128px; } | |
| .wave.depth-80:after { | |
| height: 32px; } | |
| .rope.depth-80 { | |
| -webkit-transform: scale(1.19444); | |
| -moz-transform: scale(1.19444); | |
| transform: scale(1.19444); | |
| top: -3.33333%; } | |
| .rope.depth-80 .hanger { | |
| -webkit-transform: scale(0.44444); | |
| -moz-transform: scale(0.44444); | |
| transform: scale(0.44444); } | |
| .wave.depth-90 { | |
| -webkit-animation: wave 4.44444s 0.1s infinite linear; | |
| -moz-animation: wave 4.44444s 0.1s infinite linear; | |
| animation: wave 4.44444s 0.1s infinite linear; | |
| bottom: -20px; | |
| margin: 0px 0px; | |
| background-size: 360px 144px; | |
| height: 144px; } | |
| .wave.depth-90:after { | |
| height: 16px; } | |
| .rope.depth-90 { | |
| -webkit-transform: scale(1.22222); | |
| -moz-transform: scale(1.22222); | |
| transform: scale(1.22222); | |
| top: -6.66667%; } | |
| .rope.depth-90 .hanger { | |
| -webkit-transform: scale(0.47222); | |
| -moz-transform: scale(0.47222); | |
| transform: scale(0.47222); } | |
| .wave.depth-100 { | |
| -webkit-animation: wave 4s 0.1s infinite linear; | |
| -moz-animation: wave 4s 0.1s infinite linear; | |
| animation: wave 4s 0.1s infinite linear; | |
| bottom: -40px; | |
| margin: 0px 0px; | |
| background-size: 400px 160px; | |
| height: 160px; } | |
| .wave.depth-100:after { | |
| height: 0px; } | |
| .rope.depth-100 { | |
| -webkit-transform: scale(1.25); | |
| -moz-transform: scale(1.25); | |
| transform: scale(1.25); | |
| top: -10%; } | |
| .rope.depth-100 .hanger { | |
| -webkit-transform: scale(0.5); | |
| -moz-transform: scale(0.5); | |
| transform: scale(0.5); } | |
| @media all and (min-width: 400px) { | |
| html { | |
| font-size: 12px; } | |
| .wrapper { | |
| min-height: 360px; } | |
| .about .panel header:before { | |
| background-size: 66px 90px; } | |
| .toggle { | |
| bottom: 12%; } | |
| .prompt .panel img { | |
| width: 80px; } | |
| .scene { | |
| min-height: 360px; } | |
| .rope.depth-10 { | |
| top: 10%; } | |
| .rope.depth-10 .hanger { | |
| -webkit-transform: scale(0.3); | |
| -moz-transform: scale(0.3); | |
| transform: scale(0.3); } | |
| .rope.depth-20 { | |
| top: 6.11111%; } | |
| .rope.depth-20 .hanger { | |
| -webkit-transform: scale(0.33333); | |
| -moz-transform: scale(0.33333); | |
| transform: scale(0.33333); } | |
| .rope.depth-30 { | |
| top: 2.22222%; } | |
| .rope.depth-30 .hanger { | |
| -webkit-transform: scale(0.36667); | |
| -moz-transform: scale(0.36667); | |
| transform: scale(0.36667); } | |
| .rope.depth-40 { | |
| top: -1.66667%; } | |
| .rope.depth-40 .hanger { | |
| -webkit-transform: scale(0.4); | |
| -moz-transform: scale(0.4); | |
| transform: scale(0.4); } | |
| .rope.depth-50 { | |
| top: -5.55556%; } | |
| .rope.depth-50 .hanger { | |
| -webkit-transform: scale(0.43333); | |
| -moz-transform: scale(0.43333); | |
| transform: scale(0.43333); } | |
| .rope.depth-60 { | |
| top: -9.44444%; } | |
| .rope.depth-60 .hanger { | |
| -webkit-transform: scale(0.46667); | |
| -moz-transform: scale(0.46667); | |
| transform: scale(0.46667); } | |
| .rope.depth-70 { | |
| top: -13.33333%; } | |
| .rope.depth-70 .hanger { | |
| -webkit-transform: scale(0.5); | |
| -moz-transform: scale(0.5); | |
| transform: scale(0.5); } | |
| .rope.depth-80 { | |
| top: -17.22222%; } | |
| .rope.depth-80 .hanger { | |
| -webkit-transform: scale(0.53333); | |
| -moz-transform: scale(0.53333); | |
| transform: scale(0.53333); } | |
| .rope.depth-90 { | |
| top: -21.11111%; } | |
| .rope.depth-90 .hanger { | |
| -webkit-transform: scale(0.56667); | |
| -moz-transform: scale(0.56667); | |
| transform: scale(0.56667); } | |
| .rope.depth-100 { | |
| top: -25%; } | |
| .rope.depth-100 .hanger { | |
| -webkit-transform: scale(0.6); | |
| -moz-transform: scale(0.6); | |
| transform: scale(0.6); } } | |
| @media all and (min-width: 600px) { | |
| html { | |
| font-size: 15px; } | |
| button { | |
| -webkit-border-radius: 28px; | |
| -moz-border-radius: 28px; | |
| border-radius: 28px; | |
| -webkit-background-clip: padding-box; | |
| -moz-background-clip: padding-box; | |
| background-clip: padding-box; | |
| height: 56px; | |
| width: 56px; } | |
| footer .fb-like { | |
| position: static; | |
| bottom: auto; | |
| right: auto; } | |
| .center { | |
| max-width: 440px; } | |
| .about .panel:after { | |
| background-size: 252px 252px; | |
| height: 180px; | |
| width: 140px; } | |
| .about .panel header:before { | |
| background-size: 82.5px 112.5px; } | |
| .prompt { | |
| overflow: visible; | |
| display: block; | |
| width: 0; } | |
| .prompt.hide .panel { | |
| -webkit-transform: translate3d(0,50%,400px) rotateX(90deg); | |
| -moz-transform: translate3d(0,50%,400px) rotateX(90deg); | |
| transform: translate3d(0,50%,400px) rotateX(90deg); } | |
| .prompt .cell { | |
| position: absolute; | |
| display: block; | |
| bottom: 25px; | |
| left: 25px; } | |
| .prompt .dismiss { | |
| right: 0px; | |
| top: 0px; } | |
| .prompt .panel { | |
| -webkit-transition: all 1.2s cubic-bezier(0.77, 0, 0.175, 1); | |
| -moz-transition: all 1.2s cubic-bezier(0.77, 0, 0.175, 1); | |
| transition: all 1.2s cubic-bezier(0.77, 0, 0.175, 1); | |
| -webkit-transform-origin: 50% 100%; | |
| -moz-transform-origin: 50% 100%; | |
| transform-origin: 50% 100%; | |
| padding: 1em 0 0.8em; | |
| width: 220px; } | |
| .prompt .panel img { | |
| margin: 0.4em auto 0.6em; | |
| width: 80px; } | |
| .prompt .panel h2 { | |
| font-size: 1.6em; } | |
| .prompt .panel p { | |
| font-size: 0.93333em; | |
| margin: 0 10% 1.3em; | |
| line-height: 1.3em; } | |
| .toggle { | |
| margin: -28px; | |
| bottom: 15%; } | |
| .title { | |
| font-size: 3.46667em; } | |
| .background { | |
| bottom: 96px; } | |
| .lighthouse { | |
| margin: 0px -96px; | |
| background-size: 192px 336px; | |
| height: 336px; | |
| width: 192px; | |
| bottom: 128px; } | |
| .light { | |
| margin: -140px -140px; | |
| background-size: 280px 280px; | |
| height: 280px; | |
| width: 280px; } | |
| .light.a { | |
| bottom: 144px; } | |
| .light.b { | |
| bottom: 144px; } | |
| .light.c { | |
| bottom: 192px; } | |
| .light.d { | |
| bottom: 160px; } | |
| .light.e { | |
| bottom: 192px; } | |
| .light.f { | |
| bottom: 128px; } | |
| .wave.depth-10 { | |
| bottom: 210px; | |
| margin: 0px 0px; | |
| background-size: 60px 24px; | |
| height: 24px; } | |
| .wave.depth-10:after { | |
| height: 216px; } | |
| .rope.depth-10 { | |
| top: 20%; } | |
| .rope.depth-10 .hanger { | |
| -webkit-transform: scale(0.5); | |
| -moz-transform: scale(0.5); | |
| transform: scale(0.5); } | |
| .wave.depth-20 { | |
| bottom: 180px; | |
| margin: 0px 0px; | |
| background-size: 120px 48px; | |
| height: 48px; } | |
| .wave.depth-20:after { | |
| height: 192px; } | |
| .rope.depth-20 { | |
| top: 16.66667%; } | |
| .rope.depth-20 .hanger { | |
| -webkit-transform: scale(0.55556); | |
| -moz-transform: scale(0.55556); | |
| transform: scale(0.55556); } | |
| .wave.depth-30 { | |
| bottom: 150px; | |
| margin: 0px 0px; | |
| background-size: 180px 72px; | |
| height: 72px; } | |
| .wave.depth-30:after { | |
| height: 168px; } | |
| .rope.depth-30 { | |
| top: 13.33333%; } | |
| .rope.depth-30 .hanger { | |
| -webkit-transform: scale(0.61111); | |
| -moz-transform: scale(0.61111); | |
| transform: scale(0.61111); } | |
| .wave.depth-40 { | |
| bottom: 120px; | |
| margin: 0px 0px; | |
| background-size: 240px 96px; | |
| height: 96px; } | |
| .wave.depth-40:after { | |
| height: 144px; } | |
| .rope.depth-40 { | |
| top: 10.0%; } | |
| .rope.depth-40 .hanger { | |
| -webkit-transform: scale(0.66667); | |
| -moz-transform: scale(0.66667); | |
| transform: scale(0.66667); } | |
| .wave.depth-50 { | |
| bottom: 90px; | |
| margin: 0px 0px; | |
| background-size: 300px 120px; | |
| height: 120px; } | |
| .wave.depth-50:after { | |
| height: 120px; } | |
| .rope.depth-50 { | |
| top: 6.66667%; } | |
| .rope.depth-50 .hanger { | |
| -webkit-transform: scale(0.72222); | |
| -moz-transform: scale(0.72222); | |
| transform: scale(0.72222); } | |
| .wave.depth-60 { | |
| bottom: 60px; | |
| margin: 0px 0px; | |
| background-size: 360px 144px; | |
| height: 144px; } | |
| .wave.depth-60:after { | |
| height: 96px; } | |
| .rope.depth-60 { | |
| top: 3.33333%; } | |
| .rope.depth-60 .hanger { | |
| -webkit-transform: scale(0.77778); | |
| -moz-transform: scale(0.77778); | |
| transform: scale(0.77778); } | |
| .wave.depth-70 { | |
| bottom: 30px; | |
| margin: 0px 0px; | |
| background-size: 420px 168px; | |
| height: 168px; } | |
| .wave.depth-70:after { | |
| height: 72px; } | |
| .rope.depth-70 { | |
| top: 0.0%; } | |
| .rope.depth-70 .hanger { | |
| -webkit-transform: scale(0.83333); | |
| -moz-transform: scale(0.83333); | |
| transform: scale(0.83333); } | |
| .wave.depth-80 { | |
| bottom: 0px; | |
| margin: 0px 0px; | |
| background-size: 480px 192px; | |
| height: 192px; } | |
| .wave.depth-80:after { | |
| height: 48px; } | |
| .rope.depth-80 { | |
| top: -3.33333%; } | |
| .rope.depth-80 .hanger { | |
| -webkit-transform: scale(0.88889); | |
| -moz-transform: scale(0.88889); | |
| transform: scale(0.88889); } | |
| .wave.depth-90 { | |
| bottom: -30px; | |
| margin: 0px 0px; | |
| background-size: 540px 216px; | |
| height: 216px; } | |
| .wave.depth-90:after { | |
| height: 24px; } | |
| .rope.depth-90 { | |
| top: -6.66667%; } | |
| .rope.depth-90 .hanger { | |
| -webkit-transform: scale(0.94444); | |
| -moz-transform: scale(0.94444); | |
| transform: scale(0.94444); } | |
| .wave.depth-100 { | |
| bottom: -60px; | |
| margin: 0px 0px; | |
| background-size: 600px 240px; | |
| height: 240px; } | |
| .wave.depth-100:after { | |
| height: 0px; } | |
| .rope.depth-100 { | |
| top: -10%; } | |
| .rope.depth-100 .hanger { | |
| -webkit-transform: scale(1); | |
| -moz-transform: scale(1); | |
| transform: scale(1); } } | |
| @media all and (min-width: 900px) { | |
| html { | |
| font-size: 15px; } | |
| .center { | |
| max-width: 560px; } | |
| .about .panel:after { | |
| background-size: 280px 280px; | |
| height: 200px; | |
| width: 160px; } | |
| .about .panel header:before { | |
| background-size: 82.5px 112.5px; } | |
| .about .panel .links a { | |
| padding: 1.2em 0 1.3em; } | |
| .toggle { | |
| margin: -28px; | |
| bottom: 12%; } | |
| .title { | |
| font-size: 3.46667em; } | |
| .background { | |
| bottom: 160px; } | |
| .lighthouse { | |
| margin: 0px -104px; | |
| background-size: 208px 364px; | |
| height: 364px; | |
| width: 208px; | |
| bottom: 128px; } | |
| .light { | |
| margin: -160px -160px; | |
| background-size: 320px 320px; | |
| height: 320px; | |
| width: 320px; } | |
| .light.a { | |
| bottom: 112px; | |
| left: 15%; } | |
| .light.b { | |
| bottom: 160px; } | |
| .light.c { | |
| bottom: 208px; } | |
| .light.d { | |
| bottom: 176px; } | |
| .light.e { | |
| bottom: 208px; } | |
| .light.f { | |
| bottom: 128px; | |
| left: 85%; } | |
| .wave.depth-10 { | |
| bottom: 238px; | |
| margin: 0px 0px; | |
| background-size: 68px 27.2px; | |
| height: 27px; } | |
| .wave.depth-10:after { | |
| height: 244.8px; } | |
| .rope.depth-10 { | |
| top: 10%; } | |
| .rope.depth-10 .hanger { | |
| -webkit-transform: scale(0.5); | |
| -moz-transform: scale(0.5); | |
| transform: scale(0.5); } | |
| .wave.depth-20 { | |
| bottom: 204px; | |
| margin: 0px 0px; | |
| background-size: 136px 54.4px; | |
| height: 54px; } | |
| .wave.depth-20:after { | |
| height: 217.6px; } | |
| .rope.depth-20 { | |
| top: 6.66667%; } | |
| .rope.depth-20 .hanger { | |
| -webkit-transform: scale(0.56111); | |
| -moz-transform: scale(0.56111); | |
| transform: scale(0.56111); } | |
| .wave.depth-30 { | |
| bottom: 170px; | |
| margin: 0px 0px; | |
| background-size: 204px 81.6px; | |
| height: 82px; } | |
| .wave.depth-30:after { | |
| height: 190.4px; } | |
| .rope.depth-30 { | |
| top: 3.33333%; } | |
| .rope.depth-30 .hanger { | |
| -webkit-transform: scale(0.62222); | |
| -moz-transform: scale(0.62222); | |
| transform: scale(0.62222); } | |
| .wave.depth-40 { | |
| bottom: 136px; | |
| margin: 0px 0px; | |
| background-size: 272px 108.8px; | |
| height: 109px; } | |
| .wave.depth-40:after { | |
| height: 163.2px; } | |
| .rope.depth-40 { | |
| top: 0.0%; } | |
| .rope.depth-40 .hanger { | |
| -webkit-transform: scale(0.68333); | |
| -moz-transform: scale(0.68333); | |
| transform: scale(0.68333); } | |
| .wave.depth-50 { | |
| bottom: 102px; | |
| margin: 0px 0px; | |
| background-size: 340px 136px; | |
| height: 136px; } | |
| .wave.depth-50:after { | |
| height: 136px; } | |
| .rope.depth-50 { | |
| top: -3.33333%; } | |
| .rope.depth-50 .hanger { | |
| -webkit-transform: scale(0.74444); | |
| -moz-transform: scale(0.74444); | |
| transform: scale(0.74444); } | |
| .wave.depth-60 { | |
| bottom: 68px; | |
| margin: 0px 0px; | |
| background-size: 408px 163.2px; | |
| height: 163px; } | |
| .wave.depth-60:after { | |
| height: 108.8px; } | |
| .rope.depth-60 { | |
| top: -6.66667%; } | |
| .rope.depth-60 .hanger { | |
| -webkit-transform: scale(0.80556); | |
| -moz-transform: scale(0.80556); | |
| transform: scale(0.80556); } | |
| .wave.depth-70 { | |
| bottom: 34px; | |
| margin: 0px 0px; | |
| background-size: 476.0px 190.4px; | |
| height: 190px; } | |
| .wave.depth-70:after { | |
| height: 81.6px; } | |
| .rope.depth-70 { | |
| top: -10.0%; } | |
| .rope.depth-70 .hanger { | |
| -webkit-transform: scale(0.86667); | |
| -moz-transform: scale(0.86667); | |
| transform: scale(0.86667); } | |
| .wave.depth-80 { | |
| bottom: 0px; | |
| margin: 0px 0px; | |
| background-size: 544px 217.6px; | |
| height: 218px; } | |
| .wave.depth-80:after { | |
| height: 54.4px; } | |
| .rope.depth-80 { | |
| top: -13.33333%; } | |
| .rope.depth-80 .hanger { | |
| -webkit-transform: scale(0.92778); | |
| -moz-transform: scale(0.92778); | |
| transform: scale(0.92778); } | |
| .wave.depth-90 { | |
| bottom: -34px; | |
| margin: 0px 0px; | |
| background-size: 612px 244.8px; | |
| height: 245px; } | |
| .wave.depth-90:after { | |
| height: 27.2px; } | |
| .rope.depth-90 { | |
| top: -16.66667%; } | |
| .rope.depth-90 .hanger { | |
| -webkit-transform: scale(0.98889); | |
| -moz-transform: scale(0.98889); | |
| transform: scale(0.98889); } | |
| .wave.depth-100 { | |
| bottom: -68px; | |
| margin: 0px 0px; | |
| background-size: 680px 272px; | |
| height: 272px; } | |
| .wave.depth-100:after { | |
| height: 0px; } | |
| .rope.depth-100 { | |
| top: -20%; } | |
| .rope.depth-100 .hanger { | |
| -webkit-transform: scale(1.05); | |
| -moz-transform: scale(1.05); | |
| transform: scale(1.05); } } | |
| @media all and (min-width: 1200px) { | |
| html { | |
| font-size: 16px; } | |
| .center { | |
| max-width: 620px; } | |
| .about .panel:after { | |
| background-size: 280px 280px; | |
| height: 200px; | |
| width: 170px; } | |
| .about .panel header:before { | |
| background-size: 93.5px 127.5px; } | |
| .prompt .panel { | |
| width: 240px; } | |
| .lighthouse { | |
| margin: 0px -112px; | |
| background-size: 224px 392px; | |
| height: 392px; | |
| width: 224px; } | |
| .light { | |
| margin: -200px -200px; | |
| background-size: 400px 400px; | |
| height: 400px; | |
| width: 400px; } | |
| .wave.depth-10 { | |
| bottom: 252px; | |
| margin: 0px 0px; | |
| background-size: 72px 28.8px; | |
| height: 29px; } | |
| .wave.depth-10:after { | |
| height: 259.2px; } | |
| .rope.depth-10 { | |
| top: 5%; } | |
| .rope.depth-10 .hanger { | |
| -webkit-transform: scale(0.6); | |
| -moz-transform: scale(0.6); | |
| transform: scale(0.6); } | |
| .wave.depth-20 { | |
| bottom: 216px; | |
| margin: 0px 0px; | |
| background-size: 144px 57.6px; | |
| height: 58px; } | |
| .wave.depth-20:after { | |
| height: 230.4px; } | |
| .rope.depth-20 { | |
| top: 1.66667%; } | |
| .rope.depth-20 .hanger { | |
| -webkit-transform: scale(0.67778); | |
| -moz-transform: scale(0.67778); | |
| transform: scale(0.67778); } | |
| .wave.depth-30 { | |
| bottom: 180px; | |
| margin: 0px 0px; | |
| background-size: 216px 86.4px; | |
| height: 86px; } | |
| .wave.depth-30:after { | |
| height: 201.6px; } | |
| .rope.depth-30 { | |
| top: -1.66667%; } | |
| .rope.depth-30 .hanger { | |
| -webkit-transform: scale(0.75556); | |
| -moz-transform: scale(0.75556); | |
| transform: scale(0.75556); } | |
| .wave.depth-40 { | |
| bottom: 144px; | |
| margin: 0px 0px; | |
| background-size: 288px 115.2px; | |
| height: 115px; } | |
| .wave.depth-40:after { | |
| height: 172.8px; } | |
| .rope.depth-40 { | |
| top: -5.0%; } | |
| .rope.depth-40 .hanger { | |
| -webkit-transform: scale(0.83333); | |
| -moz-transform: scale(0.83333); | |
| transform: scale(0.83333); } | |
| .wave.depth-50 { | |
| bottom: 108px; | |
| margin: 0px 0px; | |
| background-size: 360px 144px; | |
| height: 144px; } | |
| .wave.depth-50:after { | |
| height: 144px; } | |
| .rope.depth-50 { | |
| top: -8.33333%; } | |
| .rope.depth-50 .hanger { | |
| -webkit-transform: scale(0.91111); | |
| -moz-transform: scale(0.91111); | |
| transform: scale(0.91111); } | |
| .wave.depth-60 { | |
| bottom: 72px; | |
| margin: 0px 0px; | |
| background-size: 432px 172.8px; | |
| height: 173px; } | |
| .wave.depth-60:after { | |
| height: 115.2px; } | |
| .rope.depth-60 { | |
| top: -11.66667%; } | |
| .rope.depth-60 .hanger { | |
| -webkit-transform: scale(0.98889); | |
| -moz-transform: scale(0.98889); | |
| transform: scale(0.98889); } | |
| .wave.depth-70 { | |
| bottom: 36px; | |
| margin: 0px 0px; | |
| background-size: 504.0px 201.6px; | |
| height: 202px; } | |
| .wave.depth-70:after { | |
| height: 86.4px; } | |
| .rope.depth-70 { | |
| top: -15.0%; } | |
| .rope.depth-70 .hanger { | |
| -webkit-transform: scale(1.06667); | |
| -moz-transform: scale(1.06667); | |
| transform: scale(1.06667); } | |
| .wave.depth-80 { | |
| bottom: 0px; | |
| margin: 0px 0px; | |
| background-size: 576px 230.4px; | |
| height: 230px; } | |
| .wave.depth-80:after { | |
| height: 57.6px; } | |
| .rope.depth-80 { | |
| top: -18.33333%; } | |
| .rope.depth-80 .hanger { | |
| -webkit-transform: scale(1.14444); | |
| -moz-transform: scale(1.14444); | |
| transform: scale(1.14444); } | |
| .wave.depth-90 { | |
| bottom: -36px; | |
| margin: 0px 0px; | |
| background-size: 648px 259.2px; | |
| height: 259px; } | |
| .wave.depth-90:after { | |
| height: 28.8px; } | |
| .rope.depth-90 { | |
| top: -21.66667%; } | |
| .rope.depth-90 .hanger { | |
| -webkit-transform: scale(1.22222); | |
| -moz-transform: scale(1.22222); | |
| transform: scale(1.22222); } | |
| .wave.depth-100 { | |
| bottom: -72px; | |
| margin: 0px 0px; | |
| background-size: 720px 288px; | |
| height: 288px; } | |
| .wave.depth-100:after { | |
| height: 0px; } | |
| .rope.depth-100 { | |
| top: -25%; } | |
| .rope.depth-100 .hanger { | |
| -webkit-transform: scale(1.3); | |
| -moz-transform: scale(1.3); | |
| transform: scale(1.3); } } | |
| a, button { | |
| -webkit-transition: color 0.6s cubic-bezier(0.165, 0.84, 0.44, 1), background-color 0.6s cubic-bezier(0.165, 0.84, 0.44, 1), opacity 0.6s cubic-bezier(0.165, 0.84, 0.44, 1); | |
| -moz-transition: color 0.6s cubic-bezier(0.165, 0.84, 0.44, 1), background-color 0.6s cubic-bezier(0.165, 0.84, 0.44, 1), opacity 0.6s cubic-bezier(0.165, 0.84, 0.44, 1); | |
| transition: color 0.6s cubic-bezier(0.165, 0.84, 0.44, 1), background-color 0.6s cubic-bezier(0.165, 0.84, 0.44, 1), opacity 0.6s cubic-bezier(0.165, 0.84, 0.44, 1); } | |
| .cross, .x, .y { | |
| -webkit-transition: all 0.3s cubic-bezier(0.165, 0.84, 0.44, 1); | |
| -moz-transition: all 0.3s cubic-bezier(0.165, 0.84, 0.44, 1); | |
| transition: all 0.3s cubic-bezier(0.165, 0.84, 0.44, 1); } | |
| .about .panel, | |
| .about .cables { | |
| -webkit-transition: all 0.8s cubic-bezier(0.77, 0, 0.175, 1); | |
| -moz-transition: all 0.8s cubic-bezier(0.77, 0, 0.175, 1); | |
| transition: all 0.8s cubic-bezier(0.77, 0, 0.175, 1); } | |
| @-webkit-keyframes phase { | |
| 0% { | |
| opacity: 1; } | |
| 25% { | |
| opacity: 0.4; } | |
| 50% { | |
| opacity: 0.8; } | |
| 75% { | |
| opacity: 0.4; } | |
| 100% { | |
| opacity: 1; } } | |
| @-moz-keyframes phase { | |
| 0% { | |
| opacity: 1; } | |
| 25% { | |
| opacity: 0.4; } | |
| 50% { | |
| opacity: 0.8; } | |
| 75% { | |
| opacity: 0.4; } | |
| 100% { | |
| opacity: 1; } } | |
| @-ms-keyframes phase { | |
| 0% { | |
| opacity: 1; } | |
| 25% { | |
| opacity: 0.4; } | |
| 50% { | |
| opacity: 0.8; } | |
| 75% { | |
| opacity: 0.4; } | |
| 100% { | |
| opacity: 1; } } | |
| @keyframes phase { | |
| 0% { | |
| opacity: 1; } | |
| 25% { | |
| opacity: 0.4; } | |
| 50% { | |
| opacity: 0.8; } | |
| 75% { | |
| opacity: 0.4; } | |
| 100% { | |
| opacity: 1; } } | |
| @-webkit-keyframes tilt { | |
| 0% { | |
| -webkit-transform: rotateX(-30deg); | |
| -moz-transform: rotateX(-30deg); | |
| transform: rotateX(-30deg); } | |
| 25% { | |
| -webkit-transform: rotateX( 30deg); | |
| -moz-transform: rotateX( 30deg); | |
| transform: rotateX( 30deg); } | |
| 50% { | |
| -webkit-transform: rotateY(-30deg); | |
| -moz-transform: rotateY(-30deg); | |
| transform: rotateY(-30deg); } | |
| 75% { | |
| -webkit-transform: rotateY( 30deg); | |
| -moz-transform: rotateY( 30deg); | |
| transform: rotateY( 30deg); } | |
| 100% { | |
| -webkit-transform: rotateZ( 20deg); | |
| -moz-transform: rotateZ( 20deg); | |
| transform: rotateZ( 20deg); } } | |
| @-moz-keyframes tilt { | |
| 0% { | |
| -webkit-transform: rotateX(-30deg); | |
| -moz-transform: rotateX(-30deg); | |
| transform: rotateX(-30deg); } | |
| 25% { | |
| -webkit-transform: rotateX( 30deg); | |
| -moz-transform: rotateX( 30deg); | |
| transform: rotateX( 30deg); } | |
| 50% { | |
| -webkit-transform: rotateY(-30deg); | |
| -moz-transform: rotateY(-30deg); | |
| transform: rotateY(-30deg); } | |
| 75% { | |
| -webkit-transform: rotateY( 30deg); | |
| -moz-transform: rotateY( 30deg); | |
| transform: rotateY( 30deg); } | |
| 100% { | |
| -webkit-transform: rotateZ( 20deg); | |
| -moz-transform: rotateZ( 20deg); | |
| transform: rotateZ( 20deg); } } | |
| @-ms-keyframes tilt { | |
| 0% { | |
| -webkit-transform: rotateX(-30deg); | |
| -moz-transform: rotateX(-30deg); | |
| transform: rotateX(-30deg); } | |
| 25% { | |
| -webkit-transform: rotateX( 30deg); | |
| -moz-transform: rotateX( 30deg); | |
| transform: rotateX( 30deg); } | |
| 50% { | |
| -webkit-transform: rotateY(-30deg); | |
| -moz-transform: rotateY(-30deg); | |
| transform: rotateY(-30deg); } | |
| 75% { | |
| -webkit-transform: rotateY( 30deg); | |
| -moz-transform: rotateY( 30deg); | |
| transform: rotateY( 30deg); } | |
| 100% { | |
| -webkit-transform: rotateZ( 20deg); | |
| -moz-transform: rotateZ( 20deg); | |
| transform: rotateZ( 20deg); } } | |
| @keyframes tilt { | |
| 0% { | |
| -webkit-transform: rotateX(-30deg); | |
| -moz-transform: rotateX(-30deg); | |
| transform: rotateX(-30deg); } | |
| 25% { | |
| -webkit-transform: rotateX( 30deg); | |
| -moz-transform: rotateX( 30deg); | |
| transform: rotateX( 30deg); } | |
| 50% { | |
| -webkit-transform: rotateY(-30deg); | |
| -moz-transform: rotateY(-30deg); | |
| transform: rotateY(-30deg); } | |
| 75% { | |
| -webkit-transform: rotateY( 30deg); | |
| -moz-transform: rotateY( 30deg); | |
| transform: rotateY( 30deg); } | |
| 100% { | |
| -webkit-transform: rotateZ( 20deg); | |
| -moz-transform: rotateZ( 20deg); | |
| transform: rotateZ( 20deg); } } | |
| @-webkit-keyframes wave { | |
| 0% { | |
| -webkit-transform: rotateZ(0deg) translate3d(0,10%,0) rotateZ(0deg); | |
| -moz-transform: rotateZ(0deg) translate3d(0,10%,0) rotateZ(0deg); | |
| transform: rotateZ(0deg) translate3d(0,10%,0) rotateZ(0deg); } | |
| 100% { | |
| -webkit-transform: rotateZ(360deg) translate3d(0,10%,0) rotateZ(-360deg); | |
| -moz-transform: rotateZ(360deg) translate3d(0,10%,0) rotateZ(-360deg); | |
| transform: rotateZ(360deg) translate3d(0,10%,0) rotateZ(-360deg); } } | |
| @-moz-keyframes wave { | |
| 0% { | |
| -webkit-transform: rotateZ(0deg) translate3d(0,10%,0) rotateZ(0deg); | |
| -moz-transform: rotateZ(0deg) translate3d(0,10%,0) rotateZ(0deg); | |
| transform: rotateZ(0deg) translate3d(0,10%,0) rotateZ(0deg); } | |
| 100% { | |
| -webkit-transform: rotateZ(360deg) translate3d(0,10%,0) rotateZ(-360deg); | |
| -moz-transform: rotateZ(360deg) translate3d(0,10%,0) rotateZ(-360deg); | |
| transform: rotateZ(360deg) translate3d(0,10%,0) rotateZ(-360deg); } } | |
| @-ms-keyframes wave { | |
| 0% { | |
| -webkit-transform: rotateZ(0deg) translate3d(0,10%,0) rotateZ(0deg); | |
| -moz-transform: rotateZ(0deg) translate3d(0,10%,0) rotateZ(0deg); | |
| transform: rotateZ(0deg) translate3d(0,10%,0) rotateZ(0deg); } | |
| 100% { | |
| -webkit-transform: rotateZ(360deg) translate3d(0,10%,0) rotateZ(-360deg); | |
| -moz-transform: rotateZ(360deg) translate3d(0,10%,0) rotateZ(-360deg); | |
| transform: rotateZ(360deg) translate3d(0,10%,0) rotateZ(-360deg); } } | |
| @keyframes wave { | |
| 0% { | |
| -webkit-transform: rotateZ(0deg) translate3d(0,10%,0) rotateZ(0deg); | |
| -moz-transform: rotateZ(0deg) translate3d(0,10%,0) rotateZ(0deg); | |
| transform: rotateZ(0deg) translate3d(0,10%,0) rotateZ(0deg); } | |
| 100% { | |
| -webkit-transform: rotateZ(360deg) translate3d(0,10%,0) rotateZ(-360deg); | |
| -moz-transform: rotateZ(360deg) translate3d(0,10%,0) rotateZ(-360deg); | |
| transform: rotateZ(360deg) translate3d(0,10%,0) rotateZ(-360deg); } } | |
| @-webkit-keyframes lighthouse { | |
| 0% { | |
| -webkit-transform: translate3d(15%,0,0) rotateZ(10deg); | |
| -moz-transform: translate3d(15%,0,0) rotateZ(10deg); | |
| transform: translate3d(15%,0,0) rotateZ(10deg); } | |
| 100% { | |
| -webkit-transform: translate3d(-15%,0,0) rotateZ(-10deg); | |
| -moz-transform: translate3d(-15%,0,0) rotateZ(-10deg); | |
| transform: translate3d(-15%,0,0) rotateZ(-10deg); } } | |
| @-moz-keyframes lighthouse { | |
| 0% { | |
| -webkit-transform: translate3d(15%,0,0) rotateZ(10deg); | |
| -moz-transform: translate3d(15%,0,0) rotateZ(10deg); | |
| transform: translate3d(15%,0,0) rotateZ(10deg); } | |
| 100% { | |
| -webkit-transform: translate3d(-15%,0,0) rotateZ(-10deg); | |
| -moz-transform: translate3d(-15%,0,0) rotateZ(-10deg); | |
| transform: translate3d(-15%,0,0) rotateZ(-10deg); } } | |
| @-ms-keyframes lighthouse { | |
| 0% { | |
| -webkit-transform: translate3d(15%,0,0) rotateZ(10deg); | |
| -moz-transform: translate3d(15%,0,0) rotateZ(10deg); | |
| transform: translate3d(15%,0,0) rotateZ(10deg); } | |
| 100% { | |
| -webkit-transform: translate3d(-15%,0,0) rotateZ(-10deg); | |
| -moz-transform: translate3d(-15%,0,0) rotateZ(-10deg); | |
| transform: translate3d(-15%,0,0) rotateZ(-10deg); } } | |
| @keyframes lighthouse { | |
| 0% { | |
| -webkit-transform: translate3d(15%,0,0) rotateZ(10deg); | |
| -moz-transform: translate3d(15%,0,0) rotateZ(10deg); | |
| transform: translate3d(15%,0,0) rotateZ(10deg); } | |
| 100% { | |
| -webkit-transform: translate3d(-15%,0,0) rotateZ(-10deg); | |
| -moz-transform: translate3d(-15%,0,0) rotateZ(-10deg); | |
| transform: translate3d(-15%,0,0) rotateZ(-10deg); } } | |
| @-webkit-keyframes swing { | |
| 0% { | |
| -webkit-transform: rotateZ(10deg); | |
| -moz-transform: rotateZ(10deg); | |
| transform: rotateZ(10deg); } | |
| 100% { | |
| -webkit-transform: rotateZ(-10deg); | |
| -moz-transform: rotateZ(-10deg); | |
| transform: rotateZ(-10deg); } } | |
| @-moz-keyframes swing { | |
| 0% { | |
| -webkit-transform: rotateZ(10deg); | |
| -moz-transform: rotateZ(10deg); | |
| transform: rotateZ(10deg); } | |
| 100% { | |
| -webkit-transform: rotateZ(-10deg); | |
| -moz-transform: rotateZ(-10deg); | |
| transform: rotateZ(-10deg); } } | |
| @-ms-keyframes swing { | |
| 0% { | |
| -webkit-transform: rotateZ(10deg); | |
| -moz-transform: rotateZ(10deg); | |
| transform: rotateZ(10deg); } | |
| 100% { | |
| -webkit-transform: rotateZ(-10deg); | |
| -moz-transform: rotateZ(-10deg); | |
| transform: rotateZ(-10deg); } } | |
| @keyframes swing { | |
| 0% { | |
| -webkit-transform: rotateZ(10deg); | |
| -moz-transform: rotateZ(10deg); | |
| transform: rotateZ(10deg); } | |
| 100% { | |
| -webkit-transform: rotateZ(-10deg); | |
| -moz-transform: rotateZ(-10deg); | |
| transform: rotateZ(-10deg); } } | |