SlideShare une entreprise Scribd logo
1  sur  51
Télécharger pour lire hors ligne
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
Conception d'Applications
Interactives :
Applications Web
Séance #1 - Côté navigateur
HTML5 / CSS / JS / Angular
2/3 - HTML5, CSS3, Twitter Bootstrap
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
Description du module
● Côté navigateur
○ HTML5 / CSS / JS - Angular
● Côté serveur - Concepts
○ Introduction à JEE : servlets, JSP, frameworks… - SparkJava
● Forge JavaScript
○ Une forge logicielle pour JavaScript : Grunt/Gulp, Bower, Yeoman
● Côté serveur - NodeJS
○ NodeJS, ExpressJS, APIs
● Écosystème de la webapp
○ Introduction à NoSQL : MongoDB, Redis, Cassandra…
● Autour de la webapp
○ Forge logicielle en Java - Test-driven development
● Examen et exposées des projets
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
● Les bases du web
○ HTTP, URL, HTML, CSS, JS, AJAX...
● HTML5, CSS3
○ HTML5, CSS3, living standard, le casse-tête des navigateurs...
○ Le web en 2016, mobile first, le responsive design...
● Twitter Bootstrap
○ Outils, échafaudage, LessCSS, JQuery
● Le développeur web en 2017
○ Rôles, technologies, langages, veille technologique
● Angular
Côté navigateur
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
● Le buzzword - HTML5, c'est quoi ?
● HTML 5
● CSS 3
● Le casse-tête des navigateurs...
● Le web en 2017, mobile first, le responsive design...
HTML5
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
Le buzzword
HTML5, c'est quoi ?
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
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
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
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
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
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
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
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
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
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
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
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>
<html lang="fr">
<head>
<meta charset="utf-8" />
<link rel="stylesheet"
href="design.css" />
<script src="script.js"></script>
</head>
<!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)
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
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
● <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
Image : Alsa Creations
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
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
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
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
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
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...
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
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
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
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"; ou
localStorage.setitem("maCle", "Ma valeur");
localStorage['maCle']; ou
localStorage.getitem['maCle'];
removeItem("maCle");
if (localStorage) {
// Le navigateur supporte le localStorage
} else {
// localStorage non supporté
}
Stocker une valeur :
Récupérer une valeur :
Effacer une clé :
Tester si le navigateur
supporte le stockage local
:
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
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
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);
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
● 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
Les nouveautés de HTML5 -
Glisser-Déposer
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)"> Cible </div>
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
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
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
CSS3
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
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
○ ...
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
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>
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
Les nouveautés CSS3
● Effets visuels
● Sélecteurs
● Nouveaux outils
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
Les nouveautés CSS3 -
Effets visuels
● border-radius
border-radius: 20px;
● box-shadow
box-shadow:
10px 10px 5px #000088;
● text-shadow
text-shadow:
4px 4px 3px #ff0000;
● font-face
@font-face {
font-family: 'Luckiest Guy';
src:url("luckiest-guy-regular.otf")
}
...
font-family:'Luckiest Guy';
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
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);
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
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);
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
Les nouveautés CSS3 -
Effets visuels : Transitions
● Des propriétés
○ transition-property : Propriétés CSS à transformer
■ couleurs, position, dimensions, transformations, visibilité, ombres, dégradés
○ transition-duration : Durée de la transition
■ en secondes ou millisecondes
○ transition-timing-function :
■ 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
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
Les nouveautés CSS3 -
Effets visuels : Transitions
● Déclenchement
.transition {
background: #aaa;
transition-property : color;
transition-duration : 5s;
color: white;
}
.transition:hover {
transition-property : color;
transition-duration : 5s;
color: black;
}
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
Les nouveautés CSS3 -
Tranformées en 3D
● perspective
transform:
perspective(600px)
rotateX(40deg );
● rotateX, rotateY, rotateZ
● translateX, translateY, translateZ
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
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;
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
Exemple :
le cube des navigateurs
● translateX, translateY, translateZ
● rotateX, rotateY, rotateZ
● animation, @keyframes
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
TD HTML5 : Le cube
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
TD HTML5 : Le cube
1. Produire un document HTML5 avec un
élement div appelé cube
○ Ouvrir le fichier avec le navigateur et vérifier qu'il est cohérent
○ Valider le fichier avec HTML5 Validator
■ N'oubliez pas ajouter la balise title, obligatoire
2. Un cube a 6 faces : créer 6 éléments div à
l'intérieur de l'élément cube, tous appartenant à une
classe face, chacun avec une id selon sa position :
front, back, top, bottom, left, right
○ Les faces doivent avoir des dimensions 200x200 px, un fond gris
(background: #888) et une bordure noire d'un pixel de large
■ Créer un élément style dans le head du document
■ Avec la définition de la classe face
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
TD HTML5 : Le cube
3. Mettons les 6 faces les unes sur les autres :
● Position: absolute, top: 0, left: 0
4. Le cube va être centré
● Position: absolute, top: 200px, left: 400px
5. Passons sur une vue isométrique
sur l'objet cube
○ translateX, translateY,
translateZ
○ rotateX, rotateY, rotateZ
Exemple rotation sur Firefox :
-moz-transform : rotateZ(65deg);
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
TD HTML5 : Le cube
6. Maintenant on a 6 faces à plat. Pour chacunes des
face, créer l'élément de style correspondant à son id
et appliquer les transformations 3D pour le mettre à sa
place
○ Il ne faut pas oublier de positionner
-moz-transform-style: preserve-3d;
sur cube
○ Commencez par les faces front et back
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
7. Ajoutez des images à chaque face
○ Les images sont ici
○ Bien vérifier l'orientation des faces
■ Les logos doivent être à l'endroit
TD HTML5 : Le cube
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
8. Maintenant on le fait tourner !
○ Des rotations sur le cube
○ Utilisations d'animation et @keyframe
○ Propriété utile : -moz-transform-origin: 100px 100px;
TD HTML5 : Le cube
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
Le casse-tête des navigateurs
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
Les coins arrondis :
Les préfixes vendeurs
● Vous souvenez-vous des coins arrondis ?
○ 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
border-radius: 20px;
-moz-border-radius: 20px;
-webkit-border-radius: 20px;
border-radius: 20px;
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
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'
});
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
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 ?
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
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
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
Pour aller plus loin
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
Pour aller plus loin
● Pour apprendre et se tenir informés :
HTML5 Rocks!
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
Twitter Bootstrap
Car nous ne sommes pas
tous des graphistes
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
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 ?
● Utiliser Twitter Bootstrap
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
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
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
La panoplie Twitter Bootstrap
● Des éléments de base, des composants, des widgets
complèxes...
● Modulable
● Responsive
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
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
Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème
semestre
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

