Created
December 27, 2011 08:16
-
-
Save adammw/1523009 to your computer and use it in GitHub Desktop.
Nodester over-the-top 404...
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!doctype html> | |
<html class="no-js"> | |
<head> | |
<meta charset="utf-8"> | |
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> | |
<title>404 - File not found</title> | |
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"> | |
<style> | |
html, body { width: 100%; height: 100%; margin: 0px; text-align: center; -webkit-user-select: none; } | |
html { background: #333; color: #fff; } | |
@-webkit-keyframes rocket { | |
from { | |
-webkit-transform: rotate(30deg); | |
height: 265px; | |
width: 268px; | |
left: 10%; | |
top: 0px; | |
margin-top: -265px; | |
} | |
to { | |
margin-top: -148px; | |
} | |
} | |
@-webkit-keyframes text { | |
from { | |
top: 50%; | |
opacity: 0; | |
} | |
50% { | |
opacity: 1; | |
} | |
to { | |
top: 90%; | |
opacity: 0; | |
} | |
} | |
#nebula, #nebulabg { | |
position: absolute; | |
width: 100%; | |
height: 100%; | |
z-index: -1; | |
top: 0; | |
left: 0; | |
} | |
.js.canvas #nebulabg { | |
display: none; | |
} | |
.js.cssanimations #rocket { | |
display: none; | |
} | |
.js.cssanimations .audio-ready #rocket, | |
.js.cssanimations .audio-timeout #rocket { | |
display: block; | |
-webkit-animation: rocket 2s 1 ease-out; | |
} | |
#rocket { | |
position: absolute; | |
height:295px; | |
width:298px; | |
background-image: url('http://nodester.com/images/rocket-down.png'); | |
background-size: cover; | |
top: 40%; | |
margin-left: -149px; | |
margin-top: -148px; | |
left: 50%; | |
} | |
#rocket img { | |
display: none; | |
} | |
#audio { | |
display: none; | |
} | |
h1, .js.cssanimations p.description span { | |
font-family:sans-serif; | |
font-size:38px; | |
font-weight:bold; | |
padding:0 0 5px; | |
margin:0; | |
text-align: center; | |
top: 70%; | |
position: absolute; | |
text-shadow: 0 0 3px #000; | |
} | |
.js.cssanimations p.description { | |
display: block; | |
height: 0; | |
margin: 0; | |
padding: 0; | |
} | |
.js.cssanimations .audio-ready p.description span, | |
.js.cssanimations .audio-timeout p.description span { | |
-webkit-animation: text 5s infinite ease-in; | |
} | |
.js.cssanimations p.description span { | |
position: absolute; | |
opacity: 0; | |
display: block; | |
width: 100%; | |
} | |
.js.cssanimations p.description span:nth-child(2) { | |
-webkit-animation-delay: 1s; | |
} | |
.js.cssanimations p.description span:nth-child(3) { | |
-webkit-animation-delay: 2s; | |
} | |
.js.cssanimations h1 { | |
top: 40%; | |
margin-left: 128px; | |
margin-top: 132px; | |
left: 50%; | |
opacity: 0; | |
-webkit-transform: scale(0.5); | |
-webkit-transition: opacity 200ms, -webkit-transform 200ms linear; | |
-webkit-transition-delay: 1.8s; | |
} | |
.js.cssanimations .audio-ready h1, .js.cssanimations .audio-timeout h1 { | |
opacity: 1; | |
-webkit-transform: rotate(-20deg); | |
} | |
</style> | |
<script src="modernizr.js"></script> | |
<script> | |
Modernizr.load({ | |
test: Modernizr.canvas, | |
yep: 'nebula.js' | |
}); | |
Modernizr.load({ | |
test: Modernizr.postmessage, | |
yep: 'http://www.youtube.com/player_api' | |
}); | |
document.addEventListener("DOMContentLoaded", function() { | |
document.getElementById("rocket").title = "Click to Mute"; | |
document.getElementById("rocket").addEventListener("click", function() { | |
player.setVolume(0); | |
}); | |
}); | |
var player; | |
function onYouTubePlayerAPIReady() { | |
player = new YT.Player('audio', { | |
videoId: '75V4ClJZME4', | |
events: { | |
'onReady': function(e) { | |
e.target.playVideo(); | |
}, | |
'onStateChange': function(e) { | |
if (e.data == YT.PlayerState.PLAYING) { | |
document.body.className += " audio-ready"; | |
} | |
}, | |
} | |
}); | |
} | |
setTimeout(function() { | |
document.body.className += " audio-timeout"; | |
}, 2000); | |
</script> | |
</head> | |
<body> | |
<div id="audio"> | |
</div> | |
<img src="http://nodester.com/images/nebula.jpg" id="nebulabg" /> | |
<div id="rocket"><img src="http://nodester.com/images/rocket-down.png" alt="Nodester" /></div> | |
<h1>404</h1> | |
<p class="description"><span>File</span> <span>Not</span> <span>Found</span></p> | |
</body> | |
</html> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* Modernizr 2.0.6 (Custom Build) | MIT & BSD | |
* Build: http://www.modernizr.com/download/#-cssanimations-csstransitions-canvas-audio-video-localstorage-postmessage-sessionstorage-iepp-cssclasses-teststyles-testprop-testallprops-domprefixes-load | |
*/ | |
;window.Modernizr=function(a,b,c){function B(a,b){var c=a.charAt(0).toUpperCase()+a.substr(1),d=(a+" "+n.join(c+" ")+c).split(" ");return A(d,b)}function A(a,b){for(var d in a)if(k[a[d]]!==c)return b=="pfx"?a[d]:!0;return!1}function z(a,b){return!!~(""+a).indexOf(b)}function y(a,b){return typeof a===b}function x(a,b){return w(prefixes.join(a+";")+(b||""))}function w(a){k.cssText=a}var d="2.0.6",e={},f=!0,g=b.documentElement,h=b.head||b.getElementsByTagName("head")[0],i="modernizr",j=b.createElement(i),k=j.style,l,m=Object.prototype.toString,n="Webkit Moz O ms Khtml".split(" "),o={},p={},q={},r=[],s=function(a,c,d,e){var f,h,j,k=b.createElement("div");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:i+(d+1),k.appendChild(j);f=["­","<style>",a,"</style>"].join(""),k.id=i,k.innerHTML+=f,g.appendChild(k),h=c(k,a),k.parentNode.removeChild(k);return!!h},t,u={}.hasOwnProperty,v;!y(u,c)&&!y(u.call,c)?v=function(a,b){return u.call(a,b)}:v=function(a,b){return b in a&&y(a.constructor.prototype[b],c)},o.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d")},o.postmessage=function(){return!!a.postMessage},o.cssanimations=function(){return B("animationName")},o.csstransitions=function(){return B("transitionProperty")},o.video=function(){var a=b.createElement("video"),c=!1;try{if(c=!!a.canPlayType){c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"');var d='video/mp4; codecs="avc1.42E01E';c.h264=a.canPlayType(d+'"')||a.canPlayType(d+', mp4a.40.2"'),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"')}}catch(e){}return c},o.audio=function(){var a=b.createElement("audio"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"'),c.mp3=a.canPlayType("audio/mpeg;"),c.wav=a.canPlayType('audio/wav; codecs="1"'),c.m4a=a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")}catch(d){}return c},o.localstorage=function(){try{return!!localStorage.getItem}catch(a){return!1}},o.sessionstorage=function(){try{return!!sessionStorage.getItem}catch(a){return!1}};for(var C in o)v(o,C)&&(t=C.toLowerCase(),e[t]=o[C](),r.push((e[t]?"":"no-")+t));w(""),j=l=null,a.attachEvent&&function(){var a=b.createElement("div");a.innerHTML="<elem></elem>";return a.childNodes.length!==1}()&&function(a,b){function s(a){var b=-1;while(++b<g)a.createElement(f[b])}a.iepp=a.iepp||{};var d=a.iepp,e=d.html5elements||"abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",f=e.split("|"),g=f.length,h=new RegExp("(^|\\s)("+e+")","gi"),i=new RegExp("<(/*)("+e+")","gi"),j=/^\s*[\{\}]\s*$/,k=new RegExp("(^|[^\\n]*?\\s)("+e+")([^\\n]*)({[\\n\\w\\W]*?})","gi"),l=b.createDocumentFragment(),m=b.documentElement,n=m.firstChild,o=b.createElement("body"),p=b.createElement("style"),q=/print|all/,r;d.getCSS=function(a,b){if(a+""===c)return"";var e=-1,f=a.length,g,h=[];while(++e<f){g=a[e];if(g.disabled)continue;b=g.media||b,q.test(b)&&h.push(d.getCSS(g.imports,b),g.cssText),b="all"}return h.join("")},d.parseCSS=function(a){var b=[],c;while((c=k.exec(a))!=null)b.push(((j.exec(c[1])?"\n":c[1])+c[2]+c[3]).replace(h,"$1.iepp_$2")+c[4]);return b.join("\n")},d.writeHTML=function(){var a=-1;r=r||b.body;while(++a<g){var c=b.getElementsByTagName(f[a]),d=c.length,e=-1;while(++e<d)c[e].className.indexOf("iepp_")<0&&(c[e].className+=" iepp_"+f[a])}l.appendChild(r),m.appendChild(o),o.className=r.className,o.id=r.id,o.innerHTML=r.innerHTML.replace(i,"<$1font")},d._beforePrint=function(){p.styleSheet.cssText=d.parseCSS(d.getCSS(b.styleSheets,"all")),d.writeHTML()},d.restoreHTML=function(){o.innerHTML="",m.removeChild(o),m.appendChild(r)},d._afterPrint=function(){d.restoreHTML(),p.styleSheet.cssText=""},s(b),s(l);d.disablePP||(n.insertBefore(p,n.firstChild),p.media="print",p.className="iepp-printshim",a.attachEvent("onbeforeprint",d._beforePrint),a.attachEvent("onafterprint",d._afterPrint))}(a,b),e._version=d,e._domPrefixes=n,e.testProp=function(a){return A([a])},e.testAllProps=B,e.testStyles=s,g.className=g.className.replace(/\bno-js\b/,"")+(f?" js "+r.join(" "):"");return e}(this,this.document),function(a,b,c){function k(a){return!a||a=="loaded"||a=="complete"}function j(){var a=1,b=-1;while(p.length- ++b)if(p[b].s&&!(a=p[b].r))break;a&&g()}function i(a){var c=b.createElement("script"),d;c.src=a.s,c.onreadystatechange=c.onload=function(){!d&&k(c.readyState)&&(d=1,j(),c.onload=c.onreadystatechange=null)},m(function(){d||(d=1,j())},H.errorTimeout),a.e?c.onload():n.parentNode.insertBefore(c,n)}function h(a){var c=b.createElement("link"),d;c.href=a.s,c.rel="stylesheet",c.type="text/css";if(!a.e&&(w||r)){var e=function(a){m(function(){if(!d)try{a.sheet.cssRules.length?(d=1,j()):e(a)}catch(b){b.code==1e3||b.message=="security"||b.message=="denied"?(d=1,m(function(){j()},0)):e(a)}},0)};e(c)}else c.onload=function(){d||(d=1,m(function(){j()},0))},a.e&&c.onload();m(function(){d||(d=1,j())},H.errorTimeout),!a.e&&n.parentNode.insertBefore(c,n)}function g(){var a=p.shift();q=1,a?a.t?m(function(){a.t=="c"?h(a):i(a)},0):(a(),j()):q=0}function f(a,c,d,e,f,h){function i(){!o&&k(l.readyState)&&(r.r=o=1,!q&&j(),l.onload=l.onreadystatechange=null,m(function(){u.removeChild(l)},0))}var l=b.createElement(a),o=0,r={t:d,s:c,e:h};l.src=l.data=c,!s&&(l.style.display="none"),l.width=l.height="0",a!="object"&&(l.type=d),l.onload=l.onreadystatechange=i,a=="img"?l.onerror=i:a=="script"&&(l.onerror=function(){r.e=r.r=1,g()}),p.splice(e,0,r),u.insertBefore(l,s?null:n),m(function(){o||(u.removeChild(l),r.r=r.e=o=1,j())},H.errorTimeout)}function e(a,b,c){var d=b=="c"?z:y;q=0,b=b||"j",C(a)?f(d,a,b,this.i++,l,c):(p.splice(this.i++,0,a),p.length==1&&g());return this}function d(){var a=H;a.loader={load:e,i:0};return a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=r&&!s,u=s?l:n.parentNode,v=a.opera&&o.call(a.opera)=="[object Opera]",w="webkitAppearance"in l.style,x=w&&"async"in b.createElement("script"),y=r?"object":v||x?"img":"script",z=w?"img":y,A=Array.isArray||function(a){return o.call(a)=="[object Array]"},B=function(a){return Object(a)===a},C=function(a){return typeof a=="string"},D=function(a){return o.call(a)=="[object Function]"},E=[],F={},G,H;H=function(a){function f(a){var b=a.split("!"),c=E.length,d=b.pop(),e=b.length,f={url:d,origUrl:d,prefixes:b},g,h;for(h=0;h<e;h++)g=F[b[h]],g&&(f=g(f));for(h=0;h<c;h++)f=E[h](f);return f}function e(a,b,e,g,h){var i=f(a),j=i.autoCallback;if(!i.bypass){b&&(b=D(b)?b:b[a]||b[g]||b[a.split("/").pop().split("?")[0]]);if(i.instead)return i.instead(a,b,e,g,h);e.load(i.url,i.forceCSS||!i.forceJS&&/css$/.test(i.url)?"c":c,i.noexec),(D(b)||D(j))&&e.load(function(){d(),b&&b(i.origUrl,h,g),j&&j(i.origUrl,h,g)})}}function b(a,b){function c(a){if(C(a))e(a,h,b,0,d);else if(B(a))for(i in a)a.hasOwnProperty(i)&&e(a[i],h,b,i,d)}var d=!!a.test,f=d?a.yep:a.nope,g=a.load||a.both,h=a.callback,i;c(f),c(g),a.complete&&b.load(a.complete)}var g,h,i=this.yepnope.loader;if(C(a))e(a,0,i,0);else if(A(a))for(g=0;g<a.length;g++)h=a[g],C(h)?e(h,0,i,0):A(h)?H(h):B(h)&&b(h,i);else B(a)&&b(a,i)},H.addPrefix=function(a,b){F[a]=b},H.addFilter=function(a){E.push(a)},H.errorTimeout=1e4,b.readyState==null&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",G=function(){b.removeEventListener("DOMContentLoaded",G,0),b.readyState="complete"},0)),a.yepnope=d()}(this,this.document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))}; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
////////////////////////////////////////////////////////////////////////////////// | |
// A demonstration of a Canvas nebula effect | |
// (c) 2010 by R Cecco. <http://www.professorcloud.com> | |
// MIT License | |
// | |
// Please retain this copyright header in all versions of the software if | |
// using significant parts of it | |
////////////////////////////////////////////////////////////////////////////////// | |
// Modified by Adam Malcontenti-Wilson | |
(function() { | |
// Request Animation Frame shim | |
// http://paulirish.com/2011/requestanimationframe-for-smart-animating/ | |
var requestAnimationFrame = (function(){ | |
return window.requestAnimationFrame || | |
window.webkitRequestAnimationFrame || | |
window.mozRequestAnimationFrame || | |
window.oRequestAnimationFrame || | |
window.msRequestAnimationFrame || | |
function( callback ){ | |
window.setTimeout(callback, 1000 / 60); | |
}; | |
})(); | |
// Create canvases | |
var canvas = document.createElement('canvas'), | |
ctx = canvas.getContext('2d'), | |
canvas2 = document.createElement('canvas'), | |
ctx2 = canvas2.getContext('2d'), | |
canvas3 = document.createElement('canvas'), | |
ctx3 = canvas3.getContext('2d'); | |
var w = canvas.width = 285; | |
var h = canvas.height = 285; | |
canvas2.id = "nebula"; | |
canvas2.width = canvas2.height = 570; | |
canvas3.width = canvas3.height = 570; | |
// A puff. | |
var Puff = function(p) { | |
var opacity, | |
sy = (Math.random()*285)>>0, | |
sx = (Math.random()*285)>>0; | |
this.p = p; | |
this.move = function(timeFac) { | |
p = this.p + 0.3 * timeFac; | |
opacity = (Math.sin(p*0.05)*0.5); | |
if(opacity <0) { | |
p = opacity = 0; | |
sy = (Math.random()*285)>>0; | |
sx = (Math.random()*285)>>0; | |
} | |
this.p = p; | |
ctx.globalAlpha = opacity; | |
ctx.drawImage(canvas3, sy+p, sy+p, 285-(p*2),285-(p*2), 0,0, w, h); | |
}; | |
}; | |
var puffs = []; | |
var sortPuff = function(p1,p2) { return p1.p-p2.p; }; | |
puffs.push( new Puff(0) ); | |
puffs.push( new Puff(20) ); | |
puffs.push( new Puff(40) ); | |
var newTime, oldTime = 0, timeFac; | |
var animate = function() | |
{ | |
newTime = new Date().getTime(); | |
if(oldTime === 0 ) { | |
oldTime=newTime; | |
} | |
timeFac = (newTime-oldTime) * 0.1; | |
if(timeFac>3) {timeFac=3;} | |
oldTime = newTime; | |
puffs.sort(sortPuff); | |
for(var i=0;i<puffs.length;i++) | |
{ | |
puffs[i].move(timeFac); | |
} | |
ctx2.drawImage( canvas ,0,0,570,570); | |
requestAnimationFrame( animate ); | |
}; | |
// Load nebula image into canvas3 | |
var img = new Image(); | |
img.onload = function() { | |
ctx3.drawImage(img, 0,0, 570, 570); | |
animate(); | |
document.body.className += " nebula-ready"; | |
}; | |
img.src = 'http://nodester.com/images/nebula.jpg'; | |
document.body.appendChild(canvas2); | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment