├── .editorconfig ├── README.md ├── html5 ├── firefox-os-pick-and-mix.html ├── firefox-os-pick-and-mix_es.html ├── license.txt ├── mozilla-mission.html ├── pictures │ ├── fxos │ │ ├── 3dview.mp4 │ │ ├── 3dview.webm │ │ ├── appmanager.mp4 │ │ ├── appmanager.webm │ │ ├── apps.png │ │ ├── boilerplate.jpg │ │ ├── brick.jpg │ │ ├── buildingblocks.png │ │ ├── buildingfirefoxos.png │ │ ├── console.png │ │ ├── debugger.png │ │ ├── devhub.jpg │ │ ├── devtools.jpg │ │ ├── devtools.png │ │ ├── dynamicsearch.mp4 │ │ ├── dynamicsearch.ogv │ │ ├── dynamicsearch.webm │ │ ├── enduser-fxos.jpg │ │ ├── everythingme.jpg │ │ ├── firefox-oct-2013.png │ │ ├── firefox-os-emulator.jpg │ │ ├── firefoxos.png │ │ ├── flathead.png │ │ ├── foxkeh-android.png │ │ ├── fxosvideos.jpg │ │ ├── fxoswiki.jpg │ │ ├── hacksblog.jpg │ │ ├── hobbes-earth.jpg │ │ ├── inspector.png │ │ ├── keep-calm-and-trust-html5.jpg │ │ ├── marketplace.jpg │ │ ├── mobiletools.png │ │ ├── network-details.png │ │ ├── network.png │ │ ├── nokia-photos.jpg │ │ ├── phonegapdiagram.png │ │ ├── pick-activity.jpg │ │ ├── profiler.png │ │ ├── reflow.mp4 │ │ ├── reflow.webm │ │ ├── remote-debugging-overview.png │ │ ├── responsive.mp4 │ │ ├── responsive.webm │ │ ├── scratchpad.png │ │ ├── simulator.png │ │ ├── simulator40.png │ │ ├── styleeditor.png │ │ └── webapiwiki.png │ ├── mozillaoverview │ │ └── redpanda.jpg │ └── templatedemos │ │ ├── earthphases.gif │ │ ├── high-five.jpg │ │ ├── phones.jpg │ │ ├── smallphones.jpg │ │ ├── wave.mp4 │ │ └── wave.webm ├── scripts │ └── script.js ├── template.html └── themes │ └── mozilla │ ├── fonts │ ├── OpenSans-Bold.eot │ ├── OpenSans-Bold.svg │ ├── OpenSans-Bold.ttf │ ├── OpenSans-Bold.woff │ ├── OpenSans-Bold.woff2 │ ├── OpenSans-BoldItalic.eot │ ├── OpenSans-BoldItalic.svg │ ├── OpenSans-BoldItalic.ttf │ ├── OpenSans-BoldItalic.woff │ ├── OpenSans-BoldItalic.woff2 │ ├── OpenSans-ExtraBold.eot │ ├── OpenSans-ExtraBold.svg │ ├── OpenSans-ExtraBold.ttf │ ├── OpenSans-ExtraBold.woff │ ├── OpenSans-ExtraBold.woff2 │ ├── OpenSans-ExtraBoldItalic.eot │ ├── OpenSans-ExtraBoldItalic.svg │ ├── OpenSans-ExtraBoldItalic.ttf │ ├── OpenSans-ExtraBoldItalic.woff │ ├── OpenSans-ExtraBoldItalic.woff2 │ ├── OpenSans-Light.eot │ ├── OpenSans-Light.svg │ ├── OpenSans-Light.ttf │ ├── OpenSans-Light.woff │ ├── OpenSans-Light.woff2 │ ├── OpenSans-LightItalic.eot │ ├── OpenSans-LightItalic.svg │ ├── OpenSans-LightItalic.ttf │ ├── OpenSans-LightItalic.woff │ ├── OpenSans-LightItalic.woff2 │ ├── OpenSans-Regular.eot │ ├── OpenSans-Regular.svg │ ├── OpenSans-Regular.ttf │ ├── OpenSans-Regular.woff │ ├── OpenSans-Regular.woff2 │ ├── OpenSans-RegularItalic.eot │ ├── OpenSans-RegularItalic.svg │ ├── OpenSans-RegularItalic.ttf │ ├── OpenSans-RegularItalic.woff │ ├── OpenSans-RegularItalic.woff2 │ ├── OpenSans-SemiBold.eot │ ├── OpenSans-SemiBold.svg │ ├── OpenSans-SemiBold.ttf │ ├── OpenSans-SemiBold.woff │ ├── OpenSans-SemiBold.woff2 │ ├── OpenSans-SemiBoldItalic.eot │ ├── OpenSans-SemiBoldItalic.svg │ ├── OpenSans-SemiBoldItalic.ttf │ ├── OpenSans-SemiBoldItalic.woff │ ├── OpenSans-SemiBoldItalic.woff2 │ ├── TargetBlank.otf │ └── TargetBlank.svg │ ├── images │ ├── Fx-logo.png │ ├── bg-blue-2.png │ ├── bg-darkgrey-2.png │ ├── bg-red-2.png │ ├── bg-sandstone-2.png │ ├── mozilla-logo-white.png │ ├── mozilla-logo.png │ └── tab-2.png │ └── styles │ ├── fonts.css │ ├── print.css │ ├── reset.css │ └── style.css ├── mozilla-sandstone-1280-1.key ├── mozilla-sandstone-1280.key ├── mozilla-sandstone-1280.key.zip └── mozilla-sandstone-1280.ppt.zip /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | end_of_line = lf 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Mozilla presentation templates 2 | ============================== 3 | 4 | This is the repository with Mozilla styled presentation templates in PPT, Keynote and HTML format. 5 | 6 | There is a screencast showing how to use the Mozilla Evangelism Reps HTML5 slidedeck on YouTube: https://www.youtube.com/watch?v=M_9hf9joTcQ 7 | 8 | Changes in this version: 9 | 10 | * Firefox OS pick and mix overview deck (firefox-os-pick-and-mix.html) 11 | * Fullscreen button (as requested by Stormy Peters) 12 | * Overall cleanup of the CSS (different list styles, live CSS code) 13 | * Pressing "N" in fullscreen mode toggles note display 14 | * In list mode, each slide has a "x" button to turn it on and off. This does not persist though, so when you reload your slides, it will make them all active again (TODO I guess) 15 | * Support for multilingual slides, with URLs that update. Toggle the menu option to get the text in your desired language. (only in HTML5 slidedeck) 16 | 17 | Next steps: 18 | 19 | * Persist Toggle slides feature 20 | -------------------------------------------------------------------------------- /html5/firefox-os-pick-and-mix.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 13 | 14 | 15 | Your talk title here 16 | 21 | 22 | 23 | 50 | 51 | 52 | 53 |
54 |

Your talk title here

55 | 60 |
61 | 68 | 69 | 74 | 75 |
76 |
77 |
78 |

The cover slide

79 |
80 | High-five at the Mozilla Festival! 83 | 86 | 89 |
90 |
91 | 92 | 93 | 94 | 97 | 98 |
99 |
100 |
101 |

Firefox OS

102 |
103 | 105 |
106 |
107 | 108 |
109 |
110 |
111 |

Firefox OS

112 |
113 |
    114 |
  • Firefox OS is the only fully open mobile operating system based on web standards
  • 115 |
  • It is aimed at markets that don't have access to the current leading operating systems
  • 116 |
  • It is fully web based, there is no native layer. Both the operating system and apps for it are written in HTML5. The hardware access happens via a Linux core that is the same that powers Android
  • 117 |
  • HTML5 is a first class citizen in Firefox OS - it is the OS that keeps the promises others gave us some years ago (No SDK needed)
  • 118 |
  • All you need to know to write an app for Firefox OS is to know HTML5
  • 119 |
  • Firefox OS is live - we have end user phones being sold in Spain, Poland, Venezuela and Columbia
  • 120 |
121 | 123 |
124 |
125 | 126 |
127 |
128 |
129 |

Firefox OS

130 |
131 | Firefox OS 134 | 137 |
138 |
139 | 140 |
141 |
142 |
143 |

The mobile platform HTML5 deserves

144 |
145 | Keep calm and trust HTML5 148 | 151 |
152 |
153 | 154 |
155 |
156 |
157 |

Predictable browser support

158 |
159 | firefox 162 | 165 |
166 |
167 | 168 |
169 |
170 |
171 |

A new market

172 |
173 | World wide web 176 | 179 |
180 |
181 | 182 |
183 |
184 |
185 |

Upgrading the mobile world

186 |
187 |
188 | Nokia couldn't take photos 191 |
192 |
    193 |
  • Targeted at new, emerging markets
  • 194 |
  • Very affordable hardware
  • 195 |
  • No credit card needed - client billing
  • 196 |
  • Web technologies through and through
  • 197 |
  • 18 mobile partners, 4 hardware partners
  • 198 |
199 | 202 |
203 |
204 | 205 |
206 |
207 |
208 |

Everything in the OS is open web technology and standard proposals

209 |
210 | firefox os emulator and source 213 | 216 |
217 |
218 | 219 | 222 | 223 |
224 |
225 |
226 |

Open Web Apps

227 |
228 | 230 |
231 |
232 | 233 |
234 |
235 |
236 |

Apps

237 |
238 | Firefox OS apps 240 |

241 | What makes a great app? 242 |

243 | 246 |
247 |
248 | 249 |
250 |
251 |
252 |

Firefox OS Apps?

253 |
254 |
    255 |
  • Apps for Firefox OS are HTML5 apps with an extra manifest file
  • 256 |
  • The manifest defines the extra access to hardware you require, the icons and the location of your code
  • 257 |
  • They are secured by a three layer security model allowing more or less access depending on the location of the app (hosted vs. delivered from the marketplace)
  • 258 |
  • They work offline and work across other platforms (when converted)
  • 259 |
  • You can find and install them either from the web or the marketplace
  • 260 |
261 | 263 |
264 |
265 | 266 |
267 |
268 |
269 |

Defined by manifest

270 |
271 |
 272 |         {
 273 |           "name": "My App",
 274 |           "description": "My elevator pitch goes here",
 275 |           "launch_path": "/",
 276 |           "icons": { "128": "/img/icon-128.png" },
 277 |           "developer": {
 278 |             "name": "Your name or organization",
 279 |             "url": "http://your-homepage-here.org"
 280 |           }
 281 |         }
 282 |       
283 |

App manifest

284 | 287 |
288 |
289 | 290 |
291 |
292 |
293 |

Three levels of access…

294 |
295 |
    296 |
  • Hosted apps - stored on your server, easy to upgrade, limited access.
  • 297 |
  • Privileged apps - reviewed by the App store, packaged and signed
  • 298 |
  • Certified apps - part of the OS, only by Mozilla and partners
  • 299 |
300 |

App permissions

301 | 304 |
305 |
306 | 307 |
308 |
309 |
310 |

Install apps from the web

311 |
312 |
 313 |         var installapp = navigator.mozApps.install(manifestURL);
 314 |         installapp.onsuccess = function(data) {
 315 |           // App is installed
 316 |         };
 317 |         installapp.onerror = function() {
 318 |          // App wasn't installed, info is in 
 319 |          // installapp.error.name
 320 |         };
 321 |         
322 | 325 |
326 |
327 | 328 | 329 | 332 | 333 |
334 |
335 |
336 |

WebAPIs

337 |
338 | 340 |
341 |
342 | 343 |
344 |
345 |
346 |

Web APIs

347 |
348 | WebAPI wiki 349 |

350 | WebAPI Wiki 351 |

352 | 355 |
356 |
357 | 358 |
359 |
360 |
361 |

Web APIs

362 |
363 |
    364 |
  • Open API specifications to access the hardware of devices
  • 365 |
  • Created with and submitted to standards bodies and other browser makers
  • 366 |
  • A plain vanilla JavaScript way to interact with the device
  • 367 |
  • Event driven - every access has a success and failure handler with full insight into what went wrong
  • 368 |
  • Secured by a three layer security model allowing more or less access depending on the location of the app (hosted vs. delivered from the marketplace)
  • 369 |
370 |

371 | WebAPI Wiki 372 |

373 | 376 |
377 |
378 | 379 |
380 |
381 |
382 |

Web APIs (hosted apps)

383 |
384 |
    385 |
  • Vibration API
  • 386 |
  • Screen Orientation
  • 387 |
  • Geolocation API
  • 388 |
  • Mouse Lock API
  • 389 |
  • Open WebApps
  • 390 |
  • Network Information API
  • 391 |
  • Battery Status API
  • 392 |
  • Alarm API
  • 393 |
  • Push Notifications API
  • 394 |
  • WebFM API / FMRadio
  • 395 |
  • WebPayment
  • 396 |
  • IndexedDB
  • 397 |
  • Ambient light sensor
  • 398 |
  • Proximity sensor
  • 399 |
  • Notification
  • 400 |
401 |

402 | Using WebAPIs to make the web layer more capable 403 |

404 | 407 |
408 |
409 | 410 |
411 |
412 |
413 |

Battery API

414 |
415 |
 416 |           var b = navigator.battery;
 417 |           if (b) {
 418 |             var level = Math.round(b.level * 100) + "%",
 419 |                 charging = (b.charging) ? "" : "not ",
 420 |                 chargeTime = parseInt(b.chargingTime / 60, 10),
 421 |                 dischargeTime = parseInt(b.dischargingTime/60,10);
 422 |             b.addEventListener("levelchange", show);
 423 |             b.addEventListener("chargingchange", show);
 424 |             b.addEventListener("chargingtimechange", show);
 425 |             b.addEventListener("dischargingtimechange", show);
 426 |           }
 427 |         
428 | 431 |
432 |
433 | 434 |
435 |
436 |
437 |

Web APIs (privileged apps)

438 |
439 |
    440 |
  • Device Storage API
  • 441 |
  • Browser API
  • 442 |
  • TCP Socket API
  • 443 |
  • Contacts API
  • 444 |
  • systemXHR
  • 445 |
446 |

447 | Using WebAPIs to make the web layer more capable 448 |

449 | 452 |
453 |
454 | 455 |
456 |
457 |
458 |

Contacts API

459 |
460 |
 461 |           var contact = new mozContact();
 462 |           contact.init({name: "Christian"});
 463 |           var request = navigator.mozContacts.save(contact);
 464 |           request.onsuccess = function() {
 465 |             // contact generated
 466 |           };
 467 |           request.onerror = function() {
 468 |             // contact generation failed
 469 |           };
 470 |         
471 | 474 |
475 |
476 | 477 |
478 |
479 |
480 |

Web APIs (certified apps)

481 |
482 |
    483 |
  • WebTelephony
  • 484 |
  • WebSMS
  • 485 |
  • Idle API
  • 486 |
  • Settings API
  • 487 |
  • Power Management API
  • 488 |
  • Mobile Connection API
  • 489 |
  • WiFi Information API
  • 490 |
  • WebBluetooth
  • 491 |
  • Permissions API
  • 492 |
  • Network Stats API
  • 493 |
  • Camera API
  • 494 |
  • Time/Clock API
  • 495 |
  • Attention screen
  • 496 |
  • Voicemail
  • 497 |
498 |

499 | Using WebAPIs to make the web layer more capable 500 |

501 | 504 |
505 |
506 | 507 | 510 | 511 |
512 |
513 |
514 |

Web Activities

515 |
516 | 518 |
519 |
520 | 521 |
522 |
523 |
524 |

Web Activities

525 |
526 |
    527 |
  • A proposal to get access to hardware by keeping the user in control instead of authenticating on their behalf
  • 528 |
  • Comparable to Android Intents, but with a more limited scope that makes sense for the web
  • 529 |
  • A technique to create an ecosystem of apps on the device - apps can register as handlers for certain tasks and other apps use them
  • 530 |
  • A simple way to get access to hardware and data without needing to package your app and host it from the market
  • 531 |
  • Highly secure as nothing happens without the user initiating it
  • 532 |
533 |

534 | WebActivies Wiki 535 |

536 | 538 |
539 |
540 | 541 |
542 |
543 |
544 |

Web activities

545 |
546 |
    547 |
  • configure
  • 548 |
  • costcontrol
  • 549 |
  • dial
  • 550 |
  • open
  • 551 |
  • pick
  • 552 |
  • record
  • 553 |
  • save-bookmark
  • 554 |
  • share
  • 555 |
  • view
  • 556 |
  • new, f.e type: “websms/sms” or “webcontacts/contact”
  • 557 |
558 | 561 |
562 |
563 | 564 |
565 |
566 |
567 |

Sending a number to the phone

568 |
569 |
 570 |         var call = new MozActivity({
 571 |           name: "dial",
 572 |           data: {
 573 |             number: "+1804100100"
 574 |           }
 575 |         });
 576 |       
577 | 580 |
581 |
582 | 583 |
584 |
585 |
586 |

Get an image from the phone (1/2)

587 |
588 | Pick activity 589 |
 590 |         var getphoto = new MozActivity({
 591 |           name: "pick",
 592 |           data: {
 593 |             type: ["image/png", 
 594 |                    "image/jpg", 
 595 |                    "image/jpeg"]
 596 |           }
 597 |         });
 598 |       
599 | 602 |
603 |
604 | 605 |
606 |
607 |
608 |

Get an image from the phone (2/2)

609 |
610 |
 611 |         getphoto.onsuccess = function () {
 612 |           var img = document.createElement("img");
 613 |           if (this.result.blob.type.indexOf("image") != -1) {
 614 |             img.src = window.URL.createObjectURL(this.result.blob);
 615 |           }
 616 |         };
 617 |         getphoto.onerror = function () { // error
 618 |         };
 619 |       
620 | 623 |
624 |
625 | 626 | 627 | 630 | 631 |
632 |
633 |
634 |

Dynamic app search

635 |
636 | 638 |
639 |
640 | 641 |
642 |
643 |
644 |

Dynamic app search

645 |
646 |
    647 |
  • The search interface of Firefox OS does not only search names of apps and media content on your device
  • 648 |
  • Instead, it matches searches with apps by topic.
  • 649 |
  • For example, you can enter a film title and you find apps that deal with movies
  • 650 |
  • These app results are localised to different markets, meaning that you don't find for example Netflix in countries where it isn't available.
  • 651 |
652 | 654 |
655 |
656 | 657 |
658 |
659 |
660 |

Dynamic app search for end users

661 |
662 |
    663 |
  • People don't need to know the name of the app, instead they search what they want to find
  • 664 |
  • Apps are real "try before you buy": clicking an icon in the result list will open the mobile optimised web version of the app directly. No need to download, install and discard.
  • 665 |
  • Once people are happy with trying the app they can long-tap to install the app and get all the open web app benefits
  • 666 |
  • You can use apps once and never have to see them again - no clogging up of your device
  • 667 |
668 | 670 |
671 |
672 | 673 |
674 |
675 |
676 |

Dynamic app search for developers

677 |
678 |
    679 |
  • Your app gets found by what it does, not by its name or the expensive advertising you have to put into it.
  • 680 |
  • The mobile optimised HTML5 version of your app is your ad – nothing gets wasted
  • 681 |
  • You get users quickly to trying out the app without having to download and install it
  • 682 |
  • You can become the first and most important local app for a certain topic without having to beat others in a closed marketplace
  • 683 |
684 | 686 |
687 |
688 | 689 |
690 |
691 |
692 |

Use-case to app

693 |
694 | The search interface of Firefox OS 698 | 700 |
701 |
702 | 703 |
704 |
705 |
706 |

Use-case to app

707 |
708 | 712 | 714 |
715 |
716 | 717 | 720 | 721 |
722 |
723 |
724 |

Tools

725 |
726 | 728 |
729 |
730 | 731 |
732 |
733 |
734 |

Tools for Firefox OS / HTML5

735 |
736 |
    737 |
  • Unlike iOS and Android, there is no fixed SDK or set of IDEs/tools for Firefox OS.
  • 738 |
  • Firefox OS apps are HTML5 apps, and we never had one definite set of tools for writing HTML
  • 739 |
  • That said, there are some things to make your life easier and get you started more quickly
  • 740 |
  • A lot of them come with the browser, or as add-ons to the browser. That way you can use the computer you are comfortable with to develop code
  • 741 |
  • You do not need a Firefox OS device to get started – you might need one though to do interaction/performance testing
  • 742 |
  • This is an ongoing thing – more tools to come :)
  • 743 |
744 | 746 |
747 |
748 | 749 |
750 |
751 |
752 |

Tools for Firefox OS / HTML5

753 |
754 |
    755 |
  • Mozilla has a few things brewing in the tools space
  • 756 |
  • Make sure you show the developer tools in Firefox (NOT, I repeat NOT Firebug) and the responsive view which allows you to resize the canvas of the browser to phone size
  • 757 |
  • Show the simulator live, change some of the CSS to show that apps are just like web sites
  • 758 |
  • Point to the following resizes, make sure to tell people that the OS components are for Gaia - not for any app out there.
  • 759 |
760 | 762 |
763 |
764 | 765 |
766 |
767 |
768 |

Browsers are editors

769 |
770 | Developer tools 773 | 776 |
777 |
778 | 779 | 780 |
781 |
782 |
783 |

Firefox Developer tools

784 |
785 |
    786 |
  • Developer tools are built into Firefox and provide a lot of the functionality that traditionally people needed to download and install Firebug for.
  • 787 |
  • The developer tools are designed as a toolbox of different features for specialist use cases - not a kitchen sink approach of adding all features into one, crammed interface
  • 788 |
  • This allows our developer tools to evolve without becoming overwhelming - not every developer needs the same features!
  • 789 |
790 | 792 |
793 |
794 | 795 |
796 |
797 |
798 |

Basic developer tools features

799 |
800 | Developer tools 803 | 812 |
813 |
814 | 815 |
816 |
817 |
818 |

Console

819 |
820 | Developer tools console 823 |

Web Console Docs - Web Console tutorial on YouTube

824 | 827 |
828 |
829 | 830 |
831 |
832 |
833 |

Inspector

834 |
835 | Developer tools inspector 838 |

Page inspector Docs

839 | 842 |
843 |
844 | 845 |
846 |
847 |
848 |

Debugger

849 |
850 | Developer tools debugger 853 |

Debugger Docs - Debugger tutorial on YouTube

854 | 857 |
858 |
859 | 860 |
861 |
862 |
863 |

Debugger in action (Jason fill this!)

864 |
865 | 869 | 871 |
872 |
873 | 874 |
875 |
876 |
877 |

Style Editor

878 |
879 | Developer tools styleeditor 882 |

Style Editor Docs - Style editor tutorial on YouTube

883 | 886 |
887 |
888 | 889 |
890 |
891 |
892 |

Network

893 |
894 | Developer tools network 897 |

Network Monitor Docs

898 | 901 |
902 |
903 | 904 |
905 |
906 |
907 |

Network request details

908 |
909 | Developer tools network details 912 | 915 |
916 |
917 | 918 |
919 |
920 |
921 |

Advanced developer tools features

922 |
923 | Developer tools 926 | 935 |
936 |
937 | 938 |
939 |
940 |
941 |

Profiler

942 |
943 | Developer tools profiler 946 |

Profiler Docs

947 | 950 |
951 |
952 | 953 |
954 |
955 |
956 |

Profiler in action (Jason fill this!)

957 |
958 | 962 | 964 |
965 |
966 | 967 |
968 |
969 |
970 |

Highlight repainted area

971 |
972 | 976 |

Repaint Highlighter Docs

977 | 980 |
981 |
982 | 983 |
984 |
985 |
986 |

Scratchpad

987 |
988 | Developer tools scratchpad 991 |

Scratchpad Documentation - Scratchpad lecture on YouTube

992 | 995 |
996 |
997 | 998 |
999 |
1000 |
1001 |

Scratchpad in action (Jason fill this!)

1002 |
1003 | 1007 | 1009 |
1010 |
1011 | 1012 |
1013 |
1014 |
1015 |

Responsive view

1016 |
1017 | 1021 |

Responsive View Docs

1022 | 1025 |
1026 |
1027 | 1028 |
1029 |
1030 |
1031 |

3D DOM view

1032 |
1033 | 1037 | 1040 |
1041 |
1042 | 1043 | 1044 |
1045 |
1046 |
1047 |

Mobile/App specific developer tools

1048 |
1049 | Mobile tools 1052 | 1059 |
1060 |
1061 | 1062 |
1063 |
1064 |
1065 |

Remote debugging of mobile devices

1066 |
1067 | Mobile tools 1070 |

Remote debugging in Firefox

1071 | 1074 |
1075 |
1076 | 1077 |
1078 |
1079 |
1080 |

Firefox OS Simulator

1081 |
1082 | Simulator 1085 |

1086 | 1087 | Firefox OS Simulator 1088 | 1089 |

1090 | 1093 |
1094 |
1095 | 1096 |
1097 |
1098 |
1099 |

App Manager

1100 |
1101 | 1105 |

1106 | 1107 | Using the App Manager 1108 | 1109 |

1110 | 1113 |
1114 |
1115 | 1116 |
1117 |
1118 |
1119 |

Prototyping with JSFiddle

1120 |
1121 |
    1122 |
  1. Write your code as you might normally when making a JSFiddle 1123 |
  2. 1124 |
  3. Append /webapp.manifest to your Fiddle URL and paste this link into the Firefox OS simulator to install the app
  4. 1125 |
  5. Alternatively, append /fxos.html to your Fiddle URL to get an install page like a typical Firefox OS hosted application
  6. 1126 |
1127 |

1128 | 1129 | Using JSFiddle to prototype Firefox OS Apps 1130 | 1131 |

1132 | 1135 |
1136 |
1137 | 1138 | 1139 |
1140 |
1141 |
1142 |

Firefox OS UI components

1143 |
1144 | Building Firefox OS 1147 |

1148 | Building FirefoxOS 1149 |

1150 | 1153 |
1154 |
1155 | 1156 |
1157 |
1158 |
1159 |

Firefox OS Building blocks

1160 |
1161 | Firefox OS UI components 1165 |

1166 | FirefoxOS edit mode 1167 |

1168 | 1171 |
1172 |
1173 | 1174 |
1175 |
1176 |
1177 |

Mozilla Brick

1178 |
1179 | Mozilla Brick 1182 |

1183 | BrickIntroducing Brick 1184 |

1185 | 1188 |
1189 |
1190 | 1191 |
1192 |
1193 |
1194 |

Web Activities Boiler Plate

1195 |
1196 | Firefox OS Boiler Plate 1199 |

1200 | Firefox OS Boiler Plate app 1201 |

1202 | 1205 |
1206 |
1207 | 1208 | 1209 | 1210 |
1211 |
1212 |
1213 |

Conversion of HTML5 to native code

1214 |
1215 | Phonegap 1218 |

1219 | http://build.phonegap.com/ 1220 |

1221 | 1224 |
1225 |
1226 | 1227 | 1230 | 1231 |
1232 |
1233 |
1234 |

Resources

1235 |
1236 | 1238 |
1239 |
1240 | 1241 |
1242 |
1243 |
1244 |

Resources to talk about

1245 |
1246 | 1254 | 1256 |
1257 |
1258 | 1259 |
1260 |
1261 |
1262 |

Firefox OS overview

1263 |
1264 | Firefox OS for end users 1267 |

1268 | http://www.mozilla.org/en-US/firefox/os/ 1269 |

1270 | 1273 |
1274 |
1275 | 1276 |
1277 |
1278 |
1279 |

Firefox OS Marketplace

1280 |
1281 | Firefox OS Marketplace 1283 |

1284 | https://marketplace.firefox.com/ 1285 |

1286 | 1289 |
1290 |
1291 | 1292 |
1293 |
1294 |
1295 |

Developer Hub

1296 |
1297 | Developer Hub 1299 |

1300 | https://marketplace.firefox.com/developers/ 1301 |

1302 | 1305 |
1306 |
1307 | 1308 |
1309 |
1310 |
1311 |

Hacks Blog

1312 |
1313 | Hacks Blog 1315 |

1316 | https://hacks.mozilla.org/category/firefox-os/ 1317 |

1318 | 1321 |
1322 |
1323 | 1324 |
1325 |
1326 |
1327 |

Firefox OS video series

1328 |
1329 | Firefox OS Video Series 1332 |

1333 | https://hacks.mozilla.org/category/videoseries/ 1334 |

1335 | 1338 |
1339 |
1340 | 1341 |
1342 |
1343 |
1344 |

Firefox OS Wiki

1345 |
1346 | Firefox OS Wiki 1348 |

1349 | https://developer.mozilla.org/en/docs/Mozilla/Firefox_OS 1350 |

1351 | 1354 |
1355 |
1356 | 1357 | 1358 | 1359 | 1360 | 1363 | 1364 |
1365 |
1366 |
1367 |

Thanks

1368 |
1369 | Red panda (Firefox) 1370 |
    1371 |
  • {name}
  • 1372 |
  • {title}
  • 1373 |
  • {@twitter}
  • 1374 |
  • Slides: {slideurl}
  • 1375 |
1376 | 1377 | Photo by Yortw 1378 | 1379 | 1380 | 1382 | 1383 |
1384 |
1385 | 1386 | 1390 |
1391 | 1392 | 1393 | 1394 | -------------------------------------------------------------------------------- /html5/firefox-os-pick-and-mix_es.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 11 | 12 | 13 | El título de tu charla va aquí 14 | 17 | 18 | 19 | 46 | 47 | 48 | 49 |
50 |

El título de tu charla va aquí

51 | 56 |
57 | 64 | 65 | 68 | 69 |
70 |
71 |
72 |

La tapa

73 |
74 | High-five at the Mozilla Festival! 77 | 80 | 83 |
84 |
85 | 86 | 87 | 88 | 91 | 92 |
93 |
94 |
95 |

Firefox OS

96 |
97 | 99 |
100 |
101 | 102 |
103 |
104 |
105 |

Firefox OS

106 |
107 |
    108 |
  • Firefox OS es el único sistema operativo móvil completamente abierto basado en estándares web
  • 109 |
  • Está pensado para mercados que no tengan acceso a los sistemas operativos líderes actuales
  • 110 |
  • Está basado completamanete en la Web, no hay una capa nativa. Tanto el sistema operativo como las aplicaciones estás escritas en HTML5. El acceso al hardware ocurre a través de un núcleo Linux que es el mismo que utiliza Android
  • 111 |
  • HTML5 es un ciudadano de primera clase en Firefox OS, es el único SO que mantiene la promesa que otros dieron años atrás (No se necesita SDK)
  • 112 |
  • Todo lo que necesitas saber para crear una aplicación para Firefox OS es conocer HTML5
  • 113 |
  • Firefox OS es una realidad, tenemos teléfonos vendidos en España, Polonia, Venezuela y Colombia
  • 114 |