Contenu connexe

Tendances

ENIB 2013-2014 - CAI Web #1: Côté navigateur 1/3
ENIB 2013-2014 - CAI Web #1: Côté navigateur 1/3ENIB 2013-2014 - CAI Web #1: Côté navigateur 1/3
ENIB 2013-2014 - CAI Web #1: Côté navigateur 1/3Horacio Gonzalez
 
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...Horacio Gonzalez
 
Atelier #3 intégration html
Atelier #3 intégration htmlAtelier #3 intégration html
Atelier #3 intégration htmlLes-Tilleuls.coop
 
ASP.Net Web API - Léonard Labat (18 février 2014)
ASP.Net Web API - Léonard Labat (18 février 2014)ASP.Net Web API - Léonard Labat (18 février 2014)
ASP.Net Web API - Léonard Labat (18 février 2014)SOAT
 
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !Horacio Gonzalez
 
Soirée 3T Soat - Asp.net MVC
Soirée 3T Soat - Asp.net MVCSoirée 3T Soat - Asp.net MVC
Soirée 3T Soat - Asp.net MVCSOAT
 

Tendances (7)

Atelier initiation au html5
Atelier initiation au html5Atelier initiation au html5
Atelier initiation au html5
 
ENIB 2013-2014 - CAI Web #1: Côté navigateur 1/3
ENIB 2013-2014 - CAI Web #1: Côté navigateur 1/3ENIB 2013-2014 - CAI Web #1: Côté navigateur 1/3
ENIB 2013-2014 - CAI Web #1: Côté navigateur 1/3
 
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
 
