diff options
author | Eric Bidelman | 2012-04-16 12:04:03 -0700 |
---|---|---|
committer | Eric Bidelman | 2012-04-16 12:04:03 -0700 |
commit | 32f207b326a2138c14e0502fcd58c5c3457cde35 (patch) | |
tree | 5231a40fb221a0fd3118eb18efb768e386da7c83 | |
parent | 04153b7c8a3332c8008408227f6d71b8ef392c35 (diff) | |
download | io-slides-remote-32f207b326a2138c14e0502fcd58c5c3457cde35.tar.gz |
mobile tweaks. Modernizr touch detection
-rw-r--r-- | js/modernizr.custom.76029.js | 4 | ||||
-rw-r--r-- | js/slides.js | 3 | ||||
-rw-r--r-- | js/touch.js | 61 | ||||
-rw-r--r-- | template.html | 2 | ||||
-rw-r--r-- | theme/css/default.css | 101 | ||||
-rw-r--r-- | theme/css/phone.css | 8 | ||||
-rw-r--r-- | theme/sass/default.scss | 10 | ||||
-rw-r--r-- | theme/sass/phone.scss | 8 |
8 files changed, 76 insertions, 121 deletions
diff --git a/js/modernizr.custom.76029.js b/js/modernizr.custom.76029.js new file mode 100644 index 0000000..6604275 --- /dev/null +++ b/js/modernizr.custom.76029.js | |||
@@ -0,0 +1,4 @@ | |||
1 | /* Modernizr 2.5.3 (Custom Build) | MIT & BSD | ||
2 | * Build: http://www.modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradius-boxshadow-flexbox-flexbox_legacy-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-canvas-canvastext-draganddrop-hashchange-history-audio-video-indexeddb-input-inputtypes-localstorage-postmessage-sessionstorage-websockets-websqldatabase-webworkers-geolocation-inlinesvg-smil-svg-svgclippaths-touch-webgl-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes | ||
3 | */ | ||
4 | ;window.Modernizr=function(a,b,c){function B(a){i.cssText=a}function C(a,b){return B(m.join(a+";")+(b||""))}function D(a,b){return typeof a===b}function E(a,b){return!!~(""+a).indexOf(b)}function F(a,b){for(var d in a)if(i[a[d]]!==c)return b=="pfx"?a[d]:!0;return!1}function G(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:D(f,"function")?f.bind(d||b):f}return!1}function H(a,b,c){var d=a.charAt(0).toUpperCase()+a.substr(1),e=(a+" "+o.join(d+" ")+d).split(" ");return D(b,"string")||D(b,"undefined")?F(e,b):(e=(a+" "+p.join(d+" ")+d).split(" "),G(e,b,c))}function J(){e.input=function(c){for(var d=0,e=c.length;d<e;d++)t[c[d]]=c[d]in j;return t.list&&(t.list=!!b.createElement("datalist")&&!!a.HTMLDataListElement),t}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),e.inputtypes=function(a){for(var d=0,e,g,h,i=a.length;d<i;d++)j.setAttribute("type",g=a[d]),e=j.type!=="text",e&&(j.value=k,j.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(g)&&j.style.WebkitAppearance!==c?(f.appendChild(j),h=b.defaultView,e=h.getComputedStyle&&h.getComputedStyle(j,null).WebkitAppearance!=="textfield"&&j.offsetHeight!==0,f.removeChild(j)):/^(search|tel)$/.test(g)||(/^(url|email)$/.test(g)?e=j.checkValidity&&j.checkValidity()===!1:/^color$/.test(g)?(f.appendChild(j),f.offsetWidth,e=j.value!=k,f.removeChild(j)):e=j.value!=k)),s[a[d]]=!!e;return s}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var d="2.5.3",e={},f=b.documentElement,g="modernizr",h=b.createElement(g),i=h.style,j=b.createElement("input"),k=":)",l={}.toString,m=" -webkit- -moz- -o- -ms- ".split(" "),n="Webkit Moz O ms",o=n.split(" "),p=n.toLowerCase().split(" "),q={svg:"http://www.w3.org/2000/svg"},r={},s={},t={},u=[],v=u.slice,w,x=function(a,c,d,e){var h,i,j,k=b.createElement("div"),l=b.body,m=l?l:b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:g+(d+1),k.appendChild(j);return h=["­","<style>",a,"</style>"].join(""),k.id=g,(l?k:m).innerHTML+=h,m.appendChild(k),l||(m.style.background="",f.appendChild(m)),i=c(k,a),l?k.parentNode.removeChild(k):m.parentNode.removeChild(m),!!i},y=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;return f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=D(e[d],"function"),D(e[d],"undefined")||(e[d]=c),e.removeAttribute(d))),e=null,f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),z={}.hasOwnProperty,A;!D(z,"undefined")&&!D(z.call,"undefined")?A=function(a,b){return z.call(a,b)}:A=function(a,b){return b in a&&D(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=v.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(v.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(v.call(arguments)))};return e});var I=function(c,d){var f=c.join(""),g=d.length;x(f,function(c,d){var f=b.styleSheets[b.styleSheets.length-1],h=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"",i=c.childNodes,j={};while(g--)j[i[g].id]=i[g];e.touch="ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch||(j.touch&&j.touch.offsetTop)===9,e.csstransforms3d=(j.csstransforms3d&&j.csstransforms3d.offsetLeft)===9&&j.csstransforms3d.offsetHeight===3,e.generatedcontent=(j.generatedcontent&&j.generatedcontent.offsetHeight)>=1,e.fontface=/src/i.test(h)&&h.indexOf(d.split(" ")[0])===0},g,d)}(['@font-face {font-family:"font";src:url("https://")}',["@media (",m.join("touch-enabled),("),g,")","{#touch{top:9px;position:absolute}}"].join(""),["@media (",m.join("transform-3d),("),g,")","{#csstransforms3d{left:9px;position:absolute;height:3px;}}"].join(""),['#generatedcontent:after{content:"',k,'";visibility:hidden}'].join("")],["fontface","touch","csstransforms3d","generatedcontent"]);r.flexbox=function(){return H("flexOrder")},r["flexbox-legacy"]=function(){return H("boxDirection")},r.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d")},r.canvastext=function(){return!!e.canvas&&!!D(b.createElement("canvas").getContext("2d").fillText,"function")},r.webgl=function(){try{var d=b.createElement("canvas"),e;e=!(!a.WebGLRenderingContext||!d.getContext("experimental-webgl")&&!d.getContext("webgl")),d=c}catch(f){e=!1}return e},r.touch=function(){return e.touch},r.geolocation=function(){return!!navigator.geolocation},r.postmessage=function(){return!!a.postMessage},r.websqldatabase=function(){return!!a.openDatabase},r.indexedDB=function(){return!!H("indexedDB",a)},r.hashchange=function(){return y("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},r.history=function(){return!!a.history&&!!history.pushState},r.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},r.websockets=function(){for(var b=-1,c=o.length;++b<c;)if(a[o[b]+"WebSocket"])return!0;return"WebSocket"in a},r.rgba=function(){return B("background-color:rgba(150,255,150,.5)"),E(i.backgroundColor,"rgba")},r.hsla=function(){return B("background-color:hsla(120,40%,100%,.5)"),E(i.backgroundColor,"rgba")||E(i.backgroundColor,"hsla")},r.multiplebgs=function(){return B("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(i.background)},r.backgroundsize=function(){return H("backgroundSize")},r.borderimage=function(){return H("borderImage")},r.borderradius=function(){return H("borderRadius")},r.boxshadow=function(){return H("boxShadow")},r.textshadow=function(){return b.createElement("div").style.textShadow===""},r.opacity=function(){return C("opacity:.55"),/^0.55$/.test(i.opacity)},r.cssanimations=function(){return H("animationName")},r.csscolumns=function(){return H("columnCount")},r.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return B((a+"-webkit- ".split(" ").join(b+a)+m.join(c+a)).slice(0,-a.length)),E(i.backgroundImage,"gradient")},r.cssreflections=function(){return H("boxReflect")},r.csstransforms=function(){return!!H("transform")},r.csstransforms3d=function(){var a=!!H("perspective");return a&&"webkitPerspective"in f.style&&(a=e.csstransforms3d),a},r.csstransitions=function(){return H("transition")},r.fontface=function(){return e.fontface},r.generatedcontent=function(){return e.generatedcontent},r.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"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"")}catch(d){}return c},r.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"').replace(/^no$/,""),c.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),c.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),c.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,"")}catch(d){}return c},r.localstorage=function(){try{return localStorage.setItem(g,g),localStorage.removeItem(g),!0}catch(a){return!1}},r.sessionstorage=function(){try{return sessionStorage.setItem(g,g),sessionStorage.removeItem(g),!0}catch(a){return!1}},r.webworkers=function(){return!!a.Worker},r.applicationcache=function(){return!!a.applicationCache},r.svg=function(){return!!b.createElementNS&&!!b.createElementNS(q.svg,"svg").createSVGRect},r.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="<svg/>",(a.firstChild&&a.firstChild.namespaceURI)==q.svg},r.smil=function(){return!!b.createElementNS&&/SVGAnimate/.test(l.call(b.createElementNS(q.svg,"animate")))},r.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(l.call(b.createElementNS(q.svg,"clipPath")))};for(var K in r)A(r,K)&&(w=K.toLowerCase(),e[w]=r[K](),u.push((e[w]?"":"no-")+w));return e.input||J(),B(""),h=j=null,e._version=d,e._prefixes=m,e._domPrefixes=p,e._cssomPrefixes=o,e.hasEvent=y,e.testProp=function(a){return F([a])},e.testAllProps=H,e.testStyles=x,e}(this,this.document); \ No newline at end of file | ||
diff --git a/js/slides.js b/js/slides.js index a28fd55..c970ddb 100644 --- a/js/slides.js +++ b/js/slides.js | |||
@@ -265,7 +265,8 @@ SlideDeck.prototype.loadConfig_ = function(config) { | |||
265 | slides.appendChild(el); | 265 | slides.appendChild(el); |
266 | } | 266 | } |
267 | 267 | ||
268 | if (!!!('enableTouch' in settings) || settings.enableTouch) { | 268 | if (Modernizr.touch && (!!!('enableTouch' in settings) || |
269 | settings.enableTouch)) { | ||
269 | var self = this; | 270 | var self = this; |
270 | 271 | ||
271 | var hammer = new Hammer(slides); | 272 | var hammer = new Hammer(slides); |
diff --git a/js/touch.js b/js/touch.js deleted file mode 100644 index e0519e6..0000000 --- a/js/touch.js +++ /dev/null | |||
@@ -1,61 +0,0 @@ | |||
1 | /* Touch events */ | ||
2 | (function(exports) { | ||
3 | var PM_TOUCH_SENSITIVITY = 15; | ||
4 | var touchDX; | ||
5 | var touchDY; | ||
6 | var touchStartX; | ||
7 | var touchStartY; | ||
8 | |||
9 | function TouchManager(deck) { | ||
10 | this.deck_ = deck; | ||
11 | |||
12 | /* Add swiping */ | ||
13 | document.body.addEventListener('touchstart', this.handleTouchStart.bind(this), false); | ||
14 | document.body.addEventListener('touchmove', this.handleTouchMove.bind(this), false); | ||
15 | document.body.addEventListener('touchend', this.handleTouchEnd.bind(this), false); | ||
16 | } | ||
17 | |||
18 | TouchManager.prototype.handleTouchStart = function(e) { | ||
19 | if (e.touches.length == 1) { | ||
20 | touchDX = 0; | ||
21 | touchDY = 0; | ||
22 | |||
23 | touchStartX = e.touches[0].pageX; | ||
24 | touchStartY = e.touches[0].pageY; | ||
25 | |||
26 | } | ||
27 | }; | ||
28 | |||
29 | TouchManager.prototype.handleTouchMove = function(e) { | ||
30 | if (e.touches.length > 1) { | ||
31 | //this.cancelTouch(); | ||
32 | } else { | ||
33 | touchDX = e.touches[0].pageX - touchStartX; | ||
34 | touchDY = e.touches[0].pageY - touchStartY; | ||
35 | } | ||
36 | }; | ||
37 | |||
38 | TouchManager.prototype.handleTouchEnd = function(e) { | ||
39 | var dx = Math.abs(touchDX); | ||
40 | var dy = Math.abs(touchDY); | ||
41 | |||
42 | if ((dx > PM_TOUCH_SENSITIVITY) && (dy < (dx * 2 / 3))) { | ||
43 | if (touchDX > 0) { | ||
44 | this.deck_.prevSlide(); | ||
45 | } else { | ||
46 | this.deck_.nextSlide(); | ||
47 | } | ||
48 | } | ||
49 | |||
50 | //this.cancelTouch(); | ||
51 | }; | ||
52 | |||
53 | // TouchManager.prototype.cancelTouch = function() { | ||
54 | // console.log(touchDX) | ||
55 | // document.body.removeEventListener('touchmove', this.handleTouchMove.bind(this), false); | ||
56 | // document.body.removeEventListener('touchend', this.handleTouchMove.bind(this), false); | ||
57 | // }; | ||
58 | |||
59 | exports.TouchManager = TouchManager; | ||
60 | |||
61 | })(window); | ||
diff --git a/template.html b/template.html index c0a6bcd..6bfb029 100644 --- a/template.html +++ b/template.html | |||
@@ -366,7 +366,9 @@ function helloWorld(world) { | |||
366 | 366 | ||
367 | </slides> | 367 | </slides> |
368 | 368 | ||
369 | |||
369 | <script src="slide_config.js" defer></script> | 370 | <script src="slide_config.js" defer></script> |
371 | <script src="js/modernizr.custom.76029.js" defer></script> | ||
370 | <script src="js/prettify/prettify.js" defer></script> | 372 | <script src="js/prettify/prettify.js" defer></script> |
371 | <script src="js/yepnope.1.5.3-min.js" defer></script> | 373 | <script src="js/yepnope.1.5.3-min.js" defer></script> |
372 | <script src="js/hammer.js" defer></script> | 374 | <script src="js/hammer.js" defer></script> |
diff --git a/theme/css/default.css b/theme/css/default.css index 7507b19..7c96455 100644 --- a/theme/css/default.css +++ b/theme/css/default.css | |||
@@ -884,25 +884,17 @@ article.smaller q:before, article.smaller q:after { | |||
884 | } | 884 | } |
885 | 885 | ||
886 | /* line 638, ../sass/default.scss */ | 886 | /* line 638, ../sass/default.scss */ |
887 | .with-notes slide.current { | ||
888 | -webkit-transform: rotateY(180deg) !important; | ||
889 | -moz-transform: rotateY(180deg) !important; | ||
890 | -ms-transform: rotateY(180deg) !important; | ||
891 | -o-transform: rotateY(180deg) !important; | ||
892 | transform: rotateY(180deg) !important; | ||
893 | } | ||
894 | /* line 641, ../sass/default.scss */ | ||
895 | .with-notes .note { | 887 | .with-notes .note { |
896 | opacity: 1; | 888 | opacity: 1; |
897 | -webkit-transform: rotateY(180deg); | 889 | -webkit-transform: translateY(0); |
898 | -moz-transform: rotateY(180deg); | 890 | -moz-transform: translateY(0); |
899 | -ms-transform: rotateY(180deg); | 891 | -ms-transform: translateY(0); |
900 | -o-transform: rotateY(180deg); | 892 | -o-transform: translateY(0); |
901 | transform: rotateY(180deg); | 893 | transform: translateY(0); |
902 | pointer-events: auto; | 894 | pointer-events: auto; |
903 | } | 895 | } |
904 | 896 | ||
905 | /* line 648, ../sass/default.scss */ | 897 | /* line 645, ../sass/default.scss */ |
906 | .note { | 898 | .note { |
907 | position: absolute; | 899 | position: absolute; |
908 | z-index: 100; | 900 | z-index: 100; |
@@ -930,18 +922,23 @@ article.smaller q:before, article.smaller q:after { | |||
930 | -moz-box-pack: center; | 922 | -moz-box-pack: center; |
931 | -ms-box-pack: center; | 923 | -ms-box-pack: center; |
932 | box-pack: center; | 924 | box-pack: center; |
933 | -webkit-transition: -webkit-transform 0.2s cubic-bezier(0.1, 0.1, 0.25, 0.9), opacity 0.4s ease-in-out 0.4s; | ||
934 | -moz-transition: -moz-transform 0.2s cubic-bezier(0.1, 0.1, 0.25, 0.9), opacity 0.4s ease-in-out 0.4s; | ||
935 | -ms-transition: -ms-transform 0.2s cubic-bezier(0.1, 0.1, 0.25, 0.9), opacity 0.4s ease-in-out 0.4s; | ||
936 | -o-transition: -o-transform 0.2s cubic-bezier(0.1, 0.1, 0.25, 0.9), opacity 0.4s ease-in-out 0.4s; | ||
937 | transition: transform 0.2s cubic-bezier(0.1, 0.1, 0.25, 0.9), opacity 0.4s ease-in-out 0.4s; | ||
938 | -webkit-border-radius: 5px; | 925 | -webkit-border-radius: 5px; |
939 | -moz-border-radius: 5px; | 926 | -moz-border-radius: 5px; |
940 | -ms-border-radius: 5px; | 927 | -ms-border-radius: 5px; |
941 | -o-border-radius: 5px; | 928 | -o-border-radius: 5px; |
942 | border-radius: 5px; | 929 | border-radius: 5px; |
943 | } | 930 | -webkit-transform: translateY(350px); |
944 | /* line 664, ../sass/default.scss */ | 931 | -moz-transform: translateY(350px); |
932 | -ms-transform: translateY(350px); | ||
933 | -o-transform: translateY(350px); | ||
934 | transform: translateY(350px); | ||
935 | -webkit-transition: all 0.4s ease-in-out; | ||
936 | -moz-transition: all 0.4s ease-in-out; | ||
937 | -ms-transition: all 0.4s ease-in-out; | ||
938 | -o-transition: all 0.4s ease-in-out; | ||
939 | transition: all 0.4s ease-in-out; | ||
940 | } | ||
941 | /* line 662, ../sass/default.scss */ | ||
945 | .note > section { | 942 | .note > section { |
946 | background: #fff; | 943 | background: #fff; |
947 | -webkit-border-radius: 5px; | 944 | -webkit-border-radius: 5px; |
@@ -956,7 +953,7 @@ article.smaller q:before, article.smaller q:after { | |||
956 | padding: 2em; | 953 | padding: 2em; |
957 | } | 954 | } |
958 | 955 | ||
959 | /* line 673, ../sass/default.scss */ | 956 | /* line 671, ../sass/default.scss */ |
960 | .source { | 957 | .source { |
961 | font-size: 14px; | 958 | font-size: 14px; |
962 | color: #a9a9a9; | 959 | color: #a9a9a9; |
@@ -965,7 +962,7 @@ article.smaller q:before, article.smaller q:after { | |||
965 | left: 60px; | 962 | left: 60px; |
966 | } | 963 | } |
967 | 964 | ||
968 | /* line 681, ../sass/default.scss */ | 965 | /* line 679, ../sass/default.scss */ |
969 | input, button { | 966 | input, button { |
970 | vertical-align: middle; | 967 | vertical-align: middle; |
971 | } | 968 | } |
@@ -981,7 +978,7 @@ input, button { | |||
981 | -ms-box-reflect: below 3px -ms-linear-gradient(rgba(255,255,255,0) 85%, white 150%); | 978 | -ms-box-reflect: below 3px -ms-linear-gradient(rgba(255,255,255,0) 85%, white 150%); |