115 | 117 |
118 |
119 | 120 |
121 |
122 |
123 |

Firefox OS

124 |
125 | Firefox OS 128 | 131 |
132 |
133 | 134 |
135 |
136 |
137 |

La plataforma móvil que HTML5 merece

138 |
139 | Keep calm and trust HTML5 142 | 145 |
146 |
147 | 148 |
149 |
150 |
151 |

Soporte del navegador predecible

152 |
153 | firefox 156 | 159 |
160 |
161 | 162 |
163 |
164 |
165 |

Un nuevo mercado

166 |
167 | World wide web 170 | 173 |
174 |
175 | 176 |
177 |
178 |
179 |

Mejorando el mundo móvil

180 |
181 |
182 | Nokia couldn't take photos 185 |
186 |
    187 |
  • Enfocado a mercados emergentes y nuevos
  • 188 |
  • Hardware muy accesible
  • 189 |
  • No se necesita tarjeta de crédito, se paga con la factura
  • 190 |
  • Tecnologías web por todos lados
  • 191 |
  • 18 telefónicas asociadas, 4 fabricantes asociados
  • 192 |
193 | 196 |
197 |
198 | 199 |
200 |
201 |
202 |

Todo lo que forma parte del SO es tecnología web abierta y propuesto para estándar

203 |
204 | firefox os emulator and source 207 | 210 |
211 |
212 | 213 | 216 | 217 |
218 |
219 |
220 |

Aplicaciones de la Web abierta

221 |
222 | 224 |
225 |
226 | 227 |
228 |
229 |
230 |

Aplicaciones

231 |
232 | Firefox OS apps 234 |

235 | ¿Qué hace que una aplicación sea genial? 236 |

237 | 240 |
241 |
242 | 243 |
244 |
245 |
246 |

¿Aplicaciones Firefox OS?

247 |
248 |
    249 |
  • Las aplicaciones de Firefox OS son aplicaciones de HTML5 con un archivo extra de manifiesto
  • 250 |
  • El manifiesto define el acceso al hardware que necesitas, los íconos y la ubicación del código
  • 251 |
  • Están resguardados por un modelo de seguridad de tres capas, permitiendo más o menos acceso dependiendo de la ubicación de la aplicación (alojada vs. enviada desde el marketplace)
  • 252 |
  • Funcionan cuando no tienes conexión y funcionan a través de otras plataformas (cuando se preparan para eso)
  • 253 |
  • Puedes encontrarlas e instalarlas desde la web o desde el marketplace
  • 254 |
255 | 257 |
258 |
259 | 260 |
261 |
262 |
263 |

Definido en el manifiesto

264 |
265 |
 266 |         {
 267 |           "name": "Mi Aplicación",
 268 |           "description": "La descripción del uso",
 269 |           "launch_path": "/",
 270 |           "icons": { "128": "/img/icon-128.png" },
 271 |           "developer": {
 272 |             "name": "Tu nombre u organización",
 273 |             "url": "http://your-homepage-here.org"
 274 |           }
 275 |         }
 276 |       
277 |

Manifiesto de la App

278 | 281 |
282 |
283 | 284 |
285 |
286 |
287 |

Tres niveles de acceso…

288 |
289 |
    290 |
  • Aplicaciones alojadas - guardadas en tu servidor, fácil de actualizar, acceso limitado.
  • 291 |
  • Aplicaciones privilegiadas - revisadas por el marketplace, empaquetadas y firmadas
  • 292 |
  • Aplicaciones certificadas - parte del SO, solo de Mozilla y asociados
  • 293 |
294 |

App permissions

295 | 298 |
299 |
300 | 301 |
302 |
303 |
304 |

Instalar aplicaciones desde la Web

305 |
306 |
 307 |         var installapp = navigator.mozApps.install(manifestURL);
 308 |         installapp.onsuccess = function(data) {
 309 |           // La aplicación está instalada
 310 |         };
 311 |         installapp.onerror = function() {
 312 |          // La aplicación no está instalada, la información está en 
 313 |          // installapp.error.name
 314 |         };
 315 |         
316 | 319 |
320 |
321 | 322 | 323 | 326 | 327 |
328 |
329 |
330 |

WebAPIs

331 |
332 | 334 |
335 |
336 | 337 |
338 |
339 |
340 |

Web APIs

341 |
342 | WebAPI wiki 343 |

344 | Wiki de las WebAPI 345 |

346 | 349 |
350 |
351 | 352 |
353 |
354 |
355 |

Web APIs

356 |
357 |
    358 |
  • Una especificación abierta para acceder al hardware de los dispositivos
  • 359 |
  • Creadas con y enviadas a los estándares y otros desarrolladores de navegadores
  • 360 |
  • Una forma de interactuar a través de JavaScript con el dispositivo
  • 361 |
  • A través de eventos - cada acceso tiene un manejador de éxito o fracaso con un informe completo para saber qué salió mal
  • 362 |
  • Protegido con un modelo de seguridad de tres capas que permite mayor o menor acceso dependiendo de la ubicación de la aplicación (alojada vs. brindada por el marketplace)
  • 363 |
364 |

365 | Wiki de las WebAPI 366 |

367 | 370 |
371 |
372 | 373 |
374 |
375 |
376 |

Web APIs (aplicaciones alojadas)

377 |
378 |
    379 |
  • API vibración
  • 380 |
  • Orientación de la pantalla
  • 381 |
  • Geolocalización API
  • 382 |
  • Control del mouse API
  • 383 |
  • WebApps abiertas
  • 384 |
  • Información de la red API
  • 385 |
  • Estado de la batería API
  • 386 |
  • Alarma API
  • 387 |
  • Envio de notificaciones API
  • 388 |
  • WebFM API / FMRadio
  • 389 |
  • Pagos por Web
  • 390 |
  • IndexedDB
  • 391 |
  • Sensor de luz ambiente
  • 392 |
  • Sensor de proximidad
  • 393 |
  • Notificaciones
  • 394 |
395 |

396 | Usar WebAPIs para hacer ampliar la capacidad de la capa web 397 |

398 | 401 |
402 |
403 | 404 |
405 |
406 |
407 |

Batería API

408 |
409 |
 410 |           var b = navigator.battery;
 411 |           if (b) {
 412 |             var level = Math.round(b.level * 100) + "%",
 413 |                 charging = (b.charging) ? "" : "not ",
 414 |                 chargeTime = parseInt(b.chargingTime / 60, 10),
 415 |                 dischargeTime = parseInt(b.dischargingTime/60,10);
 416 |             b.addEventListener("levelchange", show);
 417 |             b.addEventListener("chargingchange", show);
 418 |             b.addEventListener("chargingtimechange", show);
 419 |             b.addEventListener("dischargingtimechange", show);
 420 |           }
 421 |         
422 | 425 |
426 |
427 | 428 |
429 |
430 |
431 |

Web APIs (aplicaciones privilegiadas)

432 |
433 |
    434 |
  • Memoria del dispositivo API
  • 435 |
  • Navegador API
  • 436 |
  • TCP Socket API
  • 437 |
  • Contactos API
  • 438 |
  • systemXHR
  • 439 |
440 |

441 | Usar WebAPIs para hacer ampliar la capacidad de la capa web 442 |

443 | 446 |
447 |
448 | 449 |
450 |
451 |
452 |

Contactos API

453 |
454 |
 455 |           var contact = new mozContact();
 456 |           contact.init({name: "Christian"});
 457 |           var request = navigator.mozContacts.save(contact);
 458 |           request.onsuccess = function() {
 459 |             // contact generated
 460 |           };
 461 |           request.onerror = function() {
 462 |             // contact generation failed
 463 |           };
 464 |         
465 | 468 |
469 |
470 | 471 |
472 |
473 |
474 |

Web APIs (aplicaciones certificadas)

475 |
476 |
    477 |
  • WebTelephony
  • 478 |
  • WebSMS
  • 479 |
  • Espera API
  • 480 |
  • Opciones API
  • 481 |
  • Adminstración de energía API
  • 482 |
  • Conexión móvil API
  • 483 |
  • Información WiFi API
  • 484 |
  • WebBluetooth
  • 485 |
  • Permisos API
  • 486 |
  • Estadísticas de red API
  • 487 |
  • Cámara API
  • 488 |
  • Fecha/Reloj API
  • 489 |
  • Atención de la pantalla
  • 490 |
  • Correo de voz
  • 491 |
492 |

493 | Usar WebAPIs para hacer ampliar la capacidad de la capa web 494 |

495 | 498 |
499 |
500 | 501 | 504 | 505 |
506 |
507 |
508 |

Web Activities

509 |
510 | 512 |
513 |
514 | 515 |
516 |
517 |
518 |

Web Activities

519 |
520 |
    521 |
  • Una propuesta para tener acceso al hardware manteniendo al usuario con el control en lugar de autentificar en su nombre
  • 522 |
  • Comparabl e a Android Intents, pero con un horizonte más limitado que tiene más sentido en la web
  • 523 |
  • Una técnica para crear un ecosistema de aplicaciones en el dispositivo, las aplicaciones pueden registrarse como con la posibilidad de brindar ciertas tareas y otras aplicaciones pueden usarlas
  • 524 |
  • Una forma simpre de acceder al hardware e información sin tener que empaquetar tu aplicación y enviarla al marketplace
  • 525 |
  • Muy seguro ya que no sucede nada sin que el usuario lo inicie
  • 526 |
527 |

528 | WebActivies Wiki 529 |

530 | 532 |
533 |
534 | 535 |
536 |
537 |
538 |

Web activities

539 |
540 |
    541 |
  • configure
  • 542 |
  • costcontrol
  • 543 |
  • dial
  • 544 |
  • open
  • 545 |
  • pick
  • 546 |
  • record
  • 547 |
  • save-bookmark
  • 548 |
  • share
  • 549 |
  • view
  • 550 |
  • new, p.e type: “websms/sms” o “webcontacts/contact”
  • 551 |
552 | 555 |
556 |
557 | 558 |
559 |
560 |
561 |

Enviar un número al teléfono

562 |
563 |
 564 |         var call = new MozActivity({
 565 |           name: "dial",
 566 |           data: {
 567 |             number: "+1804100100"
 568 |           }
 569 |         });
 570 |       
571 | 574 |
575 |
576 | 577 |
578 |
579 |
580 |

Obtener una imagen del teléfono (1/2)

581 |
582 | Pick activity 583 |
 584 |         var getphoto = new MozActivity({
 585 |           name: "pick",
 586 |           data: {
 587 |             type: ["image/png", 
 588 |                    "image/jpg", 
 589 |                    "image/jpeg"]
 590 |           }
 591 |         });
 592 |       
593 | 596 |
597 |
598 | 599 |
600 |
601 |
602 |

Obtener una imagen del teléfono (2/2)

603 |
604 |
 605 |         getphoto.onsuccess = function () {
 606 |           var img = document.createElement("img");
 607 |           if (this.result.blob.type.indexOf("image") != -1) {
 608 |             img.src = window.URL.createObjectURL(this.result.blob);
 609 |           }
 610 |         };
 611 |         getphoto.onerror = function () { // error
 612 |         };
 613 |       
614 | 617 |
618 |
619 | 620 |
621 |
622 |
623 |

Activities y aplicaciones alojadas en Android

624 |
625 |
626 | Foxkeh loves android 628 |
629 | 632 |
633 |
634 | 635 | 638 | 639 |
640 |
641 |
642 |

Búsqueda dinámica de aplicaciones

643 |
644 | 646 |
647 |
648 | 649 |
650 |
651 |
652 |

Búsqueda dinámica de aplicaciones

653 |
654 |
    655 |
  • La interfaz de búsqeuda de Firefox OS no solo busca nombres de aplicaciones o contenido en tu dispositivo
  • 656 |
  • También busca coincidencias con aplicaciones por temática.
  • 657 |
  • Por ejemplo, puedes escribir el título de una película y encontrarás aplicaciones relacionadas con películas
  • 658 |
  • Estos resultados de aplicaciones están preparados para diferentes mercados, lo que significa que no encontrarás Netflix entre las opciones, si no está dispoinble en tu país.
  • 659 |
660 | 662 |
663 |
664 | 665 |
666 |
667 |
668 |

Búsqueda dinámica de aplicaciones para el usuario

669 |
670 |
    671 |
  • Los usuarios no necesitan saber el nombre de la aplicación, si no que realizan la búsqeuda por lo que les interesa
  • 672 |
  • Las aplicaciones son realmente "probar antes de comprar": al hacer clic en uno de los resultados de la lista abrirá la versión preparada para dispositivos móviles de la aplicación. Sin necesidad de descargar, instalar o desinstalar.
  • 673 |
  • Una vez que el usuario está contento con la aplicación, pueden hacer un clic largo para instalarla y obtener todos los beneficios de una aplicación de la web abierta
  • 674 |
  • El usuario puede usar la aplicación una sola vez, sin que queden registros en el dispositivo
  • 675 |
676 | 678 |
679 |
680 | 681 |
682 |
683 |
684 |

Búsqueda dinámica de aplicaciones para desarrolladores

685 |
686 |
    687 |
  • Tu aplicación se encontrará por lo que haga, no por el nombre o la publicidad cara que puedas haber puesto en ella.
  • 688 |
  • La versión en HTML5 de tu aplicación es tu publicidad, nada se desperdicia
  • 689 |
  • Encuentras usuarios rápidamente que prueban la aplicación sin tener que descargarla ni instalarla
  • 690 |
  • Puedes convertirte en la aplicación local más importante de una temática, sin tener que competir con otros en mercados cerrados
  • 691 |
692 | 694 |
695 |
696 | 697 |
698 |
699 |
700 |

Caso de uso a aplicación

701 |
702 | The search interface of Firefox OS 706 | 708 |
709 |
710 | 711 |
712 |
713 |
714 |

Caso de uso a aplicación

715 |
716 | 720 | 722 |
723 |
724 | 725 | 728 | 729 |
730 |
731 |
732 |

Herramientas

733 |
734 | 736 |
737 |
738 | 739 |
740 |
741 |
742 |

Herramientas para Firefox OS / HTML5

743 |
744 |
    745 |
  • Al contrario de iOS y Android, no hay un SDK o conjunto de IDEs/herramientas para Firefox OS.
  • 746 |
  • Las aplicaciones de Firefox OS son aplicaciones de HTML5, y nunca tendremos un conjunto de herramientas definitivas para escribir HTML
  • 747 |
  • Dicho esto, hay algunas cosas que harán tu vida más fácil y que te permitirán empezar más rápidamente
  • 748 |
  • Muchas de ellas vienen con el navegador, o como complementos del navegador. De esa forma podrás usar la computadora con la que te sientes cómodo para desarrollar el código
  • 749 |
  • No necesitas un un dispositivo con Firefox OS para empezar, posiblemente necesites uno para probar la interacción y el rendimiento
  • 750 |
  • Esto es algo que evoluciona, más herramientas están en camino
  • 751 |
752 | 754 |
755 |
756 | 757 |
758 |
759 |
760 |

Herramientas para Firefox OS / HTML5