Atelier #3 intégration html
Atelier #3 intégration htmlAtelier #3 intégration html
Atelier #3 intégration html
 
ASP.Net Web API - Léonard Labat (18 février 2014)
ASP.Net Web API - Léonard Labat (18 février 2014)ASP.Net Web API - Léonard Labat (18 février 2014)
ASP.Net Web API - Léonard Labat (18 février 2014)
 
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
 
Soirée 3T Soat - Asp.net MVC
Soirée 3T Soat - Asp.net MVCSoirée 3T Soat - Asp.net MVC
Soirée 3T Soat - Asp.net MVC
 

Similaire à ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 2/3 - HTML5, CSS3, Twitter Bootstrap

Enib cours c.a.i. web - séance #1 - html5 css3-js - 2
Enib   cours c.a.i. web - séance #1 - html5 css3-js - 2Enib   cours c.a.i. web - séance #1 - html5 css3-js - 2
Enib cours c.a.i. web - séance #1 - html5 css3-js - 2Horacio Gonzalez
 
Enib cours c.a.i. web - séance #1 - html5 css3-js - 1
Enib   cours c.a.i. web - séance #1 - html5 css3-js - 1Enib   cours c.a.i. web - séance #1 - html5 css3-js - 1
Enib cours c.a.i. web - séance #1 - html5 css3-js - 1Horacio Gonzalez
 
HTML5 maintenant partie 1 : la sémantique
HTML5 maintenant partie 1 : la sémantiqueHTML5 maintenant partie 1 : la sémantique
HTML5 maintenant partie 1 : la sémantiqueJean-Pierre Vincent
 
Workshop HTML5 : référencement grâce à la sémantique
Workshop HTML5 : référencement grâce à la sémantiqueWorkshop HTML5 : référencement grâce à la sémantique
Workshop HTML5 : référencement grâce à la sémantiqueLes-Tilleuls.coop
 
ENIB 2013-2014 - CAI Web #1: Côté navigateur 3/3
ENIB 2013-2014 - CAI Web #1: Côté navigateur 3/3 ENIB 2013-2014 - CAI Web #1: Côté navigateur 3/3
ENIB 2013-2014 - CAI Web #1: Côté navigateur 3/3 Horacio Gonzalez
 
Paul valery et les Web components
Paul valery et les Web componentsPaul valery et les Web components
Paul valery et les Web componentsFrancois ANDRE
 
Conception de code javascript cote client dans la continuité du renouveau du web
Conception de code javascript cote client dans la continuité du renouveau du webConception de code javascript cote client dans la continuité du renouveau du web
Conception de code javascript cote client dans la continuité du renouveau du webSOAT
 
AngularJS et autres techno frontend
AngularJS et autres techno frontendAngularJS et autres techno frontend
AngularJS et autres techno frontendyllieth
 
Sitecore experience platform
Sitecore experience platformSitecore experience platform
Sitecore experience platformMohamed Krimi
 
Introduction à la gestion de projet
Introduction à la gestion de projetIntroduction à la gestion de projet
Introduction à la gestion de projetlaureno
 
Introduction aux web components
Introduction aux web componentsIntroduction aux web components
Introduction aux web componentsFrancois ANDRE
 
