SlideShare una empresa de Scribd logo
1 de 45
Descargar para leer sin conexión
Conception d'Applications
Interactives :
Applications Web et JEE
Séance #1
Côté navigateur
HTML5 / CSS / JS / AngularJS
Description du module
● Côté navigateur
○ HTML5 / CSS / JS / AngularJS

● Côté serveur - Concepts
○ J2EE, Serveurs d'applications, Servlets/JSP, Spring
MVC WebServices, Cloud avec Angular JS

● Côté serveur - Frameworks RAD
○ Grails

● Nouveaux langages et paradigmes
○ Dart, NodeJS...

● Sortons un peu du monde JEE :
○ NodeJS, Dart

● Examen et projet
Côté navigateur
● Les bases du web
○ HTTP, URL, HTML, CSS, JS, AJAX...

● HTML5
○ HTML5, CSS3, le casse-tête des navigateurs...
○ Le web en 2013, le responsive design

● Twitter Bootstrap
○ Outils, échafaudage, LessCSS, JQuery

● Le développeur web en 2013
○ Rôles, technologies, langages, veille technologique

● AngularJS
○ Modèle MVC côté navigateur
HTML5
●
●
●
●
●

Le buzzword - HTML5, c'est quoi ?
HTML 5
CSS 3
Le casse-tête des navigateurs...
Le web en 2012, le responsive design
Le buzzword
HTML5, c'est quoi ?
L’HTML 5 n’est pas…
"L’HTML5, c’est un nouveau langage ?"
"Je débute, j’ai envie d’apprendre l’HTML5 directement,
ça a l’air mieux que l’HTML d’avant."
"Pfff, moi qui venais d’apprendre l’HTML,
je vais devoir tout réapprendre…"

L’HTML5 n’est pas un nouveau langage
L'HTML5 est...
● Une évolution d'HTML 4
○ Qu'on a survolé précédement

● Deux syntaxes : HTML5 et XHTML5
● Des nouvelles fonctionnalités
● Une couche d'application
○ Des APIs
L'HTML5 et les standards
● W3C définit les standards du web
○ Chargé d'élaborer le standard HTML5
○ Processus très lent et bureaucratique

● WHATWG
Web Hypertext Application Technology Working Group
○ Groupe dissident du W3C
○ Des développeurs des navigateurs
○ Approche pratique

● Les deux travaillent en parallèle
○ Sur le même document
Alors, deux standards HTML5 ?

● En 2012 le W3C et le WHATWG ont décidé de suivre
des chemins séparés
○ W3C travaille pour un standard fixe
■ Un snapshop de l'état actuel : HTML5
○ WHATWG travaille sur un living standard
■ En évolution permanente : HTML

● Approches complémentaires
Les nouveautés de HTML5
●
●
●
●
●
●
●
●
●
●

Allègement du code
Nouvelles balises sémantiques
Disparition de balises de mise en forme
Nouveau modèle de contenu
Balises multimédia
Formulaires avec sémantique
Stockage local
Glisser-Déposer
Géolocalisation
Websockets
Les nouveautés de HTML5 Allègement du code
●

Allègement de l'entête head
○ Le doctype, les balises meta, l'encodage des
caractères, les balises style et script

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="design.
css" />
<script type=”text/javascript” src=script.js"></script>
</head>

●

Simplifications en général
○ Certaines discutables
(pas de /> pour balises vides)

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="design.
css" />
<script src="script.js"></script>
</head>
Les nouveautés de HTML5 Nouvelles balises sémantiques
● Des balises avec du sens sémantique
○ Plus spécifiques que les génériques
○ Structuration du document

●
●
●
●
●
●

<header> : indique une en-tête

Image : Alsa Creations

<footer> : indique un pied de page
<nav> : indique un élément de navigation (menu...)
<aside> : indique une zone secondaire (sidebar, publicité...)
<section> : indique une portion de la page
<article> : indique une portion de la page avec du sens en lui-même
Les nouveautés de HTML5 Disparition de balises de mise en forme
● Meilleure séparation entre forme et contenu
● Disparition de balises sans sens sémantique
○ Telles que center, font, big, strike ou u
● La mise en forme se fait avec les CSS
Les nouveautés de HTML5 Nouvelles modèle de contenu
● Avant : modèle inline-block
● Maintenant : des catégories
○ Chaque élément dans 0 ou plus catégories
● Structuration logique du
document

Image : WHATWG
Les nouveautés de HTML5 Balises multimédia

● <video> : introduit un lecteur vidéo ayant
une URL comme source
● <audio> : introduit un lecteur audio ayant
une URL comme source
● <canvas> : introduit une surface de dessin
○ Dessiner, tracer des formes, les animer...
Les nouveautés de HTML5 Formulaires avec sémantique
● Des nouveaux types pour la balise <input>

○
○
○
○
○
○
○
○

tel
email
url
date, day, month, year, week
number
range
search
color
Les nouveautés de HTML5 Stockage local
● Stocker des informations côté navigateur
○ Système clé-valeur
○ Chaque domaine a son sandbox
● Applications web déconnectés
localStorage['maCle'] = "Ma valeur";

Stocker une valeur :

ou

localStorage.setitem("maCle", "Ma valeur");

localStorage['maCle'];

ou

Récupérer une valeur :
localStorage.getitem['maCle'];

Effacer une clé :

Tester si le navigateur
supporte le stockage local
:

removeItem("maCle");