761 |
762 |
    763 |
  • Mozilla tiene algunas cosas en el espacio de las herramientas
  • 764 |
  • Asegurate de mostrar las herramientas de desarrollo que se encuentran en Firefox (NO, y repito, NO Firebug) y la vista de modo adaptable que permite cambiar el tamaño del navegador al tamaño del teléfono
  • 765 |
  • Muestra el simulador funcionando, cambai alguno de los CSS para mostrar que las aplicaciones son solo sitios web
  • 766 |
  • Asegurate de comentar que los componentes del SO son para Gaia, no para cualquier aplicación externa.
  • 767 |
768 | 770 |
771 |
772 | 773 |
774 |
775 |
776 |

Los navegadores son editores

777 |
778 | Developer tools 781 | 784 |
785 |
786 | 787 |
788 |
789 |
790 |

Simulador de Firefox OS

791 |
792 | Simulator 795 |

796 | 797 | Simulador de Firefox OS 798 | 799 |

800 | 803 |
804 |
805 | 806 |
807 |
808 |
809 |

Prototipos con JSFiddle

810 |
811 |
    812 |
  1. Escribe tu código como harías normalmente con JSFiddle 813 |
  2. 814 |
  3. Agrega /webapp.manifest a la URL del Fiddle y pega el enlace en el simulador de Firefox OS para instalar la aplicación
  4. 815 |
  5. También puedes agregar /fxos.html a la URL del Fiddle para obtener una página de instalación como tendrías con una típica aplicación alojada de Firefox OS
  6. 816 |
817 |

818 | 819 | Usar para prototipos de aplicaciones de Firefox OS 820 | 821 |

822 | 825 |
826 |
827 | 828 | 829 |
830 |
831 |
832 |

Componentes de la interfaz de Firefox

833 |
834 | Building Firefox OS 837 |

838 | Crear FirefoxOS 839 |

840 | 843 |
844 |
845 | 846 |
847 |
848 |
849 |

Bloques de Firefox OS

850 |
851 | Firefox OS UI components 855 |

856 | FirefoxOS edit mode 857 |

858 | 861 |
862 |
863 | 864 |
865 |
866 |
867 |

Mozilla Brick

868 |
869 | Mozilla Brick 872 |

873 | BrickPresentamos Brick 874 |

875 | 878 |
879 |
880 | 881 |
882 |
883 |
884 |

Modelo de Web Activities

885 |
886 | Firefox OS Boiler Plate 889 |

890 | Modelo de aplicaciones para Firefox OS 891 |

892 | 895 |
896 |
897 | 898 |
899 |
900 |
901 |

En breve: Mozilla Flathead

902 |
903 | Mozilla Flathead 906 |

907 | 908 | URL de prueba de Flathead 909 | 910 |

911 | 914 |
915 |
916 | 917 |
918 |
919 |
920 |

Conversión de HTML5 a código nativo

921 |
922 | Phonegap 925 |

926 | http://build.phonegap.com/ 927 |

928 | 931 |
932 |
933 | 934 | 937 | 938 |
939 |
940 |
941 |

Recursos

942 |
943 | 945 |
946 |
947 | 948 |
949 |
950 |
951 |

Recursos para comentar

952 |
953 | 961 | 963 |
964 |
965 | 966 |
967 |
968 |
969 |

Vistazo de Firefox OS

970 |
971 | Firefox OS for end users 974 |

975 | http://www.mozilla.org/en-US/firefox/os/ 976 |

977 | 980 |
981 |
982 | 983 |
984 |
985 |
986 |

Firefox OS Marketplace

987 |
988 | Firefox OS Marketplace 990 |

991 | https://marketplace.firefox.com/ 992 |

993 | 996 |
997 |
998 | 999 |
1000 |
1001 |
1002 |

Centro para desarrolladores

1003 |
1004 | Developer Hub 1006 |

1007 | https://marketplace.firefox.com/developers/ 1008 |

1009 | 1012 |
1013 |
1014 | 1015 |
1016 |
1017 |
1018 |

El blog de Hacks

1019 |
1020 | Hacks Blog 1022 |

1023 | https://hacks.mozilla.org/category/firefox-os/ 1024 |

1025 | 1028 |
1029 |
1030 | 1031 |
1032 |
1033 |
1034 |

Serie de videos sobre Firefox OS

1035 |
1036 | Firefox OS Video Series 1039 |

1040 | https://hacks.mozilla.org/category/videoseries/ 1041 |

1042 | 1045 |
1046 |
1047 | 1048 |
1049 |
1050 |
1051 |

El Wiki de Firefox OS

1052 |
1053 | Firefox OS Wiki 1055 |

1056 | https://developer.mozilla.org/en/docs/Mozilla/Firefox_OS 1057 |

1058 | 1061 |
1062 |
1063 | 1064 | 1065 | 1066 | 1067 | 1070 | 1071 |
1072 |
1073 |
1074 |

Gracias

1075 |
1076 | Red panda (Firefox) 1077 |
    1078 |
  • {name}
  • 1079 |
  • {title}
  • 1080 |
  • {@twitter}
  • 1081 |
  • Slides: {slideurl}
  • 1082 |
1083 | 1084 | Photo by Yortw 1085 | 1086 | 1087 | 1089 | 1090 |
1091 |
1092 | 1093 | 1096 |
1097 | 1098 | 1099 | 1100 | -------------------------------------------------------------------------------- /html5/license.txt: -------------------------------------------------------------------------------- 1 | The MIT License 2 | 3 | Copyright © 2010–2012 Vadim Makeev, http://pepelsbey.net/ 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | 23 | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 24 | 25 | Лицензия MIT 26 | 27 | Copyright © 2010–2012 Вадим Макеев, http://pepelsbey.net/ 28 | 29 | Данная лицензия разрешает лицам, получившим копию данного программного обеспечения 30 | и сопутствующей документации (в дальнейшем именуемыми «Программное Обеспечение»), 31 | безвозмездно использовать Программное Обеспечение без ограничений, включая 32 | неограниченное право на использование, копирование, изменение, добавление, 33 | публикацию, распространение, сублицензирование и/или продажу копий 34 | Программного Обеспечения, также как и лицам, которым предоставляется 35 | данное Программное Обеспечение, при соблюдении следующих условий: 36 | 37 | Указанное выше уведомление об авторском праве и данные условия должны быть 38 | включены во все копии или значимые части данного Программного Обеспечения. 39 | 40 | ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, 41 | ЯВНО ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ГАРАНТИЯМИ ТОВАРНОЙ 42 | ПРИГОДНОСТИ, СООТВЕТСТВИЯ ПО ЕГО КОНКРЕТНОМУ НАЗНАЧЕНИЮ И ОТСУТСТВИЯ НАРУШЕНИЙ ПРАВ. 43 | НИ В КАКОМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ПО ИСКАМ 44 | О ВОЗМЕЩЕНИИ УЩЕРБА, УБЫТКОВ ИЛИ ДРУГИХ ТРЕБОВАНИЙ ПО ДЕЙСТВУЮЩИМ КОНТРАКТАМ, 45 | ДЕЛИКТАМ ИЛИ ИНОМУ, ВОЗНИКШИМ ИЗ, ИМЕЮЩИМ ПРИЧИНОЙ ИЛИ СВЯЗАННЫМ С ПРОГРАММНЫМ 46 | ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИЛИ ИНЫМИ ДЕЙСТВИЯМИ 47 | С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ. -------------------------------------------------------------------------------- /html5/mozilla-mission.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {title} 5 | 6 | 7 | 8 | 11 | 12 | 13 | 14 |
15 |

{title}

16 | 17 |
18 | 19 |
20 |
21 |
22 |

{title}

23 |
24 |
{Name}, Mozilla, {event}, {location}, {date}
25 | 27 |
28 |
29 | 30 |
31 |
32 |
33 |

Agenda

34 |
35 |
    36 |
  • Who is Mozilla 37 |
      38 |
    • {your slides}
    • 39 |
    40 |
  • 41 |
  • Conclusion & call to action
  • 42 |
  • Questions and Answers
  • 43 |
44 | 46 |
47 |
48 | 49 |
50 |
51 |
52 |

Mozilla is…

53 |
54 |
55 | a global community of people who believe that openness, innovation, and opportunity are key to the continued health of the Internet. 56 |
57 | 59 |
60 |
61 | 62 |
63 |
64 |
65 |

We’re known for the Firefox Web Browser

66 |
67 | Firefox 68 | 70 |
71 |
72 | 73 |
74 |
75 |
76 |

Mozilla Manifesto

77 |
78 |
    79 |
  • The Internet is a global public resource that must remain open and accessible.
  • 80 |
  • The Internet should enrich the lives of individual human beings.
  • 81 |
  • Individuals' security on the Internet is fundamental and cannot be treated as optional.
  • 82 |
  • Individuals must have the ability to shape their own experiences on the Internet.
  • 83 |
84 | 86 |
87 |
88 | 89 |
90 |
91 |
92 |

Your slides here

93 |
94 |

Your content goes here, 95 | after the Mission intro and the before the call to action & Q&A

96 | 98 |
99 |
100 | 101 |
102 |
103 |
104 |

And now?

105 |
106 | 112 | 114 |
115 |
116 | 117 |
118 |
119 |
120 |

Questions & Answers

121 |
122 | 130 | 132 |
133 |
134 | 135 |
136 |
137 |
138 |

Thanks

