Slide 1

Slide 1 text

REAL TIME WEB APPLICATIONS MIT HTML5 UND JAVASCRIPT Sebastian Springer / Thorsten Rinne N ACH M ITTAG

Slide 2

Slide 2 text

WEB STORAGE

Slide 3

Slide 3 text

WEB STORAGE •„kurzlebige“ Daten •sessionStorage Object •wird beim Schließen des Browsers gelöscht •„langlebige“ Daten •localStorage Objekt •wird nicht beim Schließen des Browsers gelöscht •produziert File I/O, läuft synchron WebKit/Blink Gecko Trident Presto 2 MB 5 MB ~ 200MB 5 MB 4 MB

Slide 4

Slide 4 text

WEB STORAGE

This page was requested if (!sessionStorage.pageCounter) { sessionStorage.setItem('pageCounter',0); } sessionStorage.setItem('pageCounter', parseInt(sessionStorage.pageCounter)+1); document.write(sessionStorage.pageCounter); times.

Slide 5

Slide 5 text

Demo Web App

Slide 6

Slide 6 text

FULL SCREEN API

Slide 7

Slide 7 text

FULL SCREEN API (CSS) #myelement: -webkit-full-screen { width: 100% } #myelement: -moz-full-screen { width: 100% } #myelement: -ms-full-screen { width: 100% } #myelement: -o-full-screen { width: 100% } #myelement: full-screen { width: 100% }

Slide 8

Slide 8 text

FULL SCREEN API (JS) $('#fullScreen').on('click', function (e) { var el = document.documentElement, requestFullScreen = el.requestFullScreen || el.webkitRequestFullScreen || el.mozRequestFullScreen; requestFullScreen.call(el); });

Slide 9

Slide 9 text

Demo Web App

Slide 10

Slide 10 text

CASCADING STYLE SHEETS

Slide 11

Slide 11 text

CSS LEVEL 3 • in der Entwicklung seit 2000 • modularer Aufbau • bekannte Module • Selectors Level 3 • Media Queries

Slide 12

Slide 12 text

BROWSER PREFIXES • -moz- • -ms- / -mso- • -kthml- • -webkit- • -o- • n/a • Gecko Engine (Mozilla) • Trident Engine (Microsoft) • KHTML (Konquerer) • Webkit (Safari) • Presto (Opera) ✝ • Blink (Chrome 28+, Opera)

Slide 13

Slide 13 text

BROWSER PREFIXES .round-corners { border-radius: 12px; -moz-border-radius: 12px; -webkit-border-radius: 12px; -o-border-radius: 12px; -khtml-border-radius: 12px; }

Slide 14

Slide 14 text

Opacity Opacity Opacity Opacity Opacity

Slide 15

Slide 15 text

OPACITY .my-opacity { opacity: 0.8; -ms-filter: "alpha(opacity=80)"; filter:alpha(opacity=80); }

Slide 16

Slide 16 text

Demo Web App

Slide 17

Slide 17 text

GRADIENTEN

Slide 18

Slide 18 text