Programmer en html5, css 3 et java script (70 480)
Programmer en html5, css 3 et java script (70 480)Programmer en html5, css 3 et java script (70 480)
Programmer en html5, css 3 et java script (70 480)Chamseddine Ouerhani
 
ISCOM::HTML/CSS::session1 (20140930)
ISCOM::HTML/CSS::session1 (20140930)ISCOM::HTML/CSS::session1 (20140930)
ISCOM::HTML/CSS::session1 (20140930)Nicolas Aguenot
 
FinistJUG - J’ai besoin d’une appli web rapidement
FinistJUG -   J’ai besoin d’une appli web rapidementFinistJUG -   J’ai besoin d’une appli web rapidement
FinistJUG - J’ai besoin d’une appli web rapidementHoracio Gonzalez
 
Responsible Design ou Le web moderne à destination de tous
Responsible Design ou Le web moderne à destination de tousResponsible Design ou Le web moderne à destination de tous
Responsible Design ou Le web moderne à destination de tousjwajsberg
 
Webinar HTML5 Microsoft Intel
Webinar HTML5 Microsoft IntelWebinar HTML5 Microsoft Intel
Webinar HTML5 Microsoft Inteldavrous
 

Similaire à ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 2/3 - HTML5, CSS3, Twitter Bootstrap (20)

Enib cours c.a.i. web - séance #1 - html5 css3-js - 2
Enib   cours c.a.i. web - séance #1 - html5 css3-js - 2Enib   cours c.a.i. web - séance #1 - html5 css3-js - 2
Enib cours c.a.i. web - séance #1 - html5 css3-js - 2
 
Enib cours c.a.i. web - séance #1 - html5 css3-js - 1
Enib   cours c.a.i. web - séance #1 - html5 css3-js - 1Enib   cours c.a.i. web - séance #1 - html5 css3-js - 1
Enib cours c.a.i. web - séance #1 - html5 css3-js - 1
 
Cv khouloud dhouib
Cv khouloud dhouibCv khouloud dhouib
Cv khouloud dhouib
 
HTML5 maintenant partie 1 : la sémantique
HTML5 maintenant partie 1 : la sémantiqueHTML5 maintenant partie 1 : la sémantique
HTML5 maintenant partie 1 : la sémantique
 
Workshop HTML5 : référencement grâce à la sémantique
Workshop HTML5 : référencement grâce à la sémantiqueWorkshop HTML5 : référencement grâce à la sémantique
Workshop HTML5 : référencement grâce à la sémantique
 
ENIB 2013-2014 - CAI Web #1: Côté navigateur 3/3
ENIB 2013-2014 - CAI Web #1: Côté navigateur 3/3 ENIB 2013-2014 - CAI Web #1: Côté navigateur 3/3
ENIB 2013-2014 - CAI Web #1: Côté navigateur 3/3
 
Paul valery et les Web components
Paul valery et les Web componentsPaul valery et les Web components
Paul valery et les Web components
 
Conception de code javascript cote client dans la continuité du renouveau du web
Conception de code javascript cote client dans la continuité du renouveau du webConception de code javascript cote client dans la continuité du renouveau du web
Conception de code javascript cote client dans la continuité du renouveau du web
 
AngularJS et autres techno frontend
AngularJS et autres techno frontendAngularJS et autres techno frontend
AngularJS et autres techno frontend
 
Sitecore experience platform
Sitecore experience platformSitecore experience platform
Sitecore experience platform
 
Introduction à la gestion de projet
Introduction à la gestion de projetIntroduction à la gestion de projet
Introduction à la gestion de projet
 
Introduction aux web components
Introduction aux web componentsIntroduction aux web components
Introduction aux web components
 
Programmer en html5, css 3 et java script (70 480)
Programmer en html5, css 3 et java script (70 480)Programmer en html5, css 3 et java script (70 480)
Programmer en html5, css 3 et java script (70 480)
 
Html5 now light
Html5 now lightHtml5 now light
Html5 now light
 
ISCOM::HTML/CSS::session1 (20140930)
ISCOM::HTML/CSS::session1 (20140930)ISCOM::HTML/CSS::session1 (20140930)
ISCOM::HTML/CSS::session1 (20140930)
 
Christophe Tricot et Raphaël Velt (infoviz)
Christophe Tricot et Raphaël Velt (infoviz)Christophe Tricot et Raphaël Velt (infoviz)
Christophe Tricot et Raphaël Velt (infoviz)
 
FinistJUG - J’ai besoin d’une appli web rapidement
FinistJUG -   J’ai besoin d’une appli web rapidementFinistJUG -   J’ai besoin d’une appli web rapidement
FinistJUG - J’ai besoin d’une appli web rapidement
 
Nouveaux apis
Nouveaux apisNouveaux apis
Nouveaux apis
 
Responsible Design ou Le web moderne à destination de tous
Responsible Design ou Le web moderne à destination de tousResponsible Design ou Le web moderne à destination de tous
Responsible Design ou Le web moderne à destination de tous
 
Webinar HTML5 Microsoft Intel
Webinar HTML5 Microsoft IntelWebinar HTML5 Microsoft Intel
Webinar HTML5 Microsoft Intel
 

Plus 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
 
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 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 - 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 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
 
Devoxx France - Web Components, Polymer et Material Design
Devoxx France -  Web Components, Polymer et Material DesignDevoxx France -  Web Components, Polymer et Material Design
Devoxx France - Web Components, Polymer et Material DesignHoracio Gonzalez
 
Steven Le Roux - Kafka et Storm au service de la lutte antiDDoS à OVH - Soiré...
Steven Le Roux - Kafka et Storm au service de la lutte antiDDoS à OVH - Soiré...Steven Le Roux - Kafka et Storm au service de la lutte antiDDoS à OVH - Soiré...
Steven Le Roux - Kafka et Storm au service de la lutte antiDDoS à OVH - Soiré...Horacio Gonzalez
 
2014 03-25 - GDG Nantes - Web Components avec Polymer
2014 03-25 - GDG Nantes - Web Components avec Polymer2014 03-25 - GDG Nantes - Web Components avec Polymer
2014 03-25 - GDG Nantes - Web Components avec PolymerHoracio Gonzalez
 
Bootcamp d'Initiation à Android - 2013/11/30 - Live coding : Hello world!
Bootcamp d'Initiation à Android  - 2013/11/30 - Live coding :   Hello world!Bootcamp d'Initiation à Android  - 2013/11/30 - Live coding :   Hello world!
Bootcamp d'Initiation à Android - 2013/11/30 - Live coding : Hello world!Horacio Gonzalez
 
Bootcamp d'Initiation à Android - 2013/11/30
Bootcamp d'Initiation à Android  - 2013/11/30Bootcamp d'Initiation à Android  - 2013/11/30
Bootcamp d'Initiation à Android - 2013/11/30Horacio Gonzalez
 

Plus 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
 
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 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 - 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 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
 
Devoxx France - Web Components, Polymer et Material Design
Devoxx France -  Web Components, Polymer et Material DesignDevoxx France -  Web Components, Polymer et Material Design
Devoxx France - Web Components, Polymer et Material Design
 
Steven Le Roux - Kafka et Storm au service de la lutte antiDDoS à OVH - Soiré...
Steven Le Roux - Kafka et Storm au service de la lutte antiDDoS à OVH - Soiré...Steven Le Roux - Kafka et Storm au service de la lutte antiDDoS à OVH - Soiré...
Steven Le Roux - Kafka et Storm au service de la lutte antiDDoS à OVH - Soiré...
 
2014 03-25 - GDG Nantes - Web Components avec Polymer
2014 03-25 - GDG Nantes - Web Components avec Polymer2014 03-25 - GDG Nantes - Web Components avec Polymer
2014 03-25 - GDG Nantes - Web Components avec Polymer
 
Bootcamp d'Initiation à Android - 2013/11/30 - Live coding : Hello world!
Bootcamp d'Initiation à Android  - 2013/11/30 - Live coding :   Hello world!Bootcamp d'Initiation à Android  - 2013/11/30 - Live coding :   Hello world!
Bootcamp d'Initiation à Android - 2013/11/30 - Live coding : Hello world!
 
Bootcamp d'Initiation à Android - 2013/11/30
Bootcamp d'Initiation à Android  - 2013/11/30Bootcamp d'Initiation à Android  - 2013/11/30
Bootcamp d'Initiation à Android - 2013/11/30
 

ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 2/3 - HTML5, CSS3, Twitter Bootstrap

  • 1. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre Conception d'Applications Interactives : Applications Web Séance #1 - Côté navigateur HTML5 / CSS / JS / Angular 2/3 - HTML5, CSS3, Twitter Bootstrap
  • 2. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre Description du module ● Côté navigateur ○ HTML5 / CSS / JS - Angular ● Côté serveur - Concepts ○ Introduction à JEE : servlets, JSP, frameworks… - SparkJava ● Forge JavaScript ○ Une forge logicielle pour JavaScript : Grunt/Gulp, Bower, Yeoman ● Côté serveur - NodeJS ○ NodeJS, ExpressJS, APIs ● Écosystème de la webapp ○ Introduction à NoSQL : MongoDB, Redis, Cassandra… ● Autour de la webapp ○ Forge logicielle en Java - Test-driven development ● Examen et exposées des projets
  • 3. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre ● Les bases du web ○ HTTP, URL, HTML, CSS, JS, AJAX... ● HTML5, CSS3 ○ HTML5, CSS3, living standard, le casse-tête des navigateurs... ○ Le web en 2016, mobile first, le responsive design... ● Twitter Bootstrap ○ Outils, échafaudage, LessCSS, JQuery ● Le développeur web en 2017 ○ Rôles, technologies, langages, veille technologique ● Angular Côté navigateur
  • 4. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre ● Le buzzword - HTML5, c'est quoi ? ● HTML 5 ● CSS 3 ● Le casse-tête des navigateurs... ● Le web en 2017, mobile first, le responsive design... HTML5
  • 5. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre Le buzzword HTML5, c'est quoi ?
  • 6. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre 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. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre 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. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre 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. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre 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. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre 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. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre 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> <html lang="fr"> <head> <meta charset="utf-8" /> <link rel="stylesheet" href="design.css" /> <script src="script.js"></script> </head> <!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)
  • 12. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre 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 ● <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 Image : Alsa Creations
  • 13. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre 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. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre 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. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre 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. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre 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. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre 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"; ou localStorage.setitem("maCle", "Ma valeur"); localStorage['maCle']; ou localStorage.getitem['maCle']; removeItem("maCle"); if (localStorage) { // Le navigateur supporte le localStorage } else { // localStorage non supporté } Stocker une valeur : Récupérer une valeur : Effacer une clé : Tester si le navigateur supporte le stockage local :
  • 18. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre 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 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. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre ● 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 Les nouveautés de HTML5 - Glisser-Déposer 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)"> Cible </div>
  • 20. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre 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. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre CSS3
  • 22. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre 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. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre 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. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre Les nouveautés CSS3 ● Effets visuels ● Sélecteurs ● Nouveaux outils
  • 25. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre Les nouveautés CSS3 - Effets visuels ● border-radius border-radius: 20px; ● box-shadow box-shadow: 10px 10px 5px #000088; ● text-shadow text-shadow: 4px 4px 3px #ff0000; ● font-face @font-face { font-family: 'Luckiest Guy'; src:url("luckiest-guy-regular.otf") } ... font-family:'Luckiest Guy';
  • 26. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre 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. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre 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. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre Les nouveautés CSS3 - Effets visuels : Transitions ● Des propriétés ○ transition-property : Propriétés CSS à transformer ■ couleurs, position, dimensions, transformations, visibilité, ombres, dégradés ○ transition-duration : Durée de la transition ■ en secondes ou millisecondes ○ transition-timing-function : ■ 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. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre Les nouveautés CSS3 - Effets visuels : Transitions ● Déclenchement .transition { background: #aaa; transition-property : color; transition-duration : 5s; color: white; } .transition:hover { transition-property : color; transition-duration : 5s; color: black; }
  • 30. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre Les nouveautés CSS3 - Tranformées en 3D ● perspective transform: perspective(600px) rotateX(40deg ); ● rotateX, rotateY, rotateZ ● translateX, translateY, translateZ
  • 31. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre 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. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre Exemple : le cube des navigateurs ● translateX, translateY, translateZ ● rotateX, rotateY, rotateZ ● animation, @keyframes
  • 33. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre TD HTML5 : Le cube
  • 34. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre TD HTML5 : Le cube 1. Produire un document HTML5 avec un élement div appelé cube ○ Ouvrir le fichier avec le navigateur et vérifier qu'il est cohérent ○ Valider le fichier avec HTML5 Validator ■ N'oubliez pas ajouter la balise title, obligatoire 2. Un cube a 6 faces : créer 6 éléments div à l'intérieur de l'élément cube, tous appartenant à une classe face, chacun avec une id selon sa position : front, back, top, bottom, left, right ○ Les faces doivent avoir des dimensions 200x200 px, un fond gris (background: #888) et une bordure noire d'un pixel de large ■ Créer un élément style dans le head du document ■ Avec la définition de la classe face
  • 35. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre TD HTML5 : Le cube 3. Mettons les 6 faces les unes sur les autres : ● Position: absolute, top: 0, left: 0 4. Le cube va être centré ● Position: absolute, top: 200px, left: 400px 5. Passons sur une vue isométrique sur l'objet cube ○ translateX, translateY, translateZ ○ rotateX, rotateY, rotateZ Exemple rotation sur Firefox : -moz-transform : rotateZ(65deg);
  • 36. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre TD HTML5 : Le cube 6. Maintenant on a 6 faces à plat. Pour chacunes des face, créer l'élément de style correspondant à son id et appliquer les transformations 3D pour le mettre à sa place ○ Il ne faut pas oublier de positionner -moz-transform-style: preserve-3d; sur cube ○ Commencez par les faces front et back
  • 37. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre 7. Ajoutez des images à chaque face ○ Les images sont ici ○ Bien vérifier l'orientation des faces ■ Les logos doivent être à l'endroit TD HTML5 : Le cube
  • 38. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre 8. Maintenant on le fait tourner ! ○ Des rotations sur le cube ○ Utilisations d'animation et @keyframe ○ Propriété utile : -moz-transform-origin: 100px 100px; TD HTML5 : Le cube
  • 39. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre Le casse-tête des navigateurs
  • 40. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre Les coins arrondis : Les préfixes vendeurs ● Vous souvenez-vous des coins arrondis ? ○ 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 border-radius: 20px; -moz-border-radius: 20px; -webkit-border-radius: 20px; border-radius: 20px;
  • 41. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre 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' });
  • 42. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre 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 ?
  • 43. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre 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
  • 44. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre Pour aller plus loin
  • 45. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre Pour aller plus loin ● Pour apprendre et se tenir informés : HTML5 Rocks!
  • 46. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre Twitter Bootstrap Car nous ne sommes pas tous des graphistes
  • 47. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre 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 ? ● Utiliser Twitter Bootstrap
  • 48. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre 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
  • 49. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre La panoplie Twitter Bootstrap ● Des éléments de base, des composants, des widgets complèxes... ● Modulable ● Responsive
  • 50. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre 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
  • 51. Côté navigateur 2/3ENIB - CAI Web 2016-2017 2ème semestre 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