139 |
140 |
141 | Red panda (Firefox) 143 |
144 | 151 | 152 | 153 | Photo by Yortw 154 | 155 | 156 | 159 |
160 |
161 | 162 |
163 | 164 | 165 | 166 | -------------------------------------------------------------------------------- /html5/pictures/fxos/3dview.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/3dview.mp4 -------------------------------------------------------------------------------- /html5/pictures/fxos/3dview.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/3dview.webm -------------------------------------------------------------------------------- /html5/pictures/fxos/appmanager.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/appmanager.mp4 -------------------------------------------------------------------------------- /html5/pictures/fxos/appmanager.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/appmanager.webm -------------------------------------------------------------------------------- /html5/pictures/fxos/apps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/apps.png -------------------------------------------------------------------------------- /html5/pictures/fxos/boilerplate.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/boilerplate.jpg -------------------------------------------------------------------------------- /html5/pictures/fxos/brick.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/brick.jpg -------------------------------------------------------------------------------- /html5/pictures/fxos/buildingblocks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/buildingblocks.png -------------------------------------------------------------------------------- /html5/pictures/fxos/buildingfirefoxos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/buildingfirefoxos.png -------------------------------------------------------------------------------- /html5/pictures/fxos/console.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/console.png -------------------------------------------------------------------------------- /html5/pictures/fxos/debugger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/debugger.png -------------------------------------------------------------------------------- /html5/pictures/fxos/devhub.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/devhub.jpg -------------------------------------------------------------------------------- /html5/pictures/fxos/devtools.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/devtools.jpg -------------------------------------------------------------------------------- /html5/pictures/fxos/devtools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/devtools.png -------------------------------------------------------------------------------- /html5/pictures/fxos/dynamicsearch.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/dynamicsearch.mp4 -------------------------------------------------------------------------------- /html5/pictures/fxos/dynamicsearch.ogv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/dynamicsearch.ogv -------------------------------------------------------------------------------- /html5/pictures/fxos/dynamicsearch.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/dynamicsearch.webm -------------------------------------------------------------------------------- /html5/pictures/fxos/enduser-fxos.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/enduser-fxos.jpg -------------------------------------------------------------------------------- /html5/pictures/fxos/everythingme.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/everythingme.jpg -------------------------------------------------------------------------------- /html5/pictures/fxos/firefox-oct-2013.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/firefox-oct-2013.png -------------------------------------------------------------------------------- /html5/pictures/fxos/firefox-os-emulator.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/firefox-os-emulator.jpg -------------------------------------------------------------------------------- /html5/pictures/fxos/firefoxos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/firefoxos.png -------------------------------------------------------------------------------- /html5/pictures/fxos/flathead.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/flathead.png -------------------------------------------------------------------------------- /html5/pictures/fxos/foxkeh-android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/foxkeh-android.png -------------------------------------------------------------------------------- /html5/pictures/fxos/fxosvideos.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/fxosvideos.jpg -------------------------------------------------------------------------------- /html5/pictures/fxos/fxoswiki.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/fxoswiki.jpg -------------------------------------------------------------------------------- /html5/pictures/fxos/hacksblog.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/hacksblog.jpg -------------------------------------------------------------------------------- /html5/pictures/fxos/hobbes-earth.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/hobbes-earth.jpg -------------------------------------------------------------------------------- /html5/pictures/fxos/inspector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/inspector.png -------------------------------------------------------------------------------- /html5/pictures/fxos/keep-calm-and-trust-html5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/keep-calm-and-trust-html5.jpg -------------------------------------------------------------------------------- /html5/pictures/fxos/marketplace.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/marketplace.jpg -------------------------------------------------------------------------------- /html5/pictures/fxos/mobiletools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/mobiletools.png -------------------------------------------------------------------------------- /html5/pictures/fxos/network-details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/network-details.png -------------------------------------------------------------------------------- /html5/pictures/fxos/network.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/network.png -------------------------------------------------------------------------------- /html5/pictures/fxos/nokia-photos.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/nokia-photos.jpg -------------------------------------------------------------------------------- /html5/pictures/fxos/phonegapdiagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/phonegapdiagram.png -------------------------------------------------------------------------------- /html5/pictures/fxos/pick-activity.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/pick-activity.jpg -------------------------------------------------------------------------------- /html5/pictures/fxos/profiler.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/profiler.png -------------------------------------------------------------------------------- /html5/pictures/fxos/reflow.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/reflow.mp4 -------------------------------------------------------------------------------- /html5/pictures/fxos/reflow.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/reflow.webm -------------------------------------------------------------------------------- /html5/pictures/fxos/remote-debugging-overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/remote-debugging-overview.png -------------------------------------------------------------------------------- /html5/pictures/fxos/responsive.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/responsive.mp4 -------------------------------------------------------------------------------- /html5/pictures/fxos/responsive.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/responsive.webm -------------------------------------------------------------------------------- /html5/pictures/fxos/scratchpad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/scratchpad.png -------------------------------------------------------------------------------- /html5/pictures/fxos/simulator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/simulator.png -------------------------------------------------------------------------------- /html5/pictures/fxos/simulator40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/simulator40.png -------------------------------------------------------------------------------- /html5/pictures/fxos/styleeditor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/styleeditor.png -------------------------------------------------------------------------------- /html5/pictures/fxos/webapiwiki.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/fxos/webapiwiki.png -------------------------------------------------------------------------------- /html5/pictures/mozillaoverview/redpanda.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/mozillaoverview/redpanda.jpg -------------------------------------------------------------------------------- /html5/pictures/templatedemos/earthphases.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/templatedemos/earthphases.gif -------------------------------------------------------------------------------- /html5/pictures/templatedemos/high-five.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/templatedemos/high-five.jpg -------------------------------------------------------------------------------- /html5/pictures/templatedemos/phones.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/templatedemos/phones.jpg -------------------------------------------------------------------------------- /html5/pictures/templatedemos/smallphones.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/templatedemos/smallphones.jpg -------------------------------------------------------------------------------- /html5/pictures/templatedemos/wave.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/templatedemos/wave.mp4 -------------------------------------------------------------------------------- /html5/pictures/templatedemos/wave.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/pictures/templatedemos/wave.webm -------------------------------------------------------------------------------- /html5/scripts/script.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | var url = window.location, 3 | body = document.body, 4 | slides = document.querySelectorAll('div.slide'), 5 | progress = document.querySelector('div.progress div'), 6 | slideList = [], 7 | l = slides.length, 8 | i; 9 | if (typeof keysalive === 'undefined') { 10 | keysalive = true; 11 | } 12 | 13 | for (i = 0; i < l; i++) { 14 | var cb = document.createElement('button'); 15 | cb.className = 'cb'; 16 | cb.innerHTML = 'x'; 17 | slides[i].appendChild(cb); 18 | slideList.push({ 19 | id: slides[i].id, 20 | hasInnerNavigation: null !== slides[i].querySelector('.inner') 21 | }); 22 | } 23 | 24 | /* Encode code blocks */ 25 | function encode() { 26 | var codes = document.querySelectorAll('code'); 27 | var all = codes.length; 28 | while (all--) { 29 | var tc = codes[all].innerHTML; 30 | if (tc.indexOf('<') !== -1) { 31 | tc = tc.replace(//g, '>'); 33 | codes[all].innerHTML = tc; 34 | } 35 | } 36 | } 37 | encode(); 38 | 39 | var demos = document.querySelectorAll('[contenteditable]'), 40 | alldemos = demos.length; 41 | 42 | function dokeys(ev) { 43 | keysalive = true; 44 | } 45 | 46 | function stopkeys(ev) { 47 | keysalive = false; 48 | } 49 | while (alldemos--) { 50 | demos[alldemos].addEventListener('focus', stopkeys, false); 51 | demos[alldemos].addEventListener('blur', dokeys, false); 52 | } 53 | 54 | function getTransform() { 55 | var denominator = Math.max( 56 | body.clientWidth / window.innerWidth, 57 | body.clientHeight / window.innerHeight 58 | ); 59 | 60 | return 'scale(' + (1 / denominator) + ')'; 61 | } 62 | 63 | function applyTransform(transform) { 64 | body.style.WebkitTransform = transform; 65 | body.style.MozTransform = transform; 66 | body.style.msTransform = transform; 67 | body.style.OTransform = transform; 68 | body.style.transform = transform; 69 | } 70 | 71 | function enterSlideMode() { 72 | body.className = 'full'; 73 | applyTransform(getTransform()); 74 | } 75 | 76 | function enterListMode() { 77 | body.className = 'list'; 78 | applyTransform('none'); 79 | } 80 | 81 | function getCurrentSlideNumber() { 82 | var i, l = slideList.length, 83 | currentSlideId = url.hash.substr(1); 84 | 85 | for (i = 0; i < l; ++i) { 86 | if (currentSlideId === slideList[i].id) { 87 | return i; 88 | } 89 | } 90 | 91 | return -1; 92 | } 93 | 94 | function scrollToSlide(slideNumber) { 95 | if (-1 === slideNumber) { 96 | return; 97 | } 98 | var currentSlide = document.getElementById(slideList[slideNumber].id); 99 | if (null !== currentSlide) { 100 | window.scrollTo(0, currentSlide.offsetTop); 101 | } 102 | } 103 | 104 | function isListMode() { 105 | return 'full' !== url.search.substr(1, 4); 106 | } 107 | 108 | function normalizeSlideNumber(slideNumber) { 109 | if (0 > slideNumber) { 110 | return slideList.length - 1; 111 | } else if (slideList.length <= slideNumber) { 112 | return 0; 113 | } else { 114 | return slideNumber; 115 | } 116 | } 117 | 118 | function updateProgress(slideNumber) { 119 | if (null === progress) { 120 | return; 121 | } 122 | progress.style.width = (100 / (slideList.length - 1) * normalizeSlideNumber(slideNumber)).toFixed(2) + '%'; 123 | } 124 | 125 | function getSlideHash(slideNumber) { 126 | return '#' + slideList[normalizeSlideNumber(slideNumber)].id; 127 | } 128 | 129 | function goToSlide(slideNumber) { 130 | var currentSlide = document.getElementById(slideList[slideNumber].id); 131 | if (currentSlide.classList.contains('inactive')) { 132 | goToSlide(slides[slideNumber + 1] ? slideNumber + 1 : 0); 133 | } else { 134 | url.hash = getSlideHash(slideNumber); 135 | lognotes(slideNumber); 136 | if (!isListMode()) { 137 | updateProgress(slideNumber); 138 | GIFrefresh(slideNumber); 139 | playVideoIfAutoplay(slideNumber); 140 | } 141 | } 142 | } 143 | 144 | function GIFrefresh(slideNumber) { 145 | if (slides[slideNumber]) { 146 | var img = slides[slideNumber].querySelector('img'); 147 | if (img && img.src.indexOf('gif') !== -1) { 148 | img.src = img.src; 149 | } 150 | } 151 | } 152 | 153 | function playVideoIfAutoplay(slideNumber) { 154 | if (slides[slideNumber] && 155 | slides[slideNumber].className.indexOf('autoplay') !== -1) { 156 | var video = slides[slideNumber].querySelector('video'); 157 | if (video) { 158 | video.play(); 159 | } 160 | } 161 | } 162 | 163 | function getContainingSlideId(el) { 164 | var node = el; 165 | while ('BODY' !== node.nodeName && 'HTML' !== node.nodeName) { 166 | if (node.classList.contains('slide')) { 167 | return node.id; 168 | } else { 169 | node = node.parentNode; 170 | } 171 | } 172 | 173 | return ''; 174 | } 175 | 176 | function dispatchSingleSlideMode(e) { 177 | var slideId = getContainingSlideId(e.target); 178 | 179 | if ('' !== slideId && isListMode()) { 180 | e.preventDefault(); 181 | 182 | if (e.target.tagName === 'BUTTON' && e.target.className === 'cb') { 183 | toggleSlide(e.target.parentNode); 184 | } else { 185 | // NOTE: we should update hash to get things work properly 186 | url.hash = '#' + slideId; 187 | history.replaceState(null, null, url.pathname + '?full#' + slideId); 188 | enterSlideMode(); 189 | 190 | updateProgress(getCurrentSlideNumber()); 191 | } 192 | } 193 | } 194 | 195 | function toggleSlide(elm) { 196 | if (elm.classList.contains('inactive')) { 197 | elm.classList.remove('inactive'); 198 | } else { 199 | elm.classList.add('inactive'); 200 | } 201 | } 202 | 203 | // Increases inner navigation by adding 'active' class to next inactive inner navigation item 204 | function increaseInnerNavigation(slideNumber) { 205 | // Shortcut for slides without inner navigation 206 | if (true !== slideList[slideNumber].hasInnerNavigation) { 207 | return -1; 208 | } 209 | 210 | var activeNodes = document.querySelectorAll(getSlideHash(slideNumber) + ' .active'), 211 | // NOTE: we assume there is no other elements in inner navigation 212 | node = activeNodes[activeNodes.length - 1].nextElementSibling; 213 | 214 | if (null !== node) { 215 | node.classList.add('active'); 216 | return activeNodes.length + 1; 217 | } else { 218 | return -1; 219 | } 220 | } 221 | 222 | function lognotes(slideNumber) { 223 | if (window.console && slideList[slideNumber]) { 224 | var notes = document.querySelector('#' + slideList[slideNumber].id + ' .notes'); 225 | if (notes) { 226 | console.info(notes.innerHTML.replace(/\n\s+/g, '\n')); 227 | } 228 | if (slideList[slideNumber + 1]) { 229 | var next = document.querySelector('#' + slideList[slideNumber + 1].id + ' header'); 230 | if (next) { 231 | next = next.innerHTML.replace(/^\s+|<[^>]+>/g, ''); 232 | console.info('NEXT: ' + next); 233 | } 234 | } 235 | } 236 | } 237 | 238 | 239 | // Event handlers 240 | 241 | window.addEventListener('DOMContentLoaded', function() { 242 | if (!isListMode()) { 243 | // "?full" is present without slide hash, so we should display first slide 244 | if (-1 === getCurrentSlideNumber()) { 245 | history.replaceState(null, null, url.pathname + '?full' + getSlideHash(0)); 246 | } 247 | enterSlideMode(); 248 | updateProgress(getCurrentSlideNumber()); 249 | } 250 | }, false); 251 | 252 | window.addEventListener('popstate', function(e) { 253 | if (isListMode()) { 254 | enterListMode(); 255 | scrollToSlide(getCurrentSlideNumber()); 256 | } else { 257 | enterSlideMode(); 258 | } 259 | }, false); 260 | 261 | window.addEventListener('resize', function(e) { 262 | if (!isListMode()) { 263 | applyTransform(getTransform()); 264 | } 265 | }, false); 266 | 267 | document.addEventListener('keydown', function(e) { 268 | if (!keysalive) { 269 | return; 270 | } 271 | // Shortcut for alt, shift and meta keys 272 | if (e.altKey || e.ctrlKey || e.metaKey) { 273 | return; 274 | } 275 | 276 | var currentSlideNumber = getCurrentSlideNumber(); 277 | switch (e.which) { 278 | case 116: // F5 279 | case 13: // Enter 280 | if (isListMode() && -1 !== currentSlideNumber) { 281 | e.preventDefault(); 282 | 283 | history.pushState(null, null, url.pathname + '?full' + getSlideHash(currentSlideNumber)); 284 | enterSlideMode(); 285 | 286 | updateProgress(currentSlideNumber); 287 | } 288 | break; 289 | 290 | case 27: // Esc 291 | if (!isListMode()) { 292 | e.preventDefault(); 293 | 294 | history.pushState(null, null, url.pathname + getSlideHash(currentSlideNumber)); 295 | enterListMode(); 296 | scrollToSlide(currentSlideNumber); 297 | } 298 | break; 299 | 300 | case 33: // PgUp 301 | case 38: // Up 302 | case 37: // Left 303 | case 72: // h 304 | case 75: // k 305 | e.preventDefault(); 306 | 307 | currentSlideNumber--; 308 | goToSlide(currentSlideNumber); 309 | break; 310 | 311 | case 34: // PgDown 312 | case 40: // Down 313 | case 39: // Right 314 | case 76: // l 315 | case 74: // j 316 | e.preventDefault(); 317 | 318 | // Only go to next slide if current slide have no inner 319 | // navigation or inner navigation is fully shown 320 | // NOTE: But first of all check if there is no current slide 321 | if (-1 === currentSlideNumber || 322 | !slideList[currentSlideNumber].hasInnerNavigation || 323 | -1 === increaseInnerNavigation(currentSlideNumber) 324 | ) { 325 | currentSlideNumber++; 326 | goToSlide(currentSlideNumber); 327 | } 328 | break; 329 | 330 | case 36: // Home 331 | e.preventDefault(); 332 | 333 | currentSlideNumber = 0; 334 | goToSlide(currentSlideNumber); 335 | break; 336 | 337 | case 35: // End 338 | e.preventDefault(); 339 | 340 | currentSlideNumber = slideList.length - 1; 341 | goToSlide(currentSlideNumber); 342 | break; 343 | 344 | case 9: // Tab = +1; Shift + Tab = -1 345 | case 32: // Space = +1; Shift + Space = -1 346 | e.preventDefault(); 347 | 348 | currentSlideNumber += e.shiftKey ? -1 : 1; 349 | goToSlide(currentSlideNumber); 350 | break; 351 | case 78: 352 | slides[currentSlideNumber].classList.toggle('peek'); 353 | break; 354 | default: 355 | // Behave as usual 356 | } 357 | }, false); 358 | 359 | document.addEventListener('click', dispatchSingleSlideMode, false); 360 | document.addEventListener('touchend', dispatchSingleSlideMode, false); 361 | 362 | document.addEventListener('touchstart', function(e) { 363 | if (!isListMode()) { 364 | var currentSlideNumber = getCurrentSlideNumber(), 365 | x = e.touches[0].pageX; 366 | if (x > window.innerWidth / 2) { 367 | currentSlideNumber++; 368 | } else { 369 | currentSlideNumber--; 370 | } 371 | 372 | goToSlide(currentSlideNumber); 373 | } 374 | }, false); 375 | 376 | document.addEventListener('touchmove', function(e) { 377 | if (!isListMode()) { 378 | e.preventDefault(); 379 | } 380 | }, false); 381 | 382 | }()); 383 | 384 | function goFullScreen() { 385 | document.fullscreenEnabled = document.fullscreenEnabled || 386 | document.mozFullScreenEnabled || 387 | document.documentElement.webkitRequestFullScreen; 388 | 389 | function requestFullscreen(element) { 390 | if (element.requestFullscreen) { 391 | element.requestFullscreen(); 392 | } else if (element.mozRequestFullScreen) { 393 | element.mozRequestFullScreen(); 394 | } else if (element.webkitRequestFullScreen) { 395 | element.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT); 396 | } 397 | } 398 | if (document.fullscreenEnabled) { 399 | requestFullscreen(document.documentElement); 400 | } 401 | } 402 | 403 | var lang = 'en-US'; 404 | try { 405 | lang = new URL(window.location).searchParams.get('lang'); 406 | } catch (ex) { 407 | // searchParams isn't supported in all browsers 408 | } 409 | 410 | // Pre-selects the correct current language on the dropdown menu 411 | document.getElementById('langMenuId').value = lang; 412 | 413 | function changeLanguage() { 414 | var langObj = document.getElementById('langMenuId'); 415 | document.documentElement.lang = langObj.value; 416 | 417 | // Update the language code in the URL bar 418 | try { 419 | var url = new URL(window.location); 420 | url.searchParams.set('lang', langObj.value); 421 | history.replaceState({}, document.title, url); 422 | } catch (ex) { 423 | // This might not be supported in all browsers 424 | } 425 | } 426 | 427 | changeLanguage(); 428 | -------------------------------------------------------------------------------- /html5/template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 13 | 14 | 15 | Your talk title here 16 | 21 | 22 | 23 | 24 | 25 |
26 |

Your talk title here

27 | 32 |
33 | 40 | 41 | 46 | 47 |
48 |
49 |
50 |

The cover slide

51 |
52 | High-five at the Mozilla Festival! 55 | 58 | 61 |
62 |
63 | 64 | 65 | 66 |
67 |
68 |
69 |

Callout slide styles

70 |
71 |

The following are callout slide styles – either a large word, or a one sentence headline. Use them to chunk your presentation into logical units.

72 |

Multilingual content:

73 |
This is English.
74 |
这是中文(简体)。
75 |
這是中文(繁體)。
76 |
これは日本語です。
77 | 79 |
80 |
81 | 82 |
83 |
84 |
85 |

86 |
Shout slide
87 |
标题
88 |
標題
89 |
タイトル
90 |

91 |
92 | 94 |
95 |
96 | 97 |
98 |
99 |
100 |

Imagine: One line slide

101 |
102 | 104 |
105 |
106 | 107 |
108 |
109 |
110 |

Image slide styles

111 |
112 |
    113 |
  • Images are either backgrounds or part of the page.
  • 114 |
  • Background images need a "cover" class on on the slide DIV.
  • 115 |
  • In-page images need a class of "middle" to get centered
  • 116 |
  • Adding "left" or "right" classes floats the image and you can use text next to them
  • 117 |
  • Adding a "shadow" class adds a drop-shadow.
  • 118 |
  • FIGURE elements around the image allow for a "swinging frame" effect
  • 119 |
  • Images can also be videos or SVG. :)
  • 120 |
121 | 123 |
124 |
125 | 126 |
127 |
128 |
129 |

Image slide (stretched horizontal)

130 |
131 | Firefox OS phones 134 | 135 | 136 | Image by Chris Heilmann 137 | 138 | 139 | 141 |
142 |
143 | 144 |
145 |
146 |
147 |

Image slide (stretched vertical)

148 |
149 | Firefox OS phones 152 | 153 | 154 | Image by Chris Heilmann 155 | 156 | 157 | 160 |
161 |
162 | 163 |
164 |
165 |
166 |

Image slide (centered, resized)

167 |
168 | Firefox OS phones 171 | 172 | 173 | Image by Chris Heilmann 174 | 175 | 176 | 179 |
180 |
181 | 182 |
183 |
184 |
185 |

Image slide (right)

186 |
187 | Firefox OS phones 190 | 191 |
    192 |
  • Item 1
  • 193 |
  • Item 2
  • 194 |
  • Item 3
  • 195 |
196 | 197 | 198 | 199 | Image by Chris Heilmann 200 | 201 | 202 | 205 |
206 |
207 | 208 |
209 |
210 |
211 |

Image slide (left)

212 |
213 | Firefox OS phones 216 | 217 |
    218 |
  • Item 1
  • 219 |
  • Item 2
  • 220 |
  • Item 3
  • 221 |
222 | 223 | 224 | 225 | Image by Chris Heilmann 226 | 227 | 228 | 230 |
231 |
232 | 233 |
234 |
235 |
236 |

Image slide (centered, shadow)

237 |
238 | Firefox OS phones 241 | 242 | 243 | Image by Chris Heilmann 244 | 245 | 246 | 248 |
249 |
250 | 251 |
252 |
253 |
254 |

Image slide (framed)

255 |
256 |
257 | Firefox OS phones 259 |
260 | 261 | 262 | Image by Chris Heilmann 263 | 264 | 265 | 267 |
268 |
269 | 270 |
271 |
272 |
273 |

Image slide (framed, swinging)

274 |
275 |
276 | Firefox OS phones 278 |
279 | 280 | 281 | Image by Chris Heilmann 282 | 283 | 284 | 286 |
287 |
288 | 289 |
290 |
291 |
292 |

Image slide (GIF)

293 |
294 | Earthphases 296 |

GIFs animate from the start when the slide shows.

297 | 299 |
300 |
301 | 302 |
303 |
304 |
305 |

Image slide (video)

306 |
307 | 311 | 312 | 313 | Image by Chris Heilmann 314 | 315 | 316 | 318 |
319 |
320 | 321 |
322 |
323 |
324 |

Image slide (video autoplay)

325 |
326 | 330 | 331 | 332 | Image by Chris Heilmann 333 | 334 | 335 | 337 |
338 |
339 | 340 | 341 |
342 |
343 |
344 |

List style types

345 |
346 |

The following are the different kinds of list styles available to you. Always remember that bullets kill – both people and audiences. If people can read ahead of your narrative, they will. And you made yourself redundant as a speaker.

347 | 349 |
350 |
351 | 352 |
353 |
354 |
355 |

Numbered list

356 |
357 |
    358 |
  1. Collect underpants
  2. 359 |
  3. ???
  4. 360 |
  5. Profit
  6. 361 |
362 | 364 |
365 |
366 | 367 |
368 |
369 |
370 |

Unordered List

371 |
372 |
    373 |
  • Tigers
  • 374 |
  • Elephants
  • 375 |
  • Bears 376 |
      377 |
    • Koalas
    • 378 |
    • Polar
    • 379 |
    • Panda
    • 380 |
    381 |
  • 382 |
  • Oh my…
  • 383 |
384 | 386 |
387 |
388 | 389 |
390 |
391 |
392 |

Ordered List

393 |
394 |
    395 |
  1. Tigers
  2. 396 |
  3. Elephants
  4. 397 |
  5. Bears 398 |
      399 |
    1. Koalas
    2. 400 |
    3. Polar
    4. 401 |
    5. Panda
    6. 402 |
    403 |
  6. 404 |
  7. Oh my…
  8. 405 |
406 | 408 |
409 |
410 | 411 |
412 |
413 |
414 |

Long List

415 |
416 |
    417 |
  1. Tigers
  2. 418 |
  3. Elephants
  4. 419 |
  5. Bears 420 |
      421 |
    1. Koalas
    2. 422 |
    3. Polar
    4. 423 |
    5. Panda
    6. 424 |
    425 |
  6. 426 |
  7. Hedgehogs
  8. 427 |
  9. Opossums
  10. 428 |
  11. Hyrax
  12. 429 |
  13. Capybara
  14. 430 |
  15. Oh my…
  16. 431 |
432 | 434 |
435 |
436 | 437 |
438 |
439 |
440 |

Inline List

441 |
442 |
    443 |
  • Tigers
  • 444 |
  • Elephants
  • 445 |
  • Bears
  • 446 |
  • Hedgehogs
  • 447 |
  • Opossums
  • 448 |
  • Hyrax
  • 449 |
  • Capybara
  • 450 |
  • Oh my…
  • 451 |
452 | 454 |
455 |
456 | 457 |
458 |
459 |
460 |

Animated List

461 |
462 |
    463 |
  • Tigers
  • 464 |
  • Elephants
  • 465 |
  • Bears
  • 466 |
  • Hedgehogs
  • 467 |
  • Opossums
  • 468 |
  • Hyrax
  • 469 |
  • Capybara
  • 470 |
  • Oh my…
  • 471 |
472 | 474 |
475 |
476 | 477 |
478 |
479 |
480 |

One line list

481 |
482 |
    483 |
  • Elephants
  • 484 |
  • Aardvarks
  • 485 |
  • Hedgehogs
  • 486 |
  • Kittens
  • 487 |
  • Puppies
  • 488 |
489 | 491 |
492 |
493 | 494 |
495 |
496 |
497 |

Long list

498 |
499 |
    500 |
  • Elephants
  • 501 |
  • Aardvarks
  • 502 |
  • Hedgehogs
  • 503 |
  • Kittens
  • 504 |
  • Puppies
  • 505 |
  • Axolotls
  • 506 |
  • Elephants
  • 507 |
  • Aardvarks
  • 508 |
  • Hedgehogs
  • 509 |
  • Kittens
  • 510 |
  • Puppies
  • 511 |
  • Axolotls
  • 512 |
  • Elephants
  • 513 |
  • Aardvarks
  • 514 |
  • Hedgehogs
  • 515 |
  • Kittens
  • 516 |
  • Puppies
  • 517 |
  • Axolotls
  • 518 |
  • Elephants
  • 519 |
  • Aardvarks
  • 520 |
  • Hedgehogs
  • 521 |
  • Kittens
  • 522 |
  • Puppies
  • 523 |
  • Axolotls
  • 524 |
  • Elephants
  • 525 |
  • Aardvarks
  • 526 |
  • Hedgehogs
  • 527 |
  • Kittens
  • 528 |
  • Puppies
  • 529 |
  • Axolotls
  • 530 |
531 | 533 |
534 |
535 | 536 |
537 |
538 |
539 |

Code styles

540 |
541 |

Code is not automatically encoded and colour coded. The space you have for code is also limited. This is by design: presentations are not there to drench audiences with code. Switch to your editor if needed and link to live, maintained code so people don't copy+paste.

542 | 544 |
545 |
546 | 547 |
548 |
549 |
550 |

code

551 |
552 |
553 |         var installapp = navigator.mozApps.install(manifestURL);
554 |         installapp.onsuccess = function(data) {
555 |           // App is installed
556 |         };
557 |         installapp.onerror = function() {
558 |          // App wasn't installed, info is in 
559 |          // installapp.error.name
560 |         };
561 |         
562 | 564 |
565 |
566 | 567 |
568 |
569 |
570 |

Markup is encoded

571 |
572 |
573 |         

Paragraph without encode

574 | <p>Paragraph without encode</p> 575 | 576 |
577 | 579 |
580 |
581 | 582 |
583 |
584 |
585 |

Live CSS code

586 |
587 |
588 | 593 | 595 |
596 |
597 | 598 |
599 |
600 |
601 |

Live CSS code (smooth)

602 |
603 |
604 | 609 | 611 |
612 |
613 | 614 |
615 |
616 |
617 |

Quote styles

618 |
619 |

Quotes are a superb way to look clever and get more kudos for being in the know. Make sure you attribute them correctly and do not quote out of context.

620 | 622 |
623 |
624 | 625 |
626 |
627 |
628 |

Quote

629 |
630 |
631 |

The worst part of internet quotes is that you can never be sure that they are attributed correctly.

632 | 633 |
634 | 636 |
637 |
638 | 639 |
640 |
641 |
642 |

Long quote is long…

643 |
644 |
645 | But there's no doubt that, we went for this approach, we built this internal framework that we called Faceweb, which is basically this idea that we can take the infrastructure that we built out for pushing code everyday, not having to submit to an app store, building web code on the web stack that we have, and that we can translate that into mobile development. We just were never able to get the quality of it we wanted… 646 |
647 | 650 |
651 |
652 | 653 |
654 |
655 |
656 |

Thanks

657 |
658 | Red panda (Firefox) 659 |
    660 |
  • {name}
  • 661 |
  • {title}
  • 662 |
  • {@twitter}
  • 663 |
  • Slides: {slideurl}
  • 664 |
665 | 666 | Photo by Yortw 667 | 668 | 669 | 671 | 672 |
673 |
674 | 675 | 679 |
680 |
681 | 682 | 688 |
689 | 690 | 691 | 692 | -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-Bold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-Bold.eot -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-Bold.ttf -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-Bold.woff -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-Bold.woff2 -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-BoldItalic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-BoldItalic.eot -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-BoldItalic.ttf -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-BoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-BoldItalic.woff -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-BoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-BoldItalic.woff2 -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-ExtraBold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-ExtraBold.eot -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-ExtraBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-ExtraBold.ttf -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-ExtraBold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-ExtraBold.woff -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-ExtraBold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-ExtraBold.woff2 -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-ExtraBoldItalic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-ExtraBoldItalic.eot -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-ExtraBoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-ExtraBoldItalic.ttf -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-ExtraBoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-ExtraBoldItalic.woff -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-ExtraBoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-ExtraBoldItalic.woff2 -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-Light.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-Light.eot -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-Light.ttf -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-Light.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-Light.woff -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-Light.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-Light.woff2 -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-LightItalic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-LightItalic.eot -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-LightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-LightItalic.ttf -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-LightItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-LightItalic.woff -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-LightItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-LightItalic.woff2 -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-Regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-Regular.eot -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-Regular.ttf -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-Regular.woff -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-Regular.woff2 -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-RegularItalic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-RegularItalic.eot -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-RegularItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-RegularItalic.ttf -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-RegularItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-RegularItalic.woff -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-RegularItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-RegularItalic.woff2 -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-SemiBold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-SemiBold.eot -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-SemiBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-SemiBold.ttf -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-SemiBold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-SemiBold.woff -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-SemiBold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-SemiBold.woff2 -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-SemiBoldItalic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-SemiBoldItalic.eot -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-SemiBoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-SemiBoldItalic.ttf -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-SemiBoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-SemiBoldItalic.woff -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/OpenSans-SemiBoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/OpenSans-SemiBoldItalic.woff2 -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/TargetBlank.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/fonts/TargetBlank.otf -------------------------------------------------------------------------------- /html5/themes/mozilla/fonts/TargetBlank.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Designer: Vadim Makeev 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /html5/themes/mozilla/images/Fx-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/images/Fx-logo.png -------------------------------------------------------------------------------- /html5/themes/mozilla/images/bg-blue-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/images/bg-blue-2.png -------------------------------------------------------------------------------- /html5/themes/mozilla/images/bg-darkgrey-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/images/bg-darkgrey-2.png -------------------------------------------------------------------------------- /html5/themes/mozilla/images/bg-red-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/images/bg-red-2.png -------------------------------------------------------------------------------- /html5/themes/mozilla/images/bg-sandstone-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/images/bg-sandstone-2.png -------------------------------------------------------------------------------- /html5/themes/mozilla/images/mozilla-logo-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/images/mozilla-logo-white.png -------------------------------------------------------------------------------- /html5/themes/mozilla/images/mozilla-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/images/mozilla-logo.png -------------------------------------------------------------------------------- /html5/themes/mozilla/images/tab-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/html5/themes/mozilla/images/tab-2.png -------------------------------------------------------------------------------- /html5/themes/mozilla/styles/fonts.css: -------------------------------------------------------------------------------- 1 | 2 | @font-face { 3 | font-family: 'Open Sans'; 4 | src: url('../fonts/OpenSans-Light.eot'); 5 | src: url('../fonts/OpenSans-Light.eot?#iefix') format('embedded-opentype'), 6 | url('../fonts/OpenSans-Light.woff2') format('woff2'), 7 | url('../fonts/OpenSans-Light.woff') format('woff'), 8 | url('../fonts/OpenSans-Light.ttf') format('truetype'), 9 | url('../fonts/OpenSans-Light.svg#open_sanslight') format('svg'); 10 | font-weight: 300; 11 | font-style: normal; 12 | 13 | } 14 | 15 | @font-face { 16 | font-family: 'Open Sans'; 17 | src: url('../fonts/OpenSans-LightItalic.eot'); 18 | src: url('../fonts/OpenSans-LightItalic.eot?#iefix') format('embedded-opentype'), 19 | url('../fonts/OpenSans-LightItalic.woff2') format('woff2'), 20 | url('../fonts/OpenSans-LightItalic.woff') format('woff'), 21 | url('../fonts/OpenSans-LightItalic.ttf') format('truetype'), 22 | url('../fonts/OpenSans-LightItalic.svg#open_sanslight_italic') format('svg'); 23 | font-weight: 300; 24 | font-style: italic; 25 | 26 | } 27 | 28 | @font-face { 29 | font-family: 'Open Sans'; 30 | src: url('../fonts/OpenSans-Regular.eot'); 31 | src: url('../fonts/OpenSans-Regular.eot?#iefix') format('embedded-opentype'), 32 | url('../fonts/OpenSans-Regular.woff2') format('woff2'), 33 | url('../fonts/OpenSans-Regular.woff') format('woff'), 34 | url('../fonts/OpenSans-Regular.ttf') format('truetype'), 35 | url('../fonts/OpenSans-Regular.svg#open_sansregular') format('svg'); 36 | font-weight: 400; 37 | font-style: normal; 38 | 39 | } 40 | 41 | @font-face { 42 | font-family: 'Open Sans'; 43 | src: url('../fonts/OpenSans-RegularItalic.eot'); 44 | src: url('../fonts/OpenSans-RegularItalic.eot?#iefix') format('embedded-opentype'), 45 | url('../fonts/OpenSans-RegularItalic.woff2') format('woff2'), 46 | url('../fonts/OpenSans-RegularItalic.woff') format('woff'), 47 | url('../fonts/OpenSans-RegularItalic.ttf') format('truetype'), 48 | url('../fonts/OpenSans-RegularItalic.svg#open_sansitalic') format('svg'); 49 | font-weight: 400; 50 | font-style: italic; 51 | 52 | } 53 | 54 | @font-face { 55 | font-family: 'Open Sans'; 56 | src: url('../fonts/OpenSans-Semibold.eot'); 57 | src: url('../fonts/OpenSans-Semibold.eot?#iefix') format('embedded-opentype'), 58 | url('../fonts/OpenSans-Semibold.woff') format('woff'), 59 | url('../fonts/OpenSans-Semibold.woff2') format('woff2'), 60 | url('../fonts/OpenSans-Semibold.ttf') format('truetype'), 61 | url('../fonts/OpenSans-Semibold.svg#open_sanssemibold') format('svg'); 62 | font-weight: 600; 63 | font-style: normal; 64 | 65 | } 66 | 67 | @font-face { 68 | font-family: 'Open Sans'; 69 | src: url('../fonts/OpenSans-SemiboldItalic.eot'); 70 | src: url('../fonts/OpenSans-SemiboldItalic.eot?#iefix') format('embedded-opentype'), 71 | url('../fonts/OpenSans-SemiboldItalic.woff') format('woff'), 72 | url('../fonts/OpenSans-SemiboldItalic.woff2') format('woff2'), 73 | url('../fonts/OpenSans-SemiboldItalic.ttf') format('truetype'), 74 | url('../fonts/OpenSans-SemiboldItalic.svg#open_sanssemibold_italic') format('svg'); 75 | font-weight: 600; 76 | font-style: italic; 77 | 78 | } 79 | 80 | @font-face { 81 | font-family: 'Open Sans'; 82 | src: url('../fonts/OpenSans-Bold.eot'); 83 | src: url('../fonts/OpenSans-Bold.eot?#iefix') format('embedded-opentype'), 84 | url('../fonts/OpenSans-Bold.woff') format('woff'), 85 | url('../fonts/OpenSans-Bold.woff2') format('woff2'), 86 | url('../fonts/OpenSans-Bold.ttf') format('truetype'), 87 | url('../fonts/OpenSans-Bold.svg#open_sansbold') format('svg'); 88 | font-weight: 700; 89 | font-style: normal; 90 | 91 | } 92 | 93 | @font-face { 94 | font-family: 'Open Sans'; 95 | src: url('../fonts/OpenSans-BoldItalic.eot'); 96 | src: url('../fonts/OpenSans-BoldItalic.eot?#iefix') format('embedded-opentype'), 97 | url('../fonts/OpenSans-BoldItalic.woff') format('woff'), 98 | url('../fonts/OpenSans-BoldItalic.woff2') format('woff2'), 99 | url('../fonts/OpenSans-BoldItalic.ttf') format('truetype'), 100 | url('../fonts/OpenSans-BoldItalic.svg#open_sansbold_italic') format('svg'); 101 | font-weight: 700; 102 | font-style: italic; 103 | 104 | } 105 | 106 | @font-face { 107 | font-family: 'Open Sans'; 108 | src: url('../fonts/OpenSans-ExtraBold.eot'); 109 | src: url('../fonts/OpenSans-ExtraBold.eot?#iefix') format('embedded-opentype'), 110 | url('../fonts/OpenSans-ExtraBold.woff') format('woff'), 111 | url('../fonts/OpenSans-ExtraBold.woff2') format('woff2'), 112 | url('../fonts/OpenSans-ExtraBold.ttf') format('truetype'), 113 | url('../fonts/OpenSans-ExtraBold.svg#open_sansextrabold') format('svg'); 114 | font-weight: 800; 115 | font-style: normal; 116 | 117 | } 118 | 119 | @font-face { 120 | font-family: 'Open Sans'; 121 | src: url('../fonts/OpenSans-ExtraBoldItalic.eot'); 122 | src: url('../fonts/OpenSans-ExtraBoldItalic.eot?#iefix') format('embedded-opentype'), 123 | url('../fonts/OpenSans-ExtraBoldItalic.woff') format('woff'), 124 | url('../fonts/OpenSans-ExtraBoldItalic.woff2') format('woff2'), 125 | url('../fonts/OpenSans-ExtraBoldItalic.ttf') format('truetype'), 126 | url('../fonts/OpenSans-ExtraBoldItalic.svg#open_sansextrabold_italic') format('svg'); 127 | font-weight: 800; 128 | font-style: italic; 129 | 130 | } 131 | 132 | 133 | /* Linker */ 134 | @font-face { 135 | font-family:'Target Blank'; 136 | src:url(../fonts/TargetBlank.otf) format('opentype'), 137 | url(../fonts/TargetBlank.svg#TargetBlank) format('svg'); 138 | } 139 | -------------------------------------------------------------------------------- /html5/themes/mozilla/styles/print.css: -------------------------------------------------------------------------------- 1 | /* 2 | Ribbon theme for Shower presentation template: http://github.com/pepelsbey/shower 3 | Copyright © 2010–2011 Vadim Makeev, http://pepelsbey.net/ 4 | Licensed under MIT license: https://github.com/pepelsbey/shower/wiki/License 5 | */ 6 | 7 | @page { 8 | margin:0; 9 | size:1024px 640px; 10 | } 11 | 12 | /* List 13 | ---------------------------------------- */ 14 | .list { 15 | float:none; 16 | padding:0; 17 | background:#888; 18 | } 19 | 20 | /* Caption */ 21 | .list .caption { 22 | display:none; 23 | } 24 | 25 | /* Slide */ 26 | .list .slide { 27 | float:none; 28 | margin:0; 29 | padding:0; 30 | } 31 | .list .slide > DIV { 32 | width:1024px; 33 | height:640px; 34 | background:none; 35 | } 36 | .list .slide > div, 37 | .list .slide > div:hover { 38 | -webkit-box-shadow:none; 39 | -moz-box-shadow:none; 40 | box-shadow:none; 41 | } 42 | .list .slide section { 43 | -webkit-transform:none; 44 | -moz-transform:none; 45 | -ms-transform:none; 46 | -o-transform:none; 47 | transform:none; 48 | } 49 | .list .slide:after { 50 | position:absolute; 51 | bottom:85px; 52 | left:120px; 53 | color:#BBB; 54 | line-height:1; 55 | text-shadow:none; 56 | } 57 | -------------------------------------------------------------------------------- /html5/themes/mozilla/styles/reset.css: -------------------------------------------------------------------------------- 1 | html, body, div, span, applet, object, iframe, 2 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, 3 | a, abbr, acronym, address, big, cite, code, 4 | del, dfn, em, img, ins, kbd, q, s, samp, 5 | small, strike, strong, sub, sup, tt, var, 6 | b, u, i, center, 7 | dl, dt, dd, ol, ul, li, 8 | fieldset, form, label, legend, 9 | table, caption, tbody, tfoot, thead, tr, th, td, 10 | article, aside, canvas, details, embed, 11 | figure, figcaption, footer, header, hgroup, 12 | menu, nav, output, ruby, section, summary, 13 | time, mark, audio, video { 14 | margin:0; 15 | padding:0; 16 | border:0; 17 | font-size:100%; 18 | font:inherit; 19 | vertical-align:baseline; 20 | } 21 | article, aside, details, figcaption, figure, 22 | footer, header, hgroup, menu, nav, section { 23 | display:block; 24 | } 25 | body { 26 | line-height:1; 27 | } 28 | ol, ul { 29 | list-style:none; 30 | } 31 | blockquote, q { 32 | quotes:none; 33 | } 34 | blockquote:before, blockquote:after, 35 | q:before, q:after { 36 | content:''; 37 | content:none; 38 | } 39 | table { 40 | border-collapse:collapse; 41 | border-spacing:0; 42 | } -------------------------------------------------------------------------------- /html5/themes/mozilla/styles/style.css: -------------------------------------------------------------------------------- 1 | /* 2 | Mozilla theme for Shower presentation template: http://github.com/pepelsbey/shower 3 | Copyright © 2010–2011 Vadim Makeev, http://pepelsbey.net/ 4 | Licensed under MIT license: https://github.com/pepelsbey/shower/wiki/License 5 | Theme by Chris Heilmann http://christianheilmann.com @codepo8 6 | */ 7 | 8 | @import url(fonts.css); 9 | @import url(reset.css); 10 | 11 | BODY { 12 | font:25px/1.8 'Open Sans', sans-serif; 13 | counter-reset:paging; 14 | } 15 | 16 | body:after { 17 | position:absolute; 18 | top:0; 19 | right:10px; 20 | width:153px; 21 | height:41px; 22 | background:url(../images/tab-2.png); 23 | content:''; 24 | } 25 | 26 | 27 | /* Slide 28 | ---------------------------------------- */ 29 | .slide button.cb { 30 | position: absolute; 31 | top: 80px; 32 | right: 0; 33 | } 34 | .full .slide button.cb { 35 | display: none; 36 | } 37 | .inactive { 38 | opacity: .5; 39 | } 40 | .slide:after { 41 | counter-increment:paging; 42 | content:counter(paging, decimal-leading-zero); 43 | } 44 | .slide section { 45 | padding:80px 120px 0; 46 | width:784px; 47 | height:560px; 48 | background:url(../images/bg-sandstone-2.png); 49 | color:rgb(62,62,62); 50 | } 51 | 52 | /* 53 | No numbering in the progress bar: 54 | add "nonumbers" class to 55 | */ 56 | .nonumbers .full .slide:after{ 57 | content: ''; 58 | } 59 | 60 | /* 61 | Smooth fading in between slides: 62 | add "fade" class to 63 | */ 64 | .fade .full .slide section { 65 | -webkit-transition: opacity 1s; 66 | -moz-transition: opacity 1s; 67 | -ms-transition: opacity 1s; 68 | -o-transition: opacity 1s; 69 | transition: opacity 1s; 70 | opacity: 0; 71 | } 72 | .fade .full .slide:target section { 73 | opacity: 1; 74 | } 75 | .fade .full .slide { 76 | background: url(../images/bg-sandstone-2.png); 77 | } 78 | /* 79 | Picture frame 80 | */ 81 | .frame { 82 | display:block; 83 | } 84 | .shadow { 85 | box-shadow: 5px 10px 10px rgba(0,0,0,.35); 86 | } 87 | .frame img { 88 | 89 | border: 5px solid #f8f8f8; z-index: 2; display: block; 90 | } 91 | .frame::after { 92 | content: ''; 93 | display: block; 94 | position: absolute; 95 | top: -10px; 96 | left: 50%; 97 | margin-left: -10px; 98 | width: 20px; 99 | height: 20px; 100 | -webkit-transform: rotate(45deg); 101 | -moz-transform: rotate(45deg ); 102 | -ms-transform: rotate(45deg ); 103 | -o-transform: rotate(45deg ); 104 | transform: rotate(45deg); 105 | border-style: solid; 106 | border-color: #666; 107 | border-width: 1px 0 0 1px; 108 | } 109 | .frame::before { 110 | content: ''; 111 | display: block; 112 | width: 5px; 113 | height: 5px; 114 | background-image: 115 | -webkit-linear-gradient(top, #f1f1f1 0%, #333 80%, #000 95%); 116 | background-image: 117 | -moz-linear-gradient(to bottom, #f1f1f1 0%, #333 80%, #000 95%); 118 | background-image: 119 | linear-gradient(to bottom, #f1f1f1 0%, #333 80%, #000 95%); 120 | border-radius: 50%; 121 | border: 1px solid #666; 122 | position: absolute; 123 | top: -15px; 124 | left: 50%; 125 | margin-left: -3px; 126 | } 127 | 128 | 129 | 130 | /* Header */ 131 | .slide header { 132 | margin:0 0 58px; 133 | color:rgb(62,62,62); 134 | text-transform: uppercase; 135 | font:lighter 40px/1.13 'Open Sans', sans-serif; 136 | } 137 | 138 | /* Elements */ 139 | .slide p { 140 | margin:0 0 45px; 141 | } 142 | .slide p.note { 143 | color:#888; 144 | } 145 | .slide a { 146 | border-bottom:0.1em solid; 147 | color:#0174A7; 148 | text-decoration:none; 149 | } 150 | .slide a[target=_blank] { 151 | margin-right:22px; 152 | } 153 | .slide a[target=_blank]:after { 154 | position:absolute; 155 | margin-left:7px; 156 | font-family:'Target Blank'; 157 | content:'\005E'; 158 | } 159 | .slide b, 160 | .slide strong { 161 | font-weight:bold; 162 | } 163 | .slide i, 164 | .slide em { 165 | font-style:italic; 166 | } 167 | .slide kbd, 168 | .slide code { 169 | padding:3px 8px; 170 | -webkit-border-radius:8px; 171 | -moz-border-radius:8px; 172 | border-radius:8px; 173 | background:#FAFAA2; 174 | color:#000; 175 | -webkit-tab-size:4; 176 | -moz-tab-size:4; 177 | -o-tab-size:4; 178 | tab-size:4; 179 | font-family:'monaco', 'courier', monospace; 180 | } 181 | 182 | /* Quote */ 183 | .slide blockquote { 184 | font-style:italic; 185 | font-size: 40px; 186 | } 187 | .slide blockquote.lots { 188 | font-style:italic; 189 | font-size: 30px; 190 | } 191 | .slide blockquote:before { 192 | position:absolute; 193 | margin:-15px 0 0 -80px; 194 | color:#666; 195 | font:200px/1 'Open Sans', sans-serif; 196 | content:'\201C'; /* ldquo */ 197 | } 198 | blockquote .quotesource { 199 | font-size: 20px; 200 | text-align: right; 201 | } 202 | 203 | /* Lists */ 204 | .slide ol, 205 | .slide ul { 206 | margin:0 0 45px; 207 | counter-reset:list; 208 | } 209 | .slide ul ul, 210 | .slide ol ul, 211 | .slide ol ol, 212 | .slide ul ol { 213 | margin:0 0 0 38px; 214 | } 215 | .slide ol > li:before, 216 | .slide ul > li:before { 217 | position:absolute; 218 | margin-left:-120px; 219 | width:100px; 220 | color:rgb(62,62,62); 221 | text-align:right; 222 | } 223 | .slide ul > li:before { 224 | content:'\2022'; /* bull */ 225 | line-height:1.1; 226 | font-size:40px; 227 | } 228 | .slide ol > li:before { 229 | counter-increment:list; 230 | content:counter(list)'.'; 231 | } 232 | /* Inner navigation */ 233 | .inner li { 234 | opacity: 0.05; 235 | -webkit-transition: opacity 1s; 236 | -moz-transition: opacity 1s; 237 | -o-transition: opacity 1s; 238 | transition: opacity 1s; 239 | } 240 | .inner .active { 241 | opacity: 1; 242 | } 243 | 244 | /* Code */ 245 | .slide pre { 246 | margin:0 0 45px; 247 | counter-reset:code; 248 | white-space:normal; 249 | } 250 | .slide pre code { 251 | display:block; 252 | padding:0; 253 | background:none; 254 | white-space:pre; 255 | } 256 | .slide pre code:before { 257 | position:absolute; 258 | margin:0 0 0 -120px; 259 | width:110px; 260 | color:rgb(182, 182, 182); 261 | text-align:right; 262 | counter-increment:code; 263 | content:counter(code, decimal-leading-zero)'.'; 264 | } 265 | .slide pre mark { 266 | padding:3px 8px; 267 | -webkit-border-radius:8px; 268 | -moz-border-radius:8px; 269 | border-radius:8px; 270 | background:#FAFAA2; 271 | color:#000; 272 | font-style:normal; 273 | } 274 | .slide pre .important { 275 | background:#C00; 276 | color:#FFF; 277 | font-weight:normal; 278 | } 279 | .slide pre .comment { 280 | padding:0; 281 | background:none; 282 | color:#888; 283 | } 284 | 285 | /* Cover */ 286 | .slide.cover section { 287 | background:#000; 288 | overflow:hidden; 289 | } 290 | .slide.cover section:before { 291 | display:none; 292 | } 293 | .slide.cover .byline { 294 | color: #fff; 295 | text-align: right; 296 | position: absolute; 297 | bottom: 10px; 298 | right: 10px; 299 | } 300 | .slide.cover img, 301 | .slide.cover svg, 302 | .slide.cover video, 303 | .slide.cover object { 304 | position:absolute; 305 | top:0; 306 | left:50%; 307 | z-index:-1; 308 | height:100%; 309 | -webkit-transform:translateX(-50%); 310 | -moz-transform:translateX(-50%); 311 | -ms-transform:translateX(-50%); 312 | -o-transform:translateX(-50%); 313 | transform:translateX(-50%); 314 | } 315 | .slide.cover.w img, 316 | .slide.cover.w svg, 317 | .slide.cover.w video, 318 | .slide.cover.w object { 319 | top:50%; 320 | left:0; 321 | width:100%; 322 | height:auto; 323 | -webkit-transform:translateY(-50%); 324 | -moz-transform:translateY(-50%); 325 | -ms-transform:translateY(-50%); 326 | -o-transform:translateY(-50%); 327 | transform:translateY(-50%); 328 | } 329 | 330 | /* Shout */ 331 | .slide.shout section:before { 332 | display:none; 333 | } 334 | .slide.shout h2 { 335 | position:absolute; 336 | top:50%; 337 | left:0; 338 | width:100%; 339 | text-align:center; 340 | line-height:1; 341 | font-size:150px; 342 | -webkit-transform:translateY(-50%); 343 | -moz-transform:translateY(-50%); 344 | -ms-transform:translateY(-50%); 345 | -o-transform:translateY(-50%); 346 | transform:translateY(-50%); 347 | } 348 | .slide.shout h2 a[target=_blank] { 349 | margin:0; 350 | } 351 | .slide.shout h2 a[target=_blank]:after { 352 | content:''; 353 | } 354 | 355 | .slide.oneline section:before { 356 | display:none; 357 | } 358 | .slide.oneline h2 { 359 | position:absolute; 360 | top:50%; 361 | text-align:left; 362 | line-height:1; 363 | font-size:70px; 364 | -webkit-transform:translateY(-50%); 365 | -moz-transform:translateY(-50%); 366 | -ms-transform:translateY(-50%); 367 | -o-transform:translateY(-50%); 368 | transform:translateY(-50%); 369 | } 370 | .slide.oneline h2 a[target=_blank] { 371 | margin:0; 372 | } 373 | .slide.oneline h2 a[target=_blank]:after { 374 | content:''; 375 | } 376 | 377 | 378 | /* Middle */ 379 | .middle { 380 | position:absolute; 381 | top:50%; 382 | left:50%; 383 | -webkit-transform:translate(-50%, -50%); 384 | -moz-transform:translate(-50%, -50%); 385 | -ms-transform:translate(-50%, -50%); 386 | -o-transform:translate(-50%, -50%); 387 | transform:translate(-50%, -50%); 388 | } 389 | 390 | 391 | /* List 392 | ---------------------------------------- */ 393 | .list { 394 | float:left; 395 | padding:80px 0 80px 100px; 396 | background:#585A5E url(../images/bg-darkgrey-2.png) fixed; 397 | } 398 | 399 | /* Caption */ 400 | .list .caption { 401 | color:#fff; 402 | text-shadow:0 1px 1px #000; 403 | } 404 | .list .caption h1 { 405 | font:bold 50px/1 'Open Sans', sans-serif; 406 | } 407 | .list .caption a { 408 | color:#fff; 409 | text-shadow:0 -1px 1px #1F3F60; 410 | text-decoration:none; 411 | } 412 | .list .caption a:hover { 413 | color:#5ca4ed; 414 | } 415 | 416 | /* Slide */ 417 | .list .slide { 418 | position:relative; 419 | float:left; 420 | margin:0 50px 0 0; 421 | padding:80px 0 0; 422 | } 423 | .list .slide:after { 424 | position:absolute; 425 | bottom:-45px; 426 | left:60px; 427 | color:#3C3D40; 428 | text-shadow:0 1px 1px #8D8E90; 429 | line-height:1; 430 | font-weight:bold; 431 | font-size:25px; 432 | } 433 | .list .slide:target:after { 434 | text-shadow:0 -1px 1px #1F3F60; 435 | color:#fff; 436 | } 437 | .list .slide > div { 438 | position:relative; 439 | overflow:hidden; 440 | width:512px; 441 | height:320px; 442 | box-shadow:0 0 50px #3C3D40; 443 | border-radius:1px; 444 | background:rgba(0, 0, 0, 0.3); 445 | } 446 | .list .slide > div:hover { 447 | box-shadow: 448 | 0 0 0 10px rgba(60, 61, 64, 0.6), 449 | 0 0 50px #3C3D40; 450 | } 451 | .list .slide:target > div { 452 | box-shadow: 453 | 0 0 0 10px rgba(240,240,240, 1), 454 | 0 0 50px #3C3D40; 455 | } 456 | .list .slide section { 457 | -webkit-transform-origin:0 0; 458 | -webkit-transform:scale(0.5); 459 | -moz-transform-origin:0 0; 460 | -moz-transform:scale(0.5); 461 | -ms-transform-origin:0 0; 462 | -ms-transform:scale(0.5); 463 | -o-transform-origin:0 0; 464 | -o-transform:scale(0.5); 465 | transform-origin:0 0; 466 | transform:scale(0.5); 467 | } 468 | .list .slide section:after { 469 | position:absolute; 470 | top:0; 471 | right:0; 472 | bottom:0; 473 | left:0; 474 | content:''; 475 | } 476 | 477 | /* Small */ 478 | @media all and (max-width:1274px) { 479 | .list .slide:after { 480 | left:30px; 481 | } 482 | .list .slide > div { 483 | width:256px; 484 | height:160px; 485 | } 486 | .list .slide section { 487 | -webkit-transform:scale(0.25); 488 | -moz-transform:scale(0.25); 489 | -ms-transform:scale(0.25); 490 | -o-transform:scale(0.25); 491 | transform:scale(0.25); 492 | } 493 | } 494 | 495 | /* Full 496 | ---------------------------------------- */ 497 | .full { 498 | position:absolute; 499 | top:50%; 500 | left:50%; 501 | overflow:hidden; 502 | margin:-320px 0 0 -512px; 503 | width:1024px; 504 | height:640px; 505 | background:#000; 506 | } 507 | .full .caption { 508 | display:none; 509 | } 510 | .full .slide { 511 | position:absolute; 512 | visibility:hidden; 513 | } 514 | .full .slide:target { 515 | visibility:visible; 516 | } 517 | .full .slide:after { 518 | position:absolute; 519 | bottom:20px; 520 | right:90px; 521 | font-size: 16px; 522 | color:rgba(62,62,62,0.6); 523 | line-height:1; 524 | } 525 | .full .slide section { 526 | -webkit-transform:scale(1); 527 | -moz-transform:scale(1); 528 | -ms-transform:scale(1); 529 | -o-transform:scale(1); 530 | transform:scale(1); 531 | padding: 40px 120px; 532 | } 533 | .full .slide.cover { 534 | z-index:1; 535 | } 536 | .full .slide.cover:after, 537 | .full .slide.shout:after { 538 | content:''; 539 | } 540 | 541 | /* Progress */ 542 | .full .progress { 543 | position:absolute; 544 | right:118px; 545 | bottom:20px; 546 | left:118px; 547 | border-radius:2px; 548 | border:2px solid rgba(62,62,62, 0.3); 549 | } 550 | .full .progress DIV { 551 | width:0; 552 | height:10px; 553 | border-radius:2px; 554 | background:rgba(62, 62, 62, 0.2); 555 | -webkit-transition:width 0.2s linear; 556 | -moz-transition:width 0.2s linear; 557 | -ms-transition:width 0.2s linear; 558 | -o-transition:width 0.2s linear; 559 | transition:width 0.2s linear; 560 | } 561 | .full .progress-off { 562 | z-index:1; 563 | } 564 | 565 | /* special content styles */ 566 | .byline{ 567 | font-size: 20px; 568 | text-align: right; 569 | } 570 | 571 | small.byline{ 572 | position: absolute; 573 | font-size: 15px; 574 | text-align: right; 575 | bottom: 70px; 576 | right: 125px; 577 | } 578 | .right { 579 | float: right; 580 | position: relative; 581 | } 582 | .left { 583 | float: left; 584 | position: relative; 585 | padding-right: 80px; 586 | } 587 | .credits { 588 | font-size: 12px; 589 | position: absolute; 590 | bottom: 40px; 591 | left: 120px; 592 | } 593 | .demourl { 594 | font-size: 18px; 595 | position: absolute; 596 | bottom: 40px; 597 | width: 800px; 598 | text-align: center; 599 | } 600 | .demourl a { 601 | color:inherit; 602 | } 603 | .cover h2, .cover a { 604 | color:#fff; 605 | background: rgba(0,0,0,0.6); 606 | padding: 5px 10px; 607 | border-bottom: none; 608 | text-decoration: none; 609 | } 610 | .longlist { 611 | font-size: 20px; 612 | } 613 | .slide ul.longlist li:before { 614 | content:'\2022'; /* bull */ 615 | line-height:1.1; 616 | font-size:30px; 617 | } 618 | .lots li { 619 | float: left; 620 | width: 33%; 621 | font-size: 24px; 622 | } 623 | .slide ul.lots li:before { 624 | content:'\2022'; /* bull */ 625 | line-height:1.3; 626 | font-size:30px; 627 | } 628 | 629 | ul.oneline li { 630 | display: inline; 631 | padding-right: 1em; 632 | } 633 | ul.oneline li::before, ul.nobull li::before { 634 | content: ''; 635 | } 636 | ul.inline li { 637 | display: inline; 638 | padding-right: 0.2em; 639 | } 640 | ul.inline li::before { 641 | content: ''; 642 | } 643 | ul.inline li::after { 644 | content: ', '; 645 | } 646 | ul.inline li:last-child::after { 647 | content: '.'; 648 | } 649 | 650 | /* Notes */ 651 | .full .slide .notes { 652 | display:none; 653 | } 654 | .full .peek .notes { 655 | display: block; 656 | z-index: 20; 657 | font-size: 15px; 658 | } 659 | .full .notes, .list .notes { 660 | background: #fff; 661 | padding: 5px 10px; 662 | z-index: 10; 663 | display: block; 664 | position: absolute; 665 | bottom: -500px; 666 | left: 50px; 667 | right: 50px; 668 | -webkit-transition: bottom .5s; 669 | -moz-transition: bottom .5s; 670 | -ms-transition: bottom .5s; 671 | -o-transition: bottom .5s; 672 | transition: bottom .5s; 673 | } 674 | .list .slide:hover .notes { 675 | bottom: 15px; 676 | } 677 | .full .notes { 678 | bottom: 70px; 679 | } 680 | 681 | /* Live demos */ 682 | 683 | * [contenteditable] { 684 | display: block; 685 | white-space: pre; 686 | padding: 10px; 687 | transition: 1s; 688 | -webkit-transition: 1s; 689 | } 690 | * [contenteditable]:focus { 691 | background: #f8f8f8; 692 | 693 | } 694 | 695 | /* Meta */ 696 | .talkdescription { 697 | font-size: 12px; 698 | color: #fff; 699 | width: 80%; 700 | } 701 | .full .talkdescription { 702 | display: none; 703 | } 704 | .abstract { 705 | margin: 1em 0; 706 | font-size: 14px; 707 | background: rgba(0,0,0, .7); 708 | padding: .5em; 709 | } 710 | 711 | /* Animations */ 712 | 713 | .smoothdemo { 714 | transition: 0.5s; 715 | -webkit-transition: 0.5s; 716 | } 717 | 718 | .full .slide:target .swing { 719 | -moz-animation: swing linear 2s infinite; 720 | -moz-transform-origin: 0 -55%; 721 | -webkit-animation: swing ease-in-out 2s infinite; 722 | -webkit-transform-origin: 0 -55%; 723 | -o-animation: swing ease-in-out 2s infinite; 724 | -o-transform-origin: 0 -55%; 725 | animation: swing ease-in-out 2s infinite; 726 | transform-origin: 0 -55%; 727 | } 728 | @-moz-keyframes swing { 729 | 0% { -moz-transform: rotate3d(0deg,0,0) translate3d(-50%, -50%, 0); } 730 | 25% { -moz-transform: rotate(3deg) translate(-50%, -50%); } 731 | 50% { -moz-transform: rotate(0deg) translate(-50%, -50%); } 732 | 75% { -moz-transform: rotate(-3deg) translate(-50%, -50%); } 733 | 100% { -moz-transform: rotate(0deg) translate(-50%, -50%); } 734 | } 735 | @-webkit-keyframes swing { 736 | 0% {-webkit-transform: rotate(-3deg) translate(-50%, -50%); } 737 | 50% {-webkit-transform: rotate(3deg) translate(-50%, -50%); } 738 | 100% {-webkit-transform: rotate(-3deg) translate(-50%, -50%); } 739 | } 740 | 741 | @-o-keyframes swing { 742 | 0% { -o-transform: rotate(-3deg) translate(-50%, -50%); } 743 | 50% { -o-transform: rotate(3deg) translate(-50%, -50%); } 744 | 100% { -o-transform: rotate(-3deg) translate(-50%, -50%); } 745 | } 746 | @keyframes swing { 747 | 0% { transform: rotate(-3deg) translate(-50%, -50%); } 748 | 50% { transform: rotate(3deg) translate(-50%, -50%); } 749 | 100% { transform: rotate(-3deg) translate(-50%, -50%); } 750 | } 751 | 752 | /* Multilingual support */ 753 | 754 | .en-US, 755 | .zh-CN, 756 | .zh-TW, 757 | .ja-JP { 758 | display: none; 759 | } 760 | 761 | :lang(en-US) .en-US, 762 | :lang(zh-CN) .zh-CN, 763 | :lang(zh-TW) .zh-TW, 764 | :lang(ja-JP) .ja-JP { 765 | display: block; 766 | } 767 | 768 | #langMenuId { 769 | pointer-events: auto; 770 | } 771 | 772 | #langMenuDivId { 773 | position: absolute; 774 | left: 0px; 775 | right: 0px; 776 | text-align: center; 777 | bottom: 36px; 778 | pointer-events: none; 779 | } 780 | 781 | .list #langMenuDivId { 782 | display: none; 783 | } 784 | -------------------------------------------------------------------------------- /mozilla-sandstone-1280-1.key: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/mozilla-sandstone-1280-1.key -------------------------------------------------------------------------------- /mozilla-sandstone-1280.key: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/mozilla-sandstone-1280.key -------------------------------------------------------------------------------- /mozilla-sandstone-1280.key.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/mozilla-sandstone-1280.key.zip -------------------------------------------------------------------------------- /mozilla-sandstone-1280.ppt.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozilla/mozilla-presentation-templates/17d7d89bf7c4e2cf91f4a2c83efe9723808d34d5/mozilla-sandstone-1280.ppt.zip --------------------------------------------------------------------------------