if (localStorage) {
// Le navigateur supporte le localStorage
} else {
// localStorage non supporté
}
Les nouveautés de HTML5 Géolocalisation
● Spécification W3C propre associée à HTML5
● Permet de géolocaliser le navigateur
○ GPS, triangulation GSM, triangulation wifi, adresse IP
● Pour Wifi et IP, utilisation de BDD de géolocalisation
○ E.g : https://www.google.com/loc/json
● API asynchrone
○ Fonction callback pour récevoir la réponse
function maPosition(position) {
var infopos = "Position déterminée :n";
infopos += "Latitude : "+position.coords.latitude +"n"
infopos += "Longitude: "+position.coords.longitude+"n";
infopos += "Altitude : "+position.coords.altitude +"n";
document.getElementById("infoposition").innerHTML = infopos;
}
// Pour connaître la position
navigator.geolocation.getCurrentPosition(maPosition);
// Pour suivre la position
var survId = navigator.geolocation.watchPosition(maPosition);
// Pour annuler le suivi de position
navigator.geolocation.clearWatch(survId);
Les nouveautés de HTML5 Glisser-Déposer
●
●
●
●
●

Permet de déplacer des éléments entre des applications et le navigateur
○ API JavaScript native HTML5
Attribute draggable : élément déplaçable
Événement dragstart : généré au début du transfert
Événement dragover : généré au survole d'un élément pendant la glisse
Événement drop : généré en fin de transfert
function dragstart(target, e) {
e.dataTransfer.setData('text/plain', "Texte transmis"");
}
function dragover(target, e) {
e.preventDefault(); // Annule l'interdiction de drop
}
function drop(target, e) {
e.preventDefault(); // Annule l'interdiction de drop
alert('Vous avez bien déposé votre élément !');
}
<div id="source" draggable="true" ondragstart="dragstart(this,
event)"> Élement source </div>
<div id="target" ondragover="dragover(this,event)"
ondrop="drop(this,event)"> Élement cible </div>
Les nouveautés de HTML5 Websockets
● HTTP standard : requête-réponse
○ Du navigateur au serveur

● Websockets :
communication
bi-directionnelle
○ Plus besoin de
polling, long-polling
ou autres
CSS3
Les CSS3, c'est quoi ?
"C'est quoi le CSS3 ? Ca a un rapport avec HTML5"

● Le CCS3 n'est pas forcément lié à HTML5
● Une évolution majeure des CSS
○
○
○
○
○
○

Nouveaux sélecteurs
Nouvelles façons de spécifier les couleurs
Détection des caractéristiques des terminaux
Des calculs dans la feuille de style
Des SVG en arrière plan
...
Exemple classique :
Les coins arrondis
● Boîte avec coins arrondis avant CSS3
○

Une <table> avec 9 cases, chacune avec des images de fond

● Boîte avec coins arrondis avec CSS3
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<style>
.boite_arrondie {
background: #eeeeee;
border: 2px solid black;
border-radius: 20px;
width: 200px; height: 80px;
margin: auto; padding: 20px;
}
</style>
</head>
<div class="boite_arrondie">
Oh la jolie boîte !
</div>
</hmtl>
Les nouveautés CSS3
● Effets visuels
● Sélecteurs
● Nouveaux outils
Les nouveautés CSS3 Effets visuels
● border-radius
border-radius: 20px;

● text-shadow
text-shadow:
4px 4px 3px #ff0000;

● box-shadow
box-shadow:

● font-face
@font-face {

10px 10px 5px #000088;

font-family: 'Luckiest Guy';
src:url("luckiest-guy-regular.otf")
}
...
font-family:'Luckiest Guy';
Les nouveautés CSS3 Effets visuels
● gradient
background-image:
linear-gradient(right top,
#D60F0F 0%, #FFDD00 100%);

● opacity
background: rgba(0, 180, 0, 0.5);
Les nouveautés CSS3 Effets visuels : transform
● transform : rotate
transform:

rotate(30deg)

● transform : skew
transform: skew(15deg, 30deg);

● transform : scale
transform:

scale(1,0.25)

● transform : translate
-webkit-transform: translate(30px, 30px);
Les nouveautés CSS3 Effets visuels : Transitions
● Des propriétés
○

transition-property : Propriétés CSS à transformer

■
○

transition-duration : Durée de la transition

■
○

en secondes ou millisecondes

transition-timing-function :

■

○

couleurs, position, dimensions, transformations, visibilité, ombres, dégradés

Fonction de transition, modèle d'interpolation (accélération, décélération...)

transition-delay : Retard du départ de la transition

■

en secondes ou millisecondes
Les nouveautés CSS3 Effets visuels : Transitions
● Déclenchement
.transition {
background: #aaa;
transition-property
transition-duration
color: white;
}
.transition:hover {
transition-property
transition-duration
color: black;
}

: color;
: 5s;

: color;
: 5s;
Les nouveautés CSS3 Tranformées en 3D
● perspective
transform:
perspective(600px)
rotateX(40deg );

● rotateX, rotateY, rotateZ
● translateX, translateY, translateZ
Les nouveautés CSS3 Animations
● Des keyframes
@keyframes rotateCube {
0% {
transform: rotateX(

0deg ) rotateY(

0deg );

}
100% {
transform: rotateX( 360deg ) rotateY( 360deg );
}
}

● Des animations
animation: rotateCube 8s infinite linear;
Exemple :
le cube des navigateurs
● translateX, translateY, translateZ
● rotateX, rotateY, rotateZ
● animation, @keyframes
Le casse-tête des navigateurs
Les coins arrondis :
Les préfixes vendeurs
● Vous souvenez-vous des coins arrondis ?
border-radius: 20px;

○

Jusqu'à il n'y a pas longtemps, cela ne marchait pas partout

● CSS3 considéré expérimental,
chaque navigateur implémentait à sa façon
○ Des préfixes propriétaires ou préfixes vendeurs
■ Les principaux ? -moz pour Firefox, -webkit pour
Chrome/Safari

○

Oblligation de les mettre pour atteindre tout le monde
-moz-border-radius: 20px;
-webkit-border-radius: 20px;
border-radius: 20px;
Les coins arrondis :
Et sur les vieux IE ?
● Et comment on fait sur IE8 ou IE7 ?
Ou même IE6 ?

● C'est grave si ça ne marche pas ?
○
○

Pas pour des coins arrondis
Oui si cela gêne le fonctionnement !

● On peut faire quoi
○
○

Essayer Modernizr et utiliser polyfills
Vérifier fonctionnement dans vieux navigateurs
Modernizr.load({
test: Modernizr.geolocation,
yep : 'geo.js',
nope: 'geo-polyfill.js'
});
Le problème...
● HTML5 et CSS3 pas encore figés dans le marbre
○
○
○

Le niveau de support change selon les navigateurs et les versions
Des fonctions non implémentées
Des fonctions avec des noms différents

● Certaines propriétés sont supportées un peu partout
○

D'autres seulement sur quelques rares navigateurs

● Quand et quoi utiliser ?
○

Ca dépend de l'application

■
○

Public cible...

Et de la criticité du composant

■

Si pas supporté, l'appli reste utilisable ?
Puis-je l'utiliser ?
Avec des préfixes ?
● Dans le doute, consulter Can I use... ?
○

Support par navigateur pour chaque élément HTML5/CSS3/JS

● Ou le très beau HTML5 Readiness
Pour aller plus loin
Pour aller plus loin
● Pour apprendre et se tenir informés :
HTML5 Rocks!
Twitter Bootstrap
Car nous ne sommes pas
tous des graphistes
C'est très beau ça... mais le
design graphique me fait peur !
● Si on fait du web en 2013 on ne peut pas
se passer du HTML5/CSS3/JS
○ Mais la plupart des développeurs n'aiment pas concevoir des
interfaces

●
●

○ On n'est pas des graphistes !
Quoi faire ?

● Solution 1: Venir à la séssion FinistJUG d'avril
○ JavaScript pour des développeurs Java
● Solution 2 : Utiliser Twitter Bootstrap
C'est quoi Twitter Bootstrap
● Constats chez Twitter en 2009 :

●

○ Les développeurs d'applications web n'aiment pas
faire de l'IHM web
○ A chaque nouvelle application, on refaisait une IHM
○ Soucis d'ergonomie, d'uniformité, d'esthétisme
Solution : faire un boîte à utils HTML5/CSS3/JS
○ Pour IHMs performantes, egonomiques et jolies
○ Simple à utiliser
■ Permettant à un développeur de faire des IHMs
belles et efficaces
○ Lingua franca entre graphistes et développeurs
La panoplie Twitter Bootstrap

● Des éléments de base, des composants, des
widgets complèxes...
● Modulable
● Responsive
Facile à intégrer,
facile à personnaliser
●
●
●
●

Il suffit d'embarquer les JS et CSS Bootstrap
Les composants sont des classes CSS
Pas besoin de prise de tête avec la présentation
Responsive, adaptable à tout terminal
Mais je veux ma présentation à moi

● Des thèmes
○
○
○

Permettant de garder la puissance Bootstrap
Adaptant le look à ce que je veux
Toujours sans prise de tête développeur
Lingua franca ?
● Les graphistes web aiment Bootstrap

●
●

○ Ergonomie soignée
○ CSS claires et structurées
○ Simplicité d'adaptation et personnalisation des thèmes
Les développeurs aiment Bootstrap
Les graphistes et développeurs comprennent Bootstrap
Langage commun entre
développeurs et graphistes

● Le graphiste fournit des maquettes en Bootstrap
● Le développeur adapte sa logique IHM à Bootstrap

Más contenido relacionado

Destacado

Chp1 - Introduction au Développement Mobile
Chp1 - Introduction au Développement MobileChp1 - Introduction au Développement Mobile
Chp1 - Introduction au Développement MobileLilia Sfaxi
 
Responsive web-design through bootstrap
Responsive web-design through bootstrapResponsive web-design through bootstrap
Responsive web-design through bootstrapZunair Sagitarioux
 
Rapport de projet de fin d'étude licence informatique et multimédia
Rapport de projet de fin d'étude licence informatique et multimédiaRapport de projet de fin d'étude licence informatique et multimédia
Rapport de projet de fin d'étude licence informatique et multimédiaNazih Heni
 
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Riadh K.
 
Rapport Projet de fin d'etude sur le parc informatique
Rapport Projet  de fin d'etude sur le parc informatiqueRapport Projet  de fin d'etude sur le parc informatique
Rapport Projet de fin d'etude sur le parc informatiqueHicham Ben
 
Utiliser Joomla 3 et Bootstrap 3 depuis une application externe
Utiliser Joomla 3 et Bootstrap 3 depuis une application externeUtiliser Joomla 3 et Bootstrap 3 depuis une application externe
Utiliser Joomla 3 et Bootstrap 3 depuis une application externeWeb21 France
 
Projet de fin d'etude gestion informatique
Projet de fin d'etude gestion informatiqueProjet de fin d'etude gestion informatique
Projet de fin d'etude gestion informatiquejihene Ab
 
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Riadh K.
 
Twitter Bootstrap par Antoine Guédès et Cédric Dussart
Twitter Bootstrap par Antoine Guédès et Cédric DussartTwitter Bootstrap par Antoine Guédès et Cédric Dussart
Twitter Bootstrap par Antoine Guédès et Cédric DussartLa FeWeb
 
Application web php5 html5 css3 bootstrap
Application web php5 html5 css3 bootstrapApplication web php5 html5 css3 bootstrap
Application web php5 html5 css3 bootstrapBassem ABCHA
 
News diapo 2
News diapo 2News diapo 2
News diapo 2lucifer
 
Entretien avec Fabien Galthié dans Midol - 15 juin
Entretien avec Fabien Galthié dans Midol - 15 juinEntretien avec Fabien Galthié dans Midol - 15 juin
Entretien avec Fabien Galthié dans Midol - 15 juinMarc De Jongy
 
Irdevacaciones
IrdevacacionesIrdevacaciones
IrdevacacionesMayte15
 
Saga Web : normes et réglementation
Saga Web : normes et réglementation Saga Web : normes et réglementation
Saga Web : normes et réglementation Groupe AFNOR
 
ACTIVITÉS PHISIQUES
ACTIVITÉS PHISIQUESACTIVITÉS PHISIQUES
ACTIVITÉS PHISIQUESouchene
 
Applications d’entreprise
Applications d’entrepriseApplications d’entreprise
Applications d’entreprisexpmigration
 

Destacado (20)

Chp1 - Introduction au Développement Mobile
Chp1 - Introduction au Développement MobileChp1 - Introduction au Développement Mobile
Chp1 - Introduction au Développement Mobile
 
Responsive web-design through bootstrap
Responsive web-design through bootstrapResponsive web-design through bootstrap
Responsive web-design through bootstrap
 
Rapport de projet de fin d'étude licence informatique et multimédia
Rapport de projet de fin d'étude licence informatique et multimédiaRapport de projet de fin d'étude licence informatique et multimédia
Rapport de projet de fin d'étude licence informatique et multimédia
 
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
 
Rapport Projet de fin d'etude sur le parc informatique
Rapport Projet  de fin d'etude sur le parc informatiqueRapport Projet  de fin d'etude sur le parc informatique
Rapport Projet de fin d'etude sur le parc informatique
 
Utiliser Joomla 3 et Bootstrap 3 depuis une application externe
Utiliser Joomla 3 et Bootstrap 3 depuis une application externeUtiliser Joomla 3 et Bootstrap 3 depuis une application externe
Utiliser Joomla 3 et Bootstrap 3 depuis une application externe
 
Projet de fin d'etude gestion informatique
Projet de fin d'etude gestion informatiqueProjet de fin d'etude gestion informatique
Projet de fin d'etude gestion informatique
 
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
 
Twitter Bootstrap par Antoine Guédès et Cédric Dussart
Twitter Bootstrap par Antoine Guédès et Cédric DussartTwitter Bootstrap par Antoine Guédès et Cédric Dussart
Twitter Bootstrap par Antoine Guédès et Cédric Dussart
 
Application web php5 html5 css3 bootstrap
Application web php5 html5 css3 bootstrapApplication web php5 html5 css3 bootstrap
Application web php5 html5 css3 bootstrap
 
Barcelona guide-rapide
Barcelona guide-rapideBarcelona guide-rapide
Barcelona guide-rapide
 
News diapo 2
News diapo 2News diapo 2
News diapo 2
 
Entretien avec Fabien Galthié dans Midol - 15 juin
Entretien avec Fabien Galthié dans Midol - 15 juinEntretien avec Fabien Galthié dans Midol - 15 juin
Entretien avec Fabien Galthié dans Midol - 15 juin
 
Irdevacaciones
IrdevacacionesIrdevacaciones
Irdevacaciones
 
Saga Web : normes et réglementation
Saga Web : normes et réglementation Saga Web : normes et réglementation
Saga Web : normes et réglementation
 
Mercadeo en Redes Sociales
Mercadeo en Redes SocialesMercadeo en Redes Sociales
Mercadeo en Redes Sociales
 
ACTIVITÉS PHISIQUES
ACTIVITÉS PHISIQUESACTIVITÉS PHISIQUES
ACTIVITÉS PHISIQUES
 
Blogs
BlogsBlogs
Blogs
 
Applications d’entreprise
Applications d’entrepriseApplications d’entreprise
Applications d’entreprise
 
Madre
MadreMadre
Madre
 

Más de Horacio Gonzalez

Il n'y a pas que Polymer dans la vie… - RennesJS - 2017-06-27
Il n'y a pas que Polymer dans la vie… - RennesJS - 2017-06-27Il n'y a pas que Polymer dans la vie… - RennesJS - 2017-06-27
Il n'y a pas que Polymer dans la vie… - RennesJS - 2017-06-27Horacio Gonzalez
 
But there is no web component for that - Web Components Remote Conference - 2...
But there is no web component for that - Web Components Remote Conference - 2...But there is no web component for that - Web Components Remote Conference - 2...
But there is no web component for that - Web Components Remote Conference - 2...Horacio Gonzalez
 
Mixité dans le monde des WebComponents - DevFest Toulouse - 2017-09-27
 Mixité dans le monde des WebComponents - DevFest Toulouse - 2017-09-27 Mixité dans le monde des WebComponents - DevFest Toulouse - 2017-09-27
Mixité dans le monde des WebComponents - DevFest Toulouse - 2017-09-27Horacio Gonzalez
 
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 2/3 - HTML5, CSS3, Twitter B...
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 2/3 - HTML5, CSS3, Twitter B...ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 2/3 - HTML5, CSS3, Twitter B...
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 2/3 - HTML5, CSS3, Twitter B...Horacio Gonzalez
 
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JSENIB 2016 2017 - CAI Web S02E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JSHoracio Gonzalez
 
Battle of Frameworks: Polymer - Meetup Paris Web Components - 2016-09
Battle of Frameworks: Polymer - Meetup Paris Web Components - 2016-09Battle of Frameworks: Polymer - Meetup Paris Web Components - 2016-09
Battle of Frameworks: Polymer - Meetup Paris Web Components - 2016-09Horacio Gonzalez
 
Mixing Web Components - Best of Web Paris - 2016 06-09
Mixing Web Components - Best of Web Paris - 2016 06-09Mixing Web Components - Best of Web Paris - 2016 06-09
Mixing Web Components - Best of Web Paris - 2016 06-09Horacio Gonzalez
 
Polymer in the real life - Devoxx France - 2016 04-20
Polymer in the real life - Devoxx France - 2016 04-20Polymer in the real life - Devoxx France - 2016 04-20
Polymer in the real life - Devoxx France - 2016 04-20Horacio Gonzalez
 
Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24
Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24 Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24
Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24 Horacio Gonzalez
 
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScript
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScriptENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScript
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScriptHoracio Gonzalez
 
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 3/3 - Web Components avec Po...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 3/3 - Web Components avec Po...ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 3/3 - Web Components avec Po...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 3/3 - Web Components avec Po...Horacio Gonzalez
 
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...Horacio Gonzalez
 
ENIB 2015 2016 - CAI Web S02E03 - Forge JS 2/4 - MongoDB and NoSQL
ENIB 2015 2016 - CAI Web S02E03 - Forge JS 2/4 - MongoDB and NoSQLENIB 2015 2016 - CAI Web S02E03 - Forge JS 2/4 - MongoDB and NoSQL
ENIB 2015 2016 - CAI Web S02E03 - Forge JS 2/4 - MongoDB and NoSQLHoracio Gonzalez
 
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JS
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JSENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JS
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JSHoracio Gonzalez
 
ENIB 2015-2016 - CAI Web - S01E01- MongoDB and NoSQL
ENIB 2015-2016 - CAI Web - S01E01- MongoDB and NoSQLENIB 2015-2016 - CAI Web - S01E01- MongoDB and NoSQL
ENIB 2015-2016 - CAI Web - S01E01- MongoDB and NoSQLHoracio Gonzalez
 
ENIB 2015-2016 - CAI Web - S01E01- La forge JavaScript
ENIB 2015-2016 - CAI Web - S01E01- La forge JavaScriptENIB 2015-2016 - CAI Web - S01E01- La forge JavaScript
ENIB 2015-2016 - CAI Web - S01E01- La forge JavaScriptHoracio Gonzalez
 
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JSENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JSHoracio Gonzalez
 
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 3/3 - Web components avec ...
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 3/3 - Web components avec ...ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 3/3 - Web components avec ...
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 3/3 - Web components avec ...Horacio Gonzalez
 
Beyond Polymer - JUG Summer Camp - 2015-09-18
Beyond Polymer - JUG Summer Camp - 2015-09-18Beyond Polymer - JUG Summer Camp - 2015-09-18
Beyond Polymer - JUG Summer Camp - 2015-09-18Horacio Gonzalez
 
Mixing Web Components - Paris Web Components - 2015 09-16
Mixing Web Components - Paris Web Components - 2015 09-16 Mixing Web Components - Paris Web Components - 2015 09-16
Mixing Web Components - Paris Web Components - 2015 09-16 Horacio Gonzalez
 

Más de Horacio Gonzalez (20)

Il n'y a pas que Polymer dans la vie… - RennesJS - 2017-06-27
Il n'y a pas que Polymer dans la vie… - RennesJS - 2017-06-27Il n'y a pas que Polymer dans la vie… - RennesJS - 2017-06-27
Il n'y a pas que Polymer dans la vie… - RennesJS - 2017-06-27
 
But there is no web component for that - Web Components Remote Conference - 2...
But there is no web component for that - Web Components Remote Conference - 2...But there is no web component for that - Web Components Remote Conference - 2...
But there is no web component for that - Web Components Remote Conference - 2...
 
Mixité dans le monde des WebComponents - DevFest Toulouse - 2017-09-27
 Mixité dans le monde des WebComponents - DevFest Toulouse - 2017-09-27 Mixité dans le monde des WebComponents - DevFest Toulouse - 2017-09-27
Mixité dans le monde des WebComponents - DevFest Toulouse - 2017-09-27
 
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 2/3 - HTML5, CSS3, Twitter B...
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 2/3 - HTML5, CSS3, Twitter B...ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 2/3 - HTML5, CSS3, Twitter B...
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 2/3 - HTML5, CSS3, Twitter B...
 
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JSENIB 2016 2017 - CAI Web S02E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
 
Battle of Frameworks: Polymer - Meetup Paris Web Components - 2016-09
Battle of Frameworks: Polymer - Meetup Paris Web Components - 2016-09Battle of Frameworks: Polymer - Meetup Paris Web Components - 2016-09
Battle of Frameworks: Polymer - Meetup Paris Web Components - 2016-09
 
Mixing Web Components - Best of Web Paris - 2016 06-09
Mixing Web Components - Best of Web Paris - 2016 06-09Mixing Web Components - Best of Web Paris - 2016 06-09
Mixing Web Components - Best of Web Paris - 2016 06-09
 
Polymer in the real life - Devoxx France - 2016 04-20
Polymer in the real life - Devoxx France - 2016 04-20Polymer in the real life - Devoxx France - 2016 04-20
Polymer in the real life - Devoxx France - 2016 04-20
 
Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24
Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24 Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24
Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24
 
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScript
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScriptENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScript
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScript
 
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 3/3 - Web Components avec Po...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 3/3 - Web Components avec Po...ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 3/3 - Web Components avec Po...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 3/3 - Web Components avec Po...
 
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...
 
ENIB 2015 2016 - CAI Web S02E03 - Forge JS 2/4 - MongoDB and NoSQL
ENIB 2015 2016 - CAI Web S02E03 - Forge JS 2/4 - MongoDB and NoSQLENIB 2015 2016 - CAI Web S02E03 - Forge JS 2/4 - MongoDB and NoSQL
ENIB 2015 2016 - CAI Web S02E03 - Forge JS 2/4 - MongoDB and NoSQL
 
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JS
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JSENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JS
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JS
 
ENIB 2015-2016 - CAI Web - S01E01- MongoDB and NoSQL
ENIB 2015-2016 - CAI Web - S01E01- MongoDB and NoSQLENIB 2015-2016 - CAI Web - S01E01- MongoDB and NoSQL
ENIB 2015-2016 - CAI Web - S01E01- MongoDB and NoSQL
 
ENIB 2015-2016 - CAI Web - S01E01- La forge JavaScript
ENIB 2015-2016 - CAI Web - S01E01- La forge JavaScriptENIB 2015-2016 - CAI Web - S01E01- La forge JavaScript
ENIB 2015-2016 - CAI Web - S01E01- La forge JavaScript
 
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JSENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
 
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 3/3 - Web components avec ...
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 3/3 - Web components avec ...ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 3/3 - Web components avec ...
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 3/3 - Web components avec ...
 
Beyond Polymer - JUG Summer Camp - 2015-09-18
Beyond Polymer - JUG Summer Camp - 2015-09-18Beyond Polymer - JUG Summer Camp - 2015-09-18
Beyond Polymer - JUG Summer Camp - 2015-09-18
 
Mixing Web Components - Paris Web Components - 2015 09-16
Mixing Web Components - Paris Web Components - 2015 09-16 Mixing Web Components - Paris Web Components - 2015 09-16
Mixing Web Components - Paris Web Components - 2015 09-16
 

ENIB 2013-2014 - CAI Web #1: Côté navigateur 2/3

  • 1. Conception d'Applications Interactives : Applications Web et JEE Séance #1 Côté navigateur HTML5 / CSS / JS / AngularJS
  • 2. Description du module ● Côté navigateur ○ HTML5 / CSS / JS / AngularJS ● Côté serveur - Concepts ○ J2EE, Serveurs d'applications, Servlets/JSP, Spring MVC WebServices, Cloud avec Angular JS ● Côté serveur - Frameworks RAD ○ Grails ● Nouveaux langages et paradigmes ○ Dart, NodeJS... ● Sortons un peu du monde JEE : ○ NodeJS, Dart ● Examen et projet
  • 3. Côté navigateur ● Les bases du web ○ HTTP, URL, HTML, CSS, JS, AJAX... ● HTML5 ○ HTML5, CSS3, le casse-tête des navigateurs... ○ Le web en 2013, le responsive design ● Twitter Bootstrap ○ Outils, échafaudage, LessCSS, JQuery ● Le développeur web en 2013 ○ Rôles, technologies, langages, veille technologique ● AngularJS ○ Modèle MVC côté navigateur
  • 4. HTML5 ● ● ● ● ● Le buzzword - HTML5, c'est quoi ? HTML 5 CSS 3 Le casse-tête des navigateurs... Le web en 2012, le responsive design
  • 6. L’HTML 5 n’est pas… "L’HTML5, c’est un nouveau langage ?" "Je débute, j’ai envie d’apprendre l’HTML5 directement, ça a l’air mieux que l’HTML d’avant." "Pfff, moi qui venais d’apprendre l’HTML, je vais devoir tout réapprendre…" L’HTML5 n’est pas un nouveau langage
  • 7. L'HTML5 est... ● Une évolution d'HTML 4 ○ Qu'on a survolé précédement ● Deux syntaxes : HTML5 et XHTML5 ● Des nouvelles fonctionnalités ● Une couche d'application ○ Des APIs
  • 8. L'HTML5 et les standards ● W3C définit les standards du web ○ Chargé d'élaborer le standard HTML5 ○ Processus très lent et bureaucratique ● WHATWG Web Hypertext Application Technology Working Group ○ Groupe dissident du W3C ○ Des développeurs des navigateurs ○ Approche pratique ● Les deux travaillent en parallèle ○ Sur le même document
  • 9. Alors, deux standards HTML5 ? ● En 2012 le W3C et le WHATWG ont décidé de suivre des chemins séparés ○ W3C travaille pour un standard fixe ■ Un snapshop de l'état actuel : HTML5 ○ WHATWG travaille sur un living standard ■ En évolution permanente : HTML ● Approches complémentaires
  • 10. Les nouveautés de HTML5 ● ● ● ● ● ● ● ● ● ● Allègement du code Nouvelles balises sémantiques Disparition de balises de mise en forme Nouveau modèle de contenu Balises multimédia Formulaires avec sémantique Stockage local Glisser-Déposer Géolocalisation Websockets
  • 11. Les nouveautés de HTML5 Allègement du code ● Allègement de l'entête head ○ Le doctype, les balises meta, l'encodage des caractères, les balises style et script <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" > <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link rel="stylesheet" type="text/css" href="design. css" /> <script type=”text/javascript” src=script.js"></script> </head> ● Simplifications en général ○ Certaines discutables (pas de /> pour balises vides) <!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8" /> <link rel="stylesheet" href="design. css" /> <script src="script.js"></script> </head>
  • 12. Les nouveautés de HTML5 Nouvelles balises sémantiques ● Des balises avec du sens sémantique ○ Plus spécifiques que les génériques ○ Structuration du document ● ● ● ● ● ● <header> : indique une en-tête Image : Alsa Creations <footer> : indique un pied de page <nav> : indique un élément de navigation (menu...) <aside> : indique une zone secondaire (sidebar, publicité...) <section> : indique une portion de la page <article> : indique une portion de la page avec du sens en lui-même
  • 13. Les nouveautés de HTML5 Disparition de balises de mise en forme ● Meilleure séparation entre forme et contenu ● Disparition de balises sans sens sémantique ○ Telles que center, font, big, strike ou u ● La mise en forme se fait avec les CSS
  • 14. Les nouveautés de HTML5 Nouvelles modèle de contenu ● Avant : modèle inline-block ● Maintenant : des catégories ○ Chaque élément dans 0 ou plus catégories ● Structuration logique du document Image : WHATWG
  • 15. Les nouveautés de HTML5 Balises multimédia ● <video> : introduit un lecteur vidéo ayant une URL comme source ● <audio> : introduit un lecteur audio ayant une URL comme source ● <canvas> : introduit une surface de dessin ○ Dessiner, tracer des formes, les animer...
  • 16. Les nouveautés de HTML5 Formulaires avec sémantique ● Des nouveaux types pour la balise <input> ○ ○ ○ ○ ○ ○ ○ ○ tel email url date, day, month, year, week number range search color
  • 17. Les nouveautés de HTML5 Stockage local ● Stocker des informations côté navigateur ○ Système clé-valeur ○ Chaque domaine a son sandbox ● Applications web déconnectés localStorage['maCle'] = "Ma valeur"; Stocker une valeur : ou localStorage.setitem("maCle", "Ma valeur"); localStorage['maCle']; ou Récupérer une valeur : localStorage.getitem['maCle']; Effacer une clé : Tester si le navigateur supporte le stockage local : removeItem("maCle"); if (localStorage) { // Le navigateur supporte le localStorage } else { // localStorage non supporté }
  • 18. Les nouveautés de HTML5 Géolocalisation ● Spécification W3C propre associée à HTML5 ● Permet de géolocaliser le navigateur ○ GPS, triangulation GSM, triangulation wifi, adresse IP ● Pour Wifi et IP, utilisation de BDD de géolocalisation ○ E.g : https://www.google.com/loc/json ● API asynchrone ○ Fonction callback pour récevoir la réponse function maPosition(position) { var infopos = "Position déterminée :n"; infopos += "Latitude : "+position.coords.latitude +"n" infopos += "Longitude: "+position.coords.longitude+"n"; infopos += "Altitude : "+position.coords.altitude +"n"; document.getElementById("infoposition").innerHTML = infopos; } // Pour connaître la position navigator.geolocation.getCurrentPosition(maPosition); // Pour suivre la position var survId = navigator.geolocation.watchPosition(maPosition); // Pour annuler le suivi de position navigator.geolocation.clearWatch(survId);
  • 19. Les nouveautés de HTML5 Glisser-Déposer ● ● ● ● ● Permet de déplacer des éléments entre des applications et le navigateur ○ API JavaScript native HTML5 Attribute draggable : élément déplaçable Événement dragstart : généré au début du transfert Événement dragover : généré au survole d'un élément pendant la glisse Événement drop : généré en fin de transfert function dragstart(target, e) { e.dataTransfer.setData('text/plain', "Texte transmis""); } function dragover(target, e) { e.preventDefault(); // Annule l'interdiction de drop } function drop(target, e) { e.preventDefault(); // Annule l'interdiction de drop alert('Vous avez bien déposé votre élément !'); } <div id="source" draggable="true" ondragstart="dragstart(this, event)"> Élement source </div> <div id="target" ondragover="dragover(this,event)" ondrop="drop(this,event)"> Élement cible </div>
  • 20. Les nouveautés de HTML5 Websockets ● HTTP standard : requête-réponse ○ Du navigateur au serveur ● Websockets : communication bi-directionnelle ○ Plus besoin de polling, long-polling ou autres
  • 21. CSS3
  • 22. Les CSS3, c'est quoi ? "C'est quoi le CSS3 ? Ca a un rapport avec HTML5" ● Le CCS3 n'est pas forcément lié à HTML5 ● Une évolution majeure des CSS ○ ○ ○ ○ ○ ○ Nouveaux sélecteurs Nouvelles façons de spécifier les couleurs Détection des caractéristiques des terminaux Des calculs dans la feuille de style Des SVG en arrière plan ...
  • 23. Exemple classique : Les coins arrondis ● Boîte avec coins arrondis avant CSS3 ○ Une <table> avec 9 cases, chacune avec des images de fond ● Boîte avec coins arrondis avec CSS3 <!doctype html> <html> <head> <meta charset="utf-8" /> <style> .boite_arrondie { background: #eeeeee; border: 2px solid black; border-radius: 20px; width: 200px; height: 80px; margin: auto; padding: 20px; } </style> </head> <div class="boite_arrondie"> Oh la jolie boîte ! </div> </hmtl>
  • 24. Les nouveautés CSS3 ● Effets visuels ● Sélecteurs ● Nouveaux outils
  • 25. Les nouveautés CSS3 Effets visuels ● border-radius border-radius: 20px; ● text-shadow text-shadow: 4px 4px 3px #ff0000; ● box-shadow box-shadow: ● font-face @font-face { 10px 10px 5px #000088; font-family: 'Luckiest Guy'; src:url("luckiest-guy-regular.otf") } ... font-family:'Luckiest Guy';
  • 26. Les nouveautés CSS3 Effets visuels ● gradient background-image: linear-gradient(right top, #D60F0F 0%, #FFDD00 100%); ● opacity background: rgba(0, 180, 0, 0.5);
  • 27. Les nouveautés CSS3 Effets visuels : transform ● transform : rotate transform: rotate(30deg) ● transform : skew transform: skew(15deg, 30deg); ● transform : scale transform: scale(1,0.25) ● transform : translate -webkit-transform: translate(30px, 30px);
  • 28. Les nouveautés CSS3 Effets visuels : Transitions ● Des propriétés ○ transition-property : Propriétés CSS à transformer ■ ○ transition-duration : Durée de la transition ■ ○ en secondes ou millisecondes transition-timing-function : ■ ○ couleurs, position, dimensions, transformations, visibilité, ombres, dégradés Fonction de transition, modèle d'interpolation (accélération, décélération...) transition-delay : Retard du départ de la transition ■ en secondes ou millisecondes
  • 29. Les nouveautés CSS3 Effets visuels : Transitions ● Déclenchement .transition { background: #aaa; transition-property transition-duration color: white; } .transition:hover { transition-property transition-duration color: black; } : color; : 5s; : color; : 5s;
  • 30. Les nouveautés CSS3 Tranformées en 3D ● perspective transform: perspective(600px) rotateX(40deg ); ● rotateX, rotateY, rotateZ ● translateX, translateY, translateZ
  • 31. Les nouveautés CSS3 Animations ● Des keyframes @keyframes rotateCube { 0% { transform: rotateX( 0deg ) rotateY( 0deg ); } 100% { transform: rotateX( 360deg ) rotateY( 360deg ); } } ● Des animations animation: rotateCube 8s infinite linear;
  • 32. Exemple : le cube des navigateurs ● translateX, translateY, translateZ ● rotateX, rotateY, rotateZ ● animation, @keyframes
  • 33. Le casse-tête des navigateurs
  • 34. Les coins arrondis : Les préfixes vendeurs ● Vous souvenez-vous des coins arrondis ? border-radius: 20px; ○ Jusqu'à il n'y a pas longtemps, cela ne marchait pas partout ● CSS3 considéré expérimental, chaque navigateur implémentait à sa façon ○ Des préfixes propriétaires ou préfixes vendeurs ■ Les principaux ? -moz pour Firefox, -webkit pour Chrome/Safari ○ Oblligation de les mettre pour atteindre tout le monde -moz-border-radius: 20px; -webkit-border-radius: 20px; border-radius: 20px;
  • 35. Les coins arrondis : Et sur les vieux IE ? ● Et comment on fait sur IE8 ou IE7 ? Ou même IE6 ? ● C'est grave si ça ne marche pas ? ○ ○ Pas pour des coins arrondis Oui si cela gêne le fonctionnement ! ● On peut faire quoi ○ ○ Essayer Modernizr et utiliser polyfills Vérifier fonctionnement dans vieux navigateurs Modernizr.load({ test: Modernizr.geolocation, yep : 'geo.js', nope: 'geo-polyfill.js' });
  • 36. Le problème... ● HTML5 et CSS3 pas encore figés dans le marbre ○ ○ ○ Le niveau de support change selon les navigateurs et les versions Des fonctions non implémentées Des fonctions avec des noms différents ● Certaines propriétés sont supportées un peu partout ○ D'autres seulement sur quelques rares navigateurs ● Quand et quoi utiliser ? ○ Ca dépend de l'application ■ ○ Public cible... Et de la criticité du composant ■ Si pas supporté, l'appli reste utilisable ?
  • 37. Puis-je l'utiliser ? Avec des préfixes ? ● Dans le doute, consulter Can I use... ? ○ Support par navigateur pour chaque élément HTML5/CSS3/JS ● Ou le très beau HTML5 Readiness
  • 39. Pour aller plus loin ● Pour apprendre et se tenir informés : HTML5 Rocks!
  • 40. Twitter Bootstrap Car nous ne sommes pas tous des graphistes
  • 41. C'est très beau ça... mais le design graphique me fait peur ! ● Si on fait du web en 2013 on ne peut pas se passer du HTML5/CSS3/JS ○ Mais la plupart des développeurs n'aiment pas concevoir des interfaces ● ● ○ On n'est pas des graphistes ! Quoi faire ? ● Solution 1: Venir à la séssion FinistJUG d'avril ○ JavaScript pour des développeurs Java ● Solution 2 : Utiliser Twitter Bootstrap
  • 42. C'est quoi Twitter Bootstrap ● Constats chez Twitter en 2009 : ● ○ Les développeurs d'applications web n'aiment pas faire de l'IHM web ○ A chaque nouvelle application, on refaisait une IHM ○ Soucis d'ergonomie, d'uniformité, d'esthétisme Solution : faire un boîte à utils HTML5/CSS3/JS ○ Pour IHMs performantes, egonomiques et jolies ○ Simple à utiliser ■ Permettant à un développeur de faire des IHMs belles et efficaces ○ Lingua franca entre graphistes et développeurs
  • 43. La panoplie Twitter Bootstrap ● Des éléments de base, des composants, des widgets complèxes... ● Modulable ● Responsive
  • 44. Facile à intégrer, facile à personnaliser ● ● ● ● Il suffit d'embarquer les JS et CSS Bootstrap Les composants sont des classes CSS Pas besoin de prise de tête avec la présentation Responsive, adaptable à tout terminal Mais je veux ma présentation à moi ● Des thèmes ○ ○ ○ Permettant de garder la puissance Bootstrap Adaptant le look à ce que je veux Toujours sans prise de tête développeur
  • 45. Lingua franca ? ● Les graphistes web aiment Bootstrap ● ● ○ Ergonomie soignée ○ CSS claires et structurées ○ Simplicité d'adaptation et personnalisation des thèmes Les développeurs aiment Bootstrap Les graphistes et développeurs comprennent Bootstrap Langage commun entre développeurs et graphistes ● Le graphiste fournit des maquettes en Bootstrap ● Le développeur adapte sa logique IHM à Bootstrap