GRADIENTEN background: linear-gradient(135deg, #4c4c4c 0%,#595959 12%,#666666 25%,#474747 39%,#2c2c2c 50%,#000000 51%,#111111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);

Slide 19

Slide 19 text

ANYONE?

Slide 20

Slide 20 text

GRADIENTEN filter: progid: DXImageTransform.Microsoft.gradient( startColorstr='#4c4c4c', endColorstr='#131313', GradientType=1 );

Slide 21

Slide 21 text

Demo Web App

Slide 22

Slide 22 text

BORDER RADIUS

Slide 23

Slide 23 text

BORDER RADIUS .curved { -moz-border-radius: 20px; -webkit-border-radius: 20px; -khtml-border-radius: 20px; border-radius: 20px; }

Slide 24

Slide 24 text

Demo Web App

Slide 25

Slide 25 text

BOX SHADOW

Slide 26

Slide 26 text

BOX SHADOW .shadow { -webkit-box-shadow: 2px 2px 2px 2px rgba(0, 0, 0, 1); box-shadow: 2px 2px 2px 2px rgba(0, 0, 0, 1); }

Slide 27

Slide 27 text

Demo Web App

Slide 28

Slide 28 text

MEDIA QUERIES

Slide 29

Slide 29 text

MEDIA QUERIES @media (min-width: 1200px) { ... } @media (min-width: 768px) and (max-width: 979px) { ... } @media (max-width: 767px) { ... } @media (max-width: 480px) { ... }

Slide 31

Slide 31 text

SELECTORS LEVEL3 • p:nth-child(2n) Jedes 2.

Element seines Elternelements • :root Das Rootelement eines Dokuments • :empty Jedes Element ohne Kindelemente

Slide 32

Slide 32 text

SELECTORS LEVEL3 • input:enabled Jedes aktive Element • input:disabled Jedes nicht aktive Element • input:checked Jedes „ge-checkte“ Element (Checkbox)

Slide 33

Slide 33 text

Demo Web App

Slide 34

Slide 34 text

GRID LAYOUT

Slide 35

Slide 35 text

TABLE LAYOUT

Slide 36

Slide 36 text

TABLE LAYOUT • table-layout: auto • table-layout: fixed A B CDEFGH A B CDEFGH

Slide 37

Slide 37 text

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. MULTI COLUMNS

Slide 38

Slide 38 text

MULTI COLUMNS .columns{ column-count: 4; column-gap: 10px; }

Slide 39

Slide 39 text

CSS3GENERATOR.COM • border-radius • box-shadow / text-shadow • Gradienten • Transitions • Fonts

Slide 40

Slide 40 text

CSS3GENERATOR.COM

Slide 41

Slide 41 text

OFFLINE APPS

Slide 42

Slide 42 text

OFFLINE APPS • Manifestdatei enthält die Konfiguration • manifest-Attribut im html-Tag aktiviert Caching • Verwaltung unter Chrome: chrome://appcache-internals/

Slide 43

Slide 43 text

Demo Web App

Slide 44

Slide 44 text

CANVAS

Slide 45

Slide 45 text

Demo

Slide 46

Slide 46 text

WEB FONTS

Slide 47

Slide 47 text

Demo Web App

Slide 48

Slide 48 text

ANIMATIONS

Slide 49

Slide 49 text

Demo Web App

Slide 50

Slide 50 text

TRANSITIONS

Slide 51

Slide 51 text

Demo Web App

Slide 52

Slide 52 text

FILE API

Slide 53

Slide 53 text

GEOLOCATION

Slide 54

Slide 54 text

GEOLOCATION if (navigator.geolocation) { navigator.geolocation.getCurrentPosition( function(position) { var lat = position.coords.latitude; var lng = position.coords.longitude; var options = { position: new google.maps.LatLng(lat, lng) } var marker = new google.maps.Marker(options); marker.setMap(map); }); }

Slide 55

Slide 55 text

PUSH STATE HASH CHANGE VS

Slide 56

Slide 56 text

INDEXEDDB

Slide 57

Slide 57 text

WEB WORKERS

Slide 58

Slide 58 text

WEBWORKER var myWorker = new Worker('backgroundtask.js'); myWorker.onmessage = function(event) { alert(event.data); }; self.onmessage = function(event) { // Do some heavy work self.postMessage('Hello, Berlin!'); } backgroundtask.js main.js

Slide 59

Slide 59 text

Demo

Slide 60

Slide 60 text

WEB SOCKETS

Slide 61

Slide 61 text

Demo Web App

Slide 62

Slide 62 text

LITTLE HELPERS

Slide 63

Slide 63 text

No content

Slide 64

Slide 64 text

No content

Slide 65

Slide 65 text

BROWSER VERSION DETECTION BROWSER FEATURE DETECTION

Slide 66

Slide 66 text

POLYFILLS

Slide 67

Slide 67 text

POLYFILLS https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross- browser-Polyfills

Slide 68

Slide 68 text

No content

Slide 69

Slide 69 text

yepnope({ test : Modernizr.geolocation, yep : 'normal.js', nope : ['polyfill.js', 'wrapper.js'] });

Slide 70

Slide 70 text

FRAMEWORKS

Slide 71

Slide 71 text

FRAMEWORKS • Bootstrap • Foundation v3 • Foundation v4 • Skeleton • 960.gs • http://responsive.vermilion.com/compare.php

Slide 72

Slide 72 text

LESS / SASS

Slide 73

Slide 73 text

Demo Web App

Slide 74

Slide 74 text

No content

Slide 75

Slide 75 text

No content

Slide 76

Slide 76 text

MOZILLA DEVELOPER NETWORK

Slide 77

Slide 77 text

No content

Slide 78

Slide 78 text

FRAGEN?

Slide 79

Slide 79 text

KONTAKT Sebastian Springer sebastian.springer@mayflower.de Mayflower GmbH Mannhardtstr. 6 80538 München Deutschland @basti_springer https://github.com/sspringer82 Thorsten Rinne [email protected] Yatego GmbH Kobellstr. 15 80336 München Deutschland @ThorstenRinne https://github.com/thorsten