SlideShare une entreprise Scribd logo
1  sur  152
Télécharger pour lire hors ligne
ITW_S3 MMI
INTÉGRATION WEB
NIVEAU AVANCÉ ?
1
PIERRE VERT
INTÉGRATEUR FRONTEND // BACKEND
SERVICE DE DONNÉES // OBSERVATOIRE MIDI-PYRENÉES

CHARGÉ D'ENSEIGNEMENT DUT MMI TARBES-CASTRES



PIERRE.VERT@IUT-TARBES.FR
2
AVANT TOUTES CHOSES
où en êtes-vous 

avec le CSS et l’HTML ?
3
PARLONS LA MÊME LANGUE…
PETIT RAPPEL DE BARÈME…
le fond, la forme ?
display ?
W3C ?
flux ?
Modèle de boite ?
Accessibilité ?
Positionning ?
Responsive ?
Fusion des marges ?
LE FOND ET LA FORME
W3C ET LES NORMES
LE FLUX… VOUS Y METTREZ LES DOIGTS
ACCESSIBILITÉ, NORME WCAG (ne pas confondre

avec le SWAG)
AU MENU
Verrines d’ HTML5
RAPPEL HISTORIQUE
LES PRINCIPAUX ÉLÉMENTS
9
AU MENU
CaSSolette de CSS

et ses bonnes pratiques
CSS3 IS GOOD FOR YOU !
Reset
Positionning
Display
--prefix
Unités
Trucs pour faire joli
SELECTEURS
le FLUX
10
AU MENU
Bisque de Responsive,
accompagné de design fluide
CSS3 IS GOOD FOR YOU !
Débordements
Flexbox
Mobile first
Unités
Viewport
MEDIAQUERIES
SVG
11
AU MENU
Outils
EDITEURS // FRAMEWORKS // ICONES
SITES INCONTOURNABLES
12
HTML5
Rappel historique
13
HTML5
Principaux éléments
14
<!doctype html>

<html>

<head>

<title></title>

<meta />

<link />

</head>

<body>

…

</body>

</html>
HTML5
STRUCTURE DE BASE… <!doctype html>
indispensable !
15
HTML5
ELEMENTS SECTIONNANTS
<header> <nav> <main>
<section> <article> <aside>
<footer>
16
HTML5
ELEMENTS GÉNÉRIQUES
<div> <span>
17
gare à la
« divite »
HTML5
SQUELETTE DE BASE…
header

18
nav
footer

mainsection
nav article
article
aside
aside
section article
article
aside
aside
plusieurs possibilités avec les éléments sectionnants…
<header>
<section>
<article>
<aside>
<footer>
19
<header>
p
<aside>
<footer>
<article>
<header>
<section>
<header>
<footer>
p
<section>
figure
p
<nav>
HTML5
ILLUSTRATIONS / IMAGES
<figure>

<img/>

<figcaption>Légende de l’image<figcaption>

</figure>
20
HTML5
MEDIAS
<audio>

<source/> source 1

<source/> source n

</audio>
<video>

<source/> source 1

<source/> source n

</video>
ATTENTION 
aux formats !
<source src="audio.mp3" type="audio/mp3" />

<source src="audio.ogg" type="video/ogg" />
<source src="video.mp4" type="video/mp4" />

<source src="video.webm" type="video/webm" />

<source src="video.ogv" type="video/ogv" />
21
CSS
LE MODELE DE BOITE
modèle de boite, le display
23
2 DISPLAYS PRINCIPAUX
éléments structurants
98%
en vrai, j’ai jamais compté…
INLINEBLOCK
éléments agissant sur le
contenu éditorial
div, h1, ul, p, li, header, nav, section, … span, a, strong, em, …
+ NONE
code css > display: valeur
modèle de boite, display block
24
height
width
MARGIN
PADDING
BORDER
ZONE DE CONTENU
MERCI box-sizing
25
height
width
MARGIN
PADDING
BORDER
ZONE DE CONTENU
code css > box-sizing: border-box
modèle de boite,
fusion des marges
26
LE FLUX
DESSINE MOI UN FLUX…
POSITIONING
Position static
positionnement normal
dans le flux.

valeur par défaut.
ELEM 1
ELEM 2
ELEM 3
ELEM 4
Position relative
se comporte comme
static, sauf si l’on définit
les propriétés top,
bottom, left, ou right.
elem2 { 

position:relative;

top: -10px;

left: 20px;

}
ELEM1
ELEM2
Position fixed
Positionné par rapport à la fenêtre
du navigateur (ne bouge pas)

Mêmes propriétés que la position
relative (top, bottom, left, right)

width = ce qu’il contient
elem2 { 

position:fixed;

bottom: 10px;

right: 0;

}
ELEM1
ELEM2
Position
absolute
Positionné par rapport au plus
proche élément parent « positionné »

Mêmes propriétés que la position
relative



Si <elem1> n’était pas « relative »,
<elem2> serait positionné par
rapport à <body>
elem1 { 

position:relative;

}
ELEM1
ELEM2
elem2 { 

position:absolute;

top: -10px;

right: 10px;

}
Position
absolute
Positionné par rapport au plus
proche élément parent « positionné »

Mêmes propriétés que la position
relative



Si <elem1> n’était pas « relative »,
<elem2> serait positionné par
rapport à <body>
elem1 { 

position:relative;

}
ELEM1
ELEM2
elem2 { 

position:absolute;

top: -10px;

right: 10px;

}
FLOAT
Float
permet de sortir du flux…

enfin pas vraiment, 

…mais si quand même.

le frère d’un flottant se place
derrière, et son contenu s’écoule
autour... 

elem1 { 

float:right;

}
BLABLAB

BLABLAB
BLA BLABLABLA BLA
BLAB BLZLDAL A ,D
ELEM1
<elem1>

</elem1>

<elem2>

</elem2>
DESSINE MOI DES FLOTTANTS…
Float
nav { 

float: left;

width:20%;

}
section { 

float: left;

width:80%;

}
<SECTION>

lorem blabla
<NAV>
<DIV>
<FOOTER>
Float, ça déborde !
<SECTION>

lorem blabla
<NAV>
<DIV>
nav { 

float: left;

width:20%;

}
<FOOTER>
section { 

float: left;

width:80%;

}
UN CONTENEUR A POUR HAUTEUR 

CE QU’IL CONTIENT DANS LE FLUX
CLEAR
SOURCE > BANKSY
Clear
<SECTION>

lorem blabla
<NAV>
<DIV>nav { 

float: left;

width:20%;

}
<FOOTER>
section { 

float: left;

width:80%;

}
footer { 

clear: both;

}
Clear
Remet les flottants qui le précédent dans le flux, 

et interprète leur hauteur afin de placer l’élément après.
Le navigateur intègrera 

les flottants dans le calcul de

la hauteur du parent.
Clear, pas mal mais bof…
un flottant peut déborder de
son parent... 

<P>

lorem blabla
<NAV>
LINK 1
LINK X
<DIV>
nav { 

float: left;

width:200px;

}
un flottant peut déborder de
son parent... mais pas d’un
contexte <P>

lorem blabla
<DIV>
nav { 

float: left; etc…

}

div {

…votre code ici pour 

créer un contexte…

}
Float, une question de contexte…
<NAV>
LINK 1
LINK X
BLOCK FORMATTING CONTEXT
Un block comme contexte
un flottant peut déborder de
son parent... 

mais pas de son contexte... 

<P>

lorem blabla
<H1>
TITRE
MACHIN
<DIV>
h1 { 

float: left; etc…

}

div {

overflow:hidden;

}
HTTP://WWW.ALSACREATIONS.COM/ASTUCE/LIRE/1543-LE-CONTEXTE-DE-FORMATAGE-BLOCK-EN-CSS.HTML
SELECTEURS CSS
C’est quoi un sélecteur ?
Le terme sélecteur désigne la partie précédant le bloc de
déclaration, à gauche de l’accolade ouvrante. Il peut être un
sélecteur d’élément(p), une classe (.list-inline), un ID
(#product) ou un sélecteur d’attribut ([role="navtop"].
Nous pouvons déclarer plusieurs sélecteurs, à condition de les
séparer par une virgule.
48
p, .list-inline, #product, [role="nav-top"] {

margin-top: 20px;

margin-bottom: 20px;

}
49
ATTENTION, LES SÉLECTEURS DOIVENT ÊTRE COMPOSÉS
EXCLUSIVEMENT DE :
• CARACTÈRES ALPHANUMÉRIQUES,
• DE TIRETS ( – ) OU D’UNDERSCORES ( _ ).
IL N’EST PAS POSSIBLE DE COMMENCER UN SÉLECTEUR PAR :
• UN CHIFFRE,
• ET PAS RECOMMANDÉ PAR UN TIRET OU UN UNDERSCORE.
Sélecteur universel
Si vous souhaitez sélectionner l’ensemble des éléments de votre
HTML, rien de plus simple que d’utiliser ce qui est une norme en
informatique, l’astérisque.

* { 

box-sizing: border-box;

}
cette technique n’est pas recommandée, elle sollicite beaucoup trop
lourdement le navigateur…
50
Sélecteur de type
Un sélecteur de type sélectionne un élément par le biais de sa balise
HTML

p { 

color:#00FF00;

}
51
Sélecteur de classe
Le sélecteur de classe est un nom que l’ont défini librement. Il peut être réutilisé
plusieurs fois dans l’HTML. Un sélecteur de classe est composé d’un nom préfixé
d’un point .text-blue.

Il s’applique sur sur l’élément voulu dans l’HTML avec l’attribut class="text-
blue".

52
HTML CSS
<div class="text-blue">

…

</div>

.text-blue {

color:blue;

}
Sélecteur d’identifiant
Le sélecteur d’identifiant ou ID est un nom que l’ont défini librement. Il peut
être réutilisé que seule fois dans l’HTML. Un sélecteur d’identifiant est
composé d’un nom préfixé d’un dièse #product.

Il s’applique sur l’élément voulu dans l’HTML avec l’attribut id="product".

53
HTML CSS
<div id="product">

…

</div>

#product {

background-color:blue;

}
Sélecteur d’identifiant
Le sélecteur d’identifiant ou ID est un nom que l’ont défini librement. Il peut
être réutilisé que seule fois dans l’HTML. Un sélecteur d’identifiant est
composé d’un nom préfixé d’un dièse #product.

Il s’applique sur l’élément voulu dans l’HTML avec l’attribut id="product".

54
HTML CSS
<div id="product">

…

</div>

#product {

background-color:blue;

}
Sélecteur d’attribut
Les sélecteurs d’attribut ciblent un élément en utilisant
la présence d’un certain attribut ou de la valeur d’un
attribut. 

55
HTML CSS
<element attribut="valeur">

…

</element>

[attr="valeur"] {

propriete:valeur;

}
Sélecteur d’attribut
Les sélecteurs d’attribut ciblent un élément en utilisant
la présence d’un certain attribut ou de la valeur d’un
attribut. 

56
HTML CSS
<element attribut="valeur">

…

</element>

[attr="valeur"] {

propriete:valeur;

}
Sélecteur d’attribut
un exemple : 

57
HTML CSS
<section role="list-article">

…

</section>

[role="list-article"] {

background-color:blue;

}
Sélecteur d’attribut
[attr]
Représente un élément avec un attribut nommé attr
[attr=valeur]

Représente un élément avec un attribut nommé attr dont
la valeur est exactement « valeur
58
Sélecteur d’attribut
[attr~=valeur]

Représente un élément avec un attribut nommé attr dont la
valeur est une liste séparée par des espaces, dont l’un d’eux est
exactement « valeur »
[attr|=valeur]

Représente un élément avec un attribut nommé attr dont la
valeur est une liste séparée par un tiret (-), dont l’un d’eux est
exactement « valeur ». Il peut être utilisé pour cibler les codes de
langue utilisant la sous-dénomination.
59
Sélecteur d’attribut
[attr^=valeur]

Représente un élément avec un attribut nommé attr dont la valeur
commence par « valeur »
[attr$=valeur]

Représente un élément avec un attribut nommé attr dont la valeur se
termine par « valeur »
[attr*=valeur]

Représente un élément avec un attribut nommé attr dont la valeur
contient au moins une occurrence de « valeur » comme sous-chaîne
60
Exemple de sélecteur d’attribut
CIBLE UN ÉLÉMENT SELON SON ATTRIBUT 

[type="submit"] {cursor: pointer}

→ tous les éléments ayant un attribut HTML « type » dont la valeur est exactement « submit »
auront une curseur différent
[href^="https"] {background-image: url(cadenas.png)} → si « href » débute par «
https » alors on affiche un picto de cadenas
[href$=".pdf"] {background-image: url(pdf.png)} → si « href » finit par « .pdf » alors
on affiche un picto de PDF
[href*="cassoulet"] {background: url(cassoulet.jpg)} → si « href » contient «
cassoulet » alors on affiche l'image
61
Sélecteur d’enfant
Le sélecteur d’enfant direct s’applique à l’enfant ou aux
enfants de l’élément désigné.

Cette règle s’applique à l’élément elem2 s’il est l’enfant
de elem1 dans l’ordre de déclaration HTML.
62
CSS
elem1 > elem2 {

background-color:blue;

}

>
Sélecteur de frère adjacent
Le sélecteur de frère adjacent affecte un élément à
condition que celui-ci soit précédé de l’autre élément
spécifié. Cette règle s’applique à l’élément elem2 s’il est
le frère de elem1 dans l’ordre de déclaration HTML.
63
CSS
elem1 + elem2 {

background-color:blue;

}

+
Sélecteur adjacent général
Le sélecteur adjacent général cible tous les frères elem2
suivant, directement ou non, un élément elem1.
64
CSS
elem1 ~ elem2 {

background-color:blue;

}

~
Pseudo-classes
Une pseudo-classe CSS est un mot-clé ajouté au sélecteur pour
indiquer un état particulier de l’élément qui doit être sélectionné.
Par exemple, :hover appliquera le style quand l’utilisateur
survolera l’élément visé par le sélecteur.
65
CSS
a:hover {

background-color:blue;

}

:
Pseudo-classes
66
:
:last-child → dernier enfant d'un élément
:nth-child (aussi:nth-last-child) → Nième enfant d'un élément
:first-of-type → 1er enfant du type désigné
:last-of-type → dernier du type désigné
:nth-of-type (aussi:nth-last-of-type) → Nième du type désigné
:only-child → enfant unique
:only-of-type → élément unique du type désigné
liste non exhaustive, la suite dans le doc mémento CSS
Pseudo-classe :nth-child
67
:
Retrouvez vos enfants
http://nth-test.com/
http://nthmaster.com/
Pseudo-elements
Comme les pseudo-classes, les pseudo-éléments sont ajoutés aux sélecteurs.
Au lieu de décrire un état contextuel (survol), ils permettent de cibler certaines parties du
document, et de créer « virtuellement » un nouvel élément... (j'ai pas trouvé mieux comme
explication...)
Par exemple ::first-line cible la première ligne de l’élément ciblé par le sélecteur.
68
CSS
p::first-line {

background-color:blue;

}

::
Pseudo-elements
69
::
::before
cible le premier enfant virtuel de l’élément
::after
cible le dernier enfant virtuel de l’élément
::first-letter
cible la première lettre de la première ligne d’un bloc
::first-line
cible la première ligne de l’élément ciblé par le sélecteur
::selection
applique des règles de décoration à la portion du texte qui a été surligné (non standard)
liste non exhaustive, la suite dans le doc mémento CSS
Vous verrez parfois le simple deux-points (:) 

au lieu du double (::)



La plupart des navigateurs acceptent les deux valeurs. 



Depuis CSS3, cela permet de différencier les pseudo-
classes(:), des pseudo-éléments(::)
LE POIDS DES SÉLECTEURS
Poids des sélecteurs
71
!important <style> #id
.class

[attr]

:pseudo-
élément
bazooka has been nul bien yeah baby
Afin d’améliorer la notion de priorité et de poids nous attribuerons 

un système de points aux sélecteurs. 



Nous pouvons ainsi appliquer des styles à un élément de manière 

plus souple, en utilisant un sélecteur avec le moins de poids possible.
Poids des sélecteurs
72
selecteurs !important <style> #id
.class

[attr]

:pseudo-
élément
sélecteur joker(*), de parenté(>) ou d'adjacence(+) 0 0 0 0 0
sélecteur CSS div, p 0 0 0 0 1
une classe .my-class 0 0 0 1 0
un sélecteur d’attribut [class*="col-"] 0 0 0 1 0
une pseudo-classe :only-of-type 0 0 0 1 0
un ID #my-id 0 0 1 0 0
un style en ligne (injecté souvent par javascript) 

<ul style="padding: 0;">...</ul> 0 1 0 0 0
!important (DANGER ZONE) 1 0 0 0 0
Poids des sélecteurs
73
selecteurs !important <style> #id
.class

[attr]

:pseudo-
élément
#header .logo img 0 0 1 1 1
div#header a.logo img 0 0 1 1 3
div[id=header] a.logo img 0 0 0 2 3
.logo > img 0 0 0 1 1
.logo img:hover 0 0 0 2 1
Préfixes constructeurs
Proposés par le W3C
Liste (non exhaustive) : 

-moz- pour le moteur de rendu Gecko de Mozilla Firefox ou Thunderbird 

-ms- pour Microsoft Internet Explorer

-o- pour Opera

-webkit- pour les moteurs WebKit de Safari et Chrome par exemple 

Concerne : 

Propriétés encore non finalisées (ex. -moz-animation, -webkit-border- radius) 

Éléments propriétaires (ex. -ms-filter, -webkit-mask)
74
RESPONSIVE WEB DESIGN (RWD)
SOURCE > HTTP://BLOG.FROONT.COM/9-BASIC-PRINCIPLES-OF-RESPONSIVE-WEB-DESIGN/
PLAN
76
• Terminologie & définition
• Etat des lieux
• Design fluide
• Contenu fluide
• Media Queries
• Tailles
DÉFINITION
Le Responsive Web Design (RWD) est un ensemble de principes/
méthodes permettant de rendre un site web adaptable à chaque
terminal afin d'apporter la meilleure expérience utilisateur, quel
que soit le contexte de visualisation.
77
TERMINOLOGIE
Design statique

>> LAYOUT FIXE
Design fluide

>> LAYOUT OCCUPE TOUTE LA FENÊTRE NAVIGATEUR, QUELQU’EN SOIT LA TAILLE
Design adaptative

>> LAYOUT CHANGE POUR CERTAINES TAILLES DE LA FENÊTRE NAVIGATEUR (POINTS DE RUPTURE / BREAKPOINTS)
Design responsive

>> LAYOUT S’ADAPTE À LA FENÊTRE NAVIGATEUR, QUELQU’EN SOIT LA TAILLE
78
RESPONSIVE VS ADAPTATIVE
79
SOURCE > HTTP://BLOG.FROONT.COM/9-BASIC-PRINCIPLES-OF-RESPONSIVE-WEB-DESIGN/
BREAKPOINTS VS SANS BREAKPOINT
80
SOURCE > HTTP://BLOG.FROONT.COM/9-BASIC-PRINCIPLES-OF-RESPONSIVE-WEB-DESIGN/
TERMINOLOGIE
Contenus fluides

>> LES CONTENUS S’ADAPTENT EN FONCTION DE LA TAILLE DE LEUR CONTENEUR (GESTION DES DÉBORDEMENTS)
Images fluides

>> LES IMAGES S’ADAPTENT EN FONCTION DE LA TAILLE DE LEUR CONTENEUR (GESTION DES DÉBORDEMENTS)
Media Queries 

>> PERMETTENT DE DÉFINIR DES POINTS DE RUPTURE (BREAKPOINTS)
81
TERMINOLOGIE
Desktop first

>> ON COMMENCE PAR CODER LA VERSION DESKTOP (DU + GRAND AFFICHAGE)
Mobile first 

>> ON COMMENCE PAR CODER LA VERSION MOBILE (DU + PETIT AFFICHAGE)
82
DESKTOP FIRST VS MOBILE FIRST
83
SOURCE > HTTP://BLOG.FROONT.COM/9-BASIC-PRINCIPLES-OF-RESPONSIVE-WEB-DESIGN/
RESPONSIVE OU APP ???
84
le choix dépend de la typologie du contenu et du besoin
ÉTAT DES LIEUX
QUELQUES STATS…
85
SOURCES > HTTP://GS.STATCOUNTER.COM
86
Navigateurs web
87
Résolutions d’écran
88
Desktop vs Mobile vs Tablette
89
OS Tablette
90
OS Mobile
DESIGN FLUIDE
QUELLE UNITÉ, POUR QUEL
USAGE ?
92
LE PIXEL : PX
• Unité « fixe » 

• Unité « rassurante » 

• Produit par les logiciels graphiques 

• Éventuellement source de problèmes d'accessibilité (zoom texte
impossible) 

• Indispensable à certains éléments (images, iframes, etc.) 

QUELLE UNITÉ, POUR QUEL
USAGE ?
93
LE CADRATIN : EM
font-size:****em; width:***em;
• Police relative à la font-size du
parent 

• Taille de police répercutée
d'enfant en enfant (« cascade ») 

• Varie en fonction de la taille de
police utilisateur 

• Largeur (hauteur) du bloc
relative à sa propre font-size
(width: 10em = « 10 caractères
M ») 

• Varie en fonction de la taille de
police utilisateur
QUELLE UNITÉ, POUR QUEL
USAGE ?
94
LE CADRATIN : EM
taille ?
SOURCE > ALSACRÉATIONS QUIZZ
QUELLE UNITÉ, POUR QUEL
USAGE ?
95
LE POURCENTAGE : %
font-size:****%; width:***%;
• Police relative à la font-size du
parent 

• Taille de police répercutée
d'enfant en enfant (« cascade ») 

• Varie en fonction de la taille de
police utilisateur 

• Largeur (hauteur) du bloc
relative à la largeur du bloc
parent

(width: 10% = 10% du parent) 

• Varie en fonction de la taille de
la fenêtre navigateur
QUELLE UNITÉ, POUR QUEL
USAGE ?
96
LE POURCENTAGE : %
taille ?
SOURCE > ALSACRÉATIONS QUIZZ
QUELLE UNITÉ, POUR QUEL
USAGE ?
97
ROOT EM : REM
font-size:****rem; width:***rem;
• Police relative à la font-size du
parent de <html> 

• Pas de « cascade » 

• Varie en fonction de la taille de
police utilisateur 

• Largeur (hauteur) du bloc
relative à sa propre font-size
(width: 10rem = « 10 caractères
M ») 

• Varie en fonction de la taille de
police utilisateur
QUELLE UNITÉ, POUR QUEL
USAGE ?
98
ROOT EM : REM
taille ?
SOURCE > ALSACRÉATIONS QUIZZ
QUELLE UNITÉ, POUR QUEL
USAGE ?
99
VIEWPORT UNITS
font-size:****vw; width:***vw;
• Police relative à la largeur de
fenêtre 

• Pas de « cascade » 

• Varie en fonction de la taille de
fenêtre navigateur

• Largeur (hauteur) du bloc
relative à la largeur de fenêtre
(width: 10vw = 10% de la
fenêtre) 

• Varie en fonction de la taille de
la fenêtre navigateur
vw, vh, vmin, vmax
QUELLE UNITÉ, POUR QUEL
USAGE ?
100
VIEWPORT UNITS
vw, vh, vmin, vmax
vmin,vmax → hauteur ou largeur du viewport, 

selon que l’un ou l’autre soit 

inférieur
Rendre à Goetter, ce qui appartient à Goetter : Blog / Formation
QUELLE UNITÉ, POUR QUEL
USAGE ?
101
VIEWPORT UNITS
vw, vh, vmin, vmax
taille ?
SOURCE > ALSACRÉATIONS QUIZZ
QUELLE UNITÉ, POUR QUEL
USAGE ?
102
MINIMAS / MAXIMAS UNITS
• min-width :largeur minimum 

• max-width : largeur maximum
• min-height :hauteur minimum 

• max-height : hauteur maximum
QUELLE UNITÉ, POUR QUEL
USAGE ?
103
MINIMAS / MAXIMAS UNITS
SOURCE > HTTP://BLOG.FROONT.COM/9-BASIC-PRINCIPLES-OF-RESPONSIVE-WEB-DESIGN/
QUELLE UNITÉ, POUR QUEL
USAGE ?
104
SOURCE > HTTP://BLOG.FROONT.COM/9-BASIC-PRINCIPLES-OF-RESPONSIVE-WEB-DESIGN/
COLONNES FLUIDES
105
• Mélange des unités 

largeur en % + padding et bordures en pixel ?

• Débordements 

les mots longs et URL qui dépassent

(on va y revenir)
REMEMBER : Un block comme contexte
un flottant peut déborder de
son parent... 

mais pas de son contexte... 

<P>

lorem blabla
<H1>
TITRE
MACHIN
<DIV>
h1 { 

float: left; etc…

}

div {

overflow:hidden;

}
COLONNES FLUIDES
107
• Mélange des unités 

largeur en % + padding et bordures en pixel ?

• Débordements 

les mots longs et URL qui dépassent

(on va y revenir)
GRILLES FLEXIBLES
108
• Des générateurs existent

• Frameworks pour vous servir (bootstrap/foundation/knacss/etc…)
GRILLES FLEXIBLES
109
• Ethan Marcotte : ROBOT OR NOT
GRILLES FLEXIBLES
110
Les frameworks ont 

des grilles flexibles, 

mais pas vraiment

responsive…

plutôt adaptative…

BREAKPOINTS SELON LES STANDARDS… 

PAS SELON LE BESOIN !!!!
GRILLES FLEXIBLES
111
en avez-vous réellement besoin…?
CONTENUS FLUIDES débordements…
GÉRER LES DÉBORDEMENTS DE CONTENUS
113
word-wrap: break-word ;
Rendre à Goetter, ce qui appartient à Goetter : Blog / Formation
114
hyphens: auto ;
Attention aux --prefixCésure intelligente !
GÉRER LES DÉBORDEMENTS DE CONTENUS
Rendre à Goetter, ce qui appartient à Goetter : Blog / Formation
115
table {
    table-layout: fixed;
    width:100%;
}
GÉRER LES DÉBORDEMENTS DE CONTENUS
SUR LES CELLULES DE TABLEAUX
IMAGES FLUIDES
116
GÉRER LES DÉBORDEMENTS DE MEDIAS
Y a des gens qui n’ont pas 

réussi parce qu’ils ne 

sont pas awares
ÇA DÉBORDE LÀ…
IMAGES FLUIDES
117
GÉRER LES DÉBORDEMENTS DE MEDIAS
Y a des gens qui n’ont pas 

réussi parce qu’ils ne 

sont pas awares
max-width: 100% ;
height : auto ;


→ sur img, table, td, blockquote, 

object, video, input, textarea
MEDIA QUERIES
Media Queries
119
LES POINTS DE RUPTURE (BREAKPOINTS)
SOURCE : HTTP://WWW.JOHNBHARTLEY.COM/SPEAKING/BUFF/
120
Les frameworks ont 

des grilles flexibles, 

mais pas vraiment

responsive…

plutôt adaptative…

BREAKPOINTS SELON LES STANDARDS… 

PAS SELON LE BESOIN !!!!
Media Queries
LES POINTS DE RUPTURE (BREAKPOINTS)
121
Media Queries
LES POINTS DE RUPTURE (BREAKPOINTS)
QUELS BREAKPOINTS UTILISER ?
122
CELA DEPEND DE VOTRE DESIGN !
Media Queries
LES POINTS DE RUPTURE (BREAKPOINTS)
QUELS BREAKPOINTS UTILISER ?
UNE GRILLE FLEXIBLE GÉNÉRÉE N’EST PAS FORCEMENT UTILE
123
Media Queries
CIBLER SELON LA TAILLE DE L’ÉCRAN
@media (max-width:640px) {

body { width: auto; }



}
ET PLEINS D’AUTRES CSS ICI,

DÉDIÉS AUX PETITS ÉCRANS
PROPRIÉTÉS
124
Media Queries
CRITÈRES DES MEDIAS QUERIES
• width, height
largeur, hauteur de la zone d’affichage (viewport) 

• device-width, device-height
largeur, hauteur du périphérique (« résolution ») 

• resolution 

densité de pixels (ex. 192dpi) 

• orientation
périphérique tenu en portrait (portrait) ou paysage (landscape)
125
Media Queries
CUMUL DE CRITÈRES
• and → « et »

• only → « uniquement » 

• not → « non »

• , → « ou »
@media (max-width:640px) and (orientation:portrait) {}
@media only screen and (max-width:1024px) {}
@media (max-width:640px) , print {}
@media (max-width:640px) and not (orientation:portrait) {}
TAILLES
bienvenu en enfer…
127
http://mydevice.io/
http://screensiz.es/
http://viewportsizes.com/
http://mqtest.io/
bienvenu en enfer…
128
UN PIXEL EST-IL UN PIXEL ?
bienvenu en enfer…
129
UN PIXEL EST-IL UN PIXEL ?
bienvenu en enfer…
130
viewport (faux pixels)

ce que le device accepte d’afficher…

largeur réelle (vrais pixels)
device-width (largeur déclarée, faux pixels)

ce que le device déclare faire comme largeur
1
2
3
UN PIXEL EST-IL UN PIXEL ?
bienvenu en enfer…
131
largeur réelle (vrais pixels)
1UN PIXEL EST-IL UN PIXEL ?
« LARGEUR DE L’ÉCRAN D’UN TERMINAL MOBILE »
iPhone 3 : 320px

Samsung Galaxy S : 480px 

iPhone 4, iPhone 5 : 640px 

Nokia Lumia 920 : 768px 

iPad, iPad Mini : 768px 

Sony Xperia Z : 1080px 

Samsung Galaxy S4 : 1080px 

iPad 3 : 1536px
bienvenu en enfer…
132
device-width 

(largeur déclarée, faux pixels)2UN PIXEL EST-IL UN PIXEL ?
« LARGEUR DÉCLARÉE PAR UN TERMINAL MOBILE »
iPhone 3, 4, 5 : 320px 



iPhone 6 : 375px

iPhone 6 Plus : 414px



Sony Xperia Z : 360px 

Nokia Lumia 920 : 320px

Samsung Galaxy S4 : 360px



iPad 1, 2, 3 : 768px



iPad mini : 768px
bienvenu en enfer…
133
viewport (faux pixels)

3UN PIXEL EST-IL UN PIXEL ?
« LARGEUR DE FENÊTRE »
« SURFACE VIRTUELLE QU’UN MOBILE ACCEPTE 

D’AFFICHER PAR DÉFAUT À L’ÉCRAN »
bienvenu en enfer…
134
viewport (faux pixels)

3UN PIXEL EST-IL UN PIXEL ?
Safari : 980px



Opera mini : 850px 

Opera mobile : 980px 

Android 1,2,3 : 800px 

Android 4 : 980px



IE mobile : 1024px
bienvenu en enfer…
135
UN PIXEL EST-IL UN PIXEL ?
largeur physique
device-width
viewport
Niveau de zoom : 

device-width / viewport 

320 / 980 = 0,33
Forcer le viewport
136
<meta name="viewport" content="width=320">
BALISE META VIEWPORT
LARGEUR DE FENÊTRE 320PX
Forcer le viewport
137
<meta name="viewport" content=« width=device-width">
BALISE META VIEWPORT
LARGEUR DE FENÊTRE = DEVICE-WIDTH
Forcer le viewport
138
<meta name="viewport" content=« initial-scale=1.0 »>
BALISE META VIEWPORT
NIVEAU DE ZOOM INITIAL = 1 (PAS DE ZOOM)
<meta name="viewport" content=« width=device-width">
Forcer le viewport
139
<meta name="viewport" content=« width=device-width, 

initial-scale=1.0 »>
BALISE META VIEWPORT
LARGEUR DE FENÊTRE = DEVICE-WIDTH ET NIVEAU DE ZOOM INITIAL
<meta name="viewport" content=« width=device-width">
<meta name="viewport" content=« initial-scale=1.0 »>
Forcer le viewport
140
BALISE META VIEWPORT
• width / height : impose une largeur / hauteur de viewport 

(ex : « width=device-width ») 

• initial-scale : impose un zoom initial (ex : « initial-scale=1.0 ») 

• user-scalable : zoom autorisé ou non (ex : « user-scalable=no ») 

• minimum-scale : taille de zoom mini (ex : « minimum-scale=1.0 ») 

• maximum-scale : taille de zoom maxi (ex : « maximum-scale=1.0 ») 

<meta name="viewport" content="">
Forcer le viewport
141
BALISE META VIEWPORT
hop hop hop ! doucement là…du html pour gérer le design > beurk
Forcer le viewport
142
LA FUTURE MÉTHODE VIEWPORT
@viewport {

width: device-width; 

height: device-height; 

zoom: 1;

max-zoom: 1; 

min-zoom: 1; 

user-zoom: fixed; 

orientation: portrait;
}
DÉJÀ RECONNU PAR :
OPERA,
IE MOBILE 10
FIREFOX MOBILE (EX. @-O-VIEWPORT)!
Comprendre le viewport
143
PERFORMANCES
Privilégiez le format SVG
145
SOURCE > HTTP://BLOG.FROONT.COM/9-BASIC-PRINCIPLES-OF-RESPONSIVE-WEB-DESIGN/
Privilégiez les fonts « systèmes »
146
SOURCE > HTTP://BLOG.FROONT.COM/9-BASIC-PRINCIPLES-OF-RESPONSIVE-WEB-DESIGN/
Optimisez vos images !
147
Ensuite, chargez les en fonction :
• de la taille du device
• si l’écran est retina
• en fonction de la connectivité
on arrête pas le progrès…
148
http://www.alsacreations.com/article/lire/1559-responsive-web-design-present-futur-
adaptation-mobile.html
TRÈS BON ARTICLE DE STEPHANIE WALTER (ALSACRÉATIONS):
références, webographie…
149
LINK
Responsive Web Design
ETHAN MARCOTTE
EDITIONS EYROLLES
RAPHAËL GOETTER HTTP://GOETTER.FR/LIVRES/
EDITIONS EYROLLES
QUELQUES LIVRES…
références, webographie…
150
HTTPS://WWW.YOUTUBE.COM/WATCH?V=115RDUBV--U
Le futur du Responsive Web Design
HTTP://WWW.PARIS-WEB.FR/2013/CONFERENCES/HTML-CSS-BOUSCULEZ-VOS-HABITUDES.PHP
html/css, bousculez vos habitudes :
QUELQUES CONFÉRENCES…
références, webographie…
151
http://www.alsacreations.com/tutoriels/
https://css-tricks.com/
QUELQUES SITES…
https://svgontheweb.com/
http://caniuse.com/
http://tympanus.net/codrops/css_reference/
http://sarasoueidan.com/
Pour vous servir…
152
https://www.facebook.com/pierre.vert.733

Contenu connexe

Similaire à Intégration web MMI

Intégrateurs, bousculez vos habitudes
Intégrateurs, bousculez vos habitudesIntégrateurs, bousculez vos habitudes
Intégrateurs, bousculez vos habitudesRaphaël Goetter
 
technologie web - part2
technologie web - part2technologie web - part2
technologie web - part2Benoît Simard
 
Symfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantSymfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantHugo Hamon
 
Scrapez facilement et gratuitement
Scrapez facilement et gratuitementScrapez facilement et gratuitement
Scrapez facilement et gratuitementMadeline Pinthon
 
ASP.NET from Zero to Hero
ASP.NET from Zero to HeroASP.NET from Zero to Hero
ASP.NET from Zero to HeroCellenza
 
La puissance des pseudo-éléments
La puissance des pseudo-élémentsLa puissance des pseudo-éléments
La puissance des pseudo-élémentsGeoffrey Croftє
 
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
 
HTML5 & CSS3
HTML5 & CSS3HTML5 & CSS3
HTML5 & CSS3JDerrien
 
initiation-dvptWEB-ericacademy.pdf
initiation-dvptWEB-ericacademy.pdfinitiation-dvptWEB-ericacademy.pdf
initiation-dvptWEB-ericacademy.pdfEricKeita
 
cours developpement web javascript 2023/2024
cours developpement web javascript 2023/2024cours developpement web javascript 2023/2024
cours developpement web javascript 2023/2024YounesOuladSayad1
 
programmation orienté objet c++
programmation orienté objet c++programmation orienté objet c++
programmation orienté objet c++coursuniv
 
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0Gregory Renard
 

Similaire à Intégration web MMI (20)

Intégrateurs, bousculez vos habitudes
Intégrateurs, bousculez vos habitudesIntégrateurs, bousculez vos habitudes
Intégrateurs, bousculez vos habitudes
 
technologie web - part2
technologie web - part2technologie web - part2
technologie web - part2
 
Symfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantSymfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 Performant
 
react-fr.pdf
react-fr.pdfreact-fr.pdf
react-fr.pdf
 
Débordement de flottant CSS
Débordement de flottant CSSDébordement de flottant CSS
Débordement de flottant CSS
 
HTML5
HTML5HTML5
HTML5
 
Scrapez facilement et gratuitement
Scrapez facilement et gratuitementScrapez facilement et gratuitement
Scrapez facilement et gratuitement
 
ASP.NET from Zero to Hero
ASP.NET from Zero to HeroASP.NET from Zero to Hero
ASP.NET from Zero to Hero
 
Introduction au Jquery
Introduction au JqueryIntroduction au Jquery
Introduction au Jquery
 
La puissance des pseudo-éléments
La puissance des pseudo-élémentsLa puissance des pseudo-éléments
La puissance des pseudo-éléments
 
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
 
HTML5 & CSS3
HTML5 & CSS3HTML5 & CSS3
HTML5 & CSS3
 
HTML5, le nouveau buzzword
HTML5, le nouveau buzzwordHTML5, le nouveau buzzword
HTML5, le nouveau buzzword
 
initiation-dvptWEB-ericacademy.pdf
initiation-dvptWEB-ericacademy.pdfinitiation-dvptWEB-ericacademy.pdf
initiation-dvptWEB-ericacademy.pdf
 
Formulaires
FormulairesFormulaires
Formulaires
 
Introduction à jQuery
Introduction à jQueryIntroduction à jQuery
Introduction à jQuery
 
cours developpement web javascript 2023/2024
cours developpement web javascript 2023/2024cours developpement web javascript 2023/2024
cours developpement web javascript 2023/2024
 
Html
HtmlHtml
Html
 
programmation orienté objet c++
programmation orienté objet c++programmation orienté objet c++
programmation orienté objet c++
 
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
 

Intégration web MMI

  • 2. PIERRE VERT INTÉGRATEUR FRONTEND // BACKEND SERVICE DE DONNÉES // OBSERVATOIRE MIDI-PYRENÉES
 CHARGÉ D'ENSEIGNEMENT DUT MMI TARBES-CASTRES
 
 PIERRE.VERT@IUT-TARBES.FR 2
  • 3. AVANT TOUTES CHOSES où en êtes-vous 
 avec le CSS et l’HTML ? 3
  • 4. PARLONS LA MÊME LANGUE… PETIT RAPPEL DE BARÈME… le fond, la forme ? display ? W3C ? flux ? Modèle de boite ? Accessibilité ? Positionning ? Responsive ? Fusion des marges ?
  • 5. LE FOND ET LA FORME
  • 6. W3C ET LES NORMES
  • 7. LE FLUX… VOUS Y METTREZ LES DOIGTS
  • 8. ACCESSIBILITÉ, NORME WCAG (ne pas confondre
 avec le SWAG)
  • 9. AU MENU Verrines d’ HTML5 RAPPEL HISTORIQUE LES PRINCIPAUX ÉLÉMENTS 9
  • 10. AU MENU CaSSolette de CSS
 et ses bonnes pratiques CSS3 IS GOOD FOR YOU ! Reset Positionning Display --prefix Unités Trucs pour faire joli SELECTEURS le FLUX 10
  • 11. AU MENU Bisque de Responsive, accompagné de design fluide CSS3 IS GOOD FOR YOU ! Débordements Flexbox Mobile first Unités Viewport MEDIAQUERIES SVG 11
  • 12. AU MENU Outils EDITEURS // FRAMEWORKS // ICONES SITES INCONTOURNABLES 12
  • 15. <!doctype html> <html> <head> <title></title> <meta /> <link /> </head> <body> … </body> </html> HTML5 STRUCTURE DE BASE… <!doctype html>
indispensable ! 15
  • 16. HTML5 ELEMENTS SECTIONNANTS <header> <nav> <main> <section> <article> <aside> <footer> 16
  • 18. HTML5 SQUELETTE DE BASE… header 18 nav footer mainsection nav article article aside aside section article article aside aside
  • 19. plusieurs possibilités avec les éléments sectionnants… <header> <section> <article> <aside> <footer> 19 <header> p <aside> <footer> <article> <header> <section> <header> <footer> p <section> figure p <nav>
  • 21. HTML5 MEDIAS <audio> <source/> source 1 <source/> source n </audio> <video> <source/> source 1 <source/> source n </video> ATTENTION 
aux formats ! <source src="audio.mp3" type="audio/mp3" />
 <source src="audio.ogg" type="video/ogg" /> <source src="video.mp4" type="video/mp4" />
 <source src="video.webm" type="video/webm" />
 <source src="video.ogv" type="video/ogv" /> 21
  • 23. modèle de boite, le display 23 2 DISPLAYS PRINCIPAUX éléments structurants 98% en vrai, j’ai jamais compté… INLINEBLOCK éléments agissant sur le contenu éditorial div, h1, ul, p, li, header, nav, section, … span, a, strong, em, … + NONE code css > display: valeur
  • 24. modèle de boite, display block 24 height width MARGIN PADDING BORDER ZONE DE CONTENU
  • 25. MERCI box-sizing 25 height width MARGIN PADDING BORDER ZONE DE CONTENU code css > box-sizing: border-box
  • 26. modèle de boite, fusion des marges 26
  • 28. DESSINE MOI UN FLUX…
  • 30. Position static positionnement normal dans le flux. valeur par défaut. ELEM 1 ELEM 2 ELEM 3 ELEM 4
  • 31. Position relative se comporte comme static, sauf si l’on définit les propriétés top, bottom, left, ou right. elem2 { 
 position:relative;
 top: -10px;
 left: 20px;
 } ELEM1 ELEM2
  • 32. Position fixed Positionné par rapport à la fenêtre du navigateur (ne bouge pas) Mêmes propriétés que la position relative (top, bottom, left, right) width = ce qu’il contient elem2 { 
 position:fixed;
 bottom: 10px;
 right: 0;
 } ELEM1 ELEM2
  • 33. Position absolute Positionné par rapport au plus proche élément parent « positionné » Mêmes propriétés que la position relative
 
 Si <elem1> n’était pas « relative », <elem2> serait positionné par rapport à <body> elem1 { 
 position:relative;
 } ELEM1 ELEM2 elem2 { 
 position:absolute;
 top: -10px;
 right: 10px;
 }
  • 34. Position absolute Positionné par rapport au plus proche élément parent « positionné » Mêmes propriétés que la position relative
 
 Si <elem1> n’était pas « relative », <elem2> serait positionné par rapport à <body> elem1 { 
 position:relative;
 } ELEM1 ELEM2 elem2 { 
 position:absolute;
 top: -10px;
 right: 10px;
 }
  • 35. FLOAT
  • 36. Float permet de sortir du flux…
 enfin pas vraiment, 
 …mais si quand même. le frère d’un flottant se place derrière, et son contenu s’écoule autour... elem1 { 
 float:right;
 } BLABLAB
 BLABLAB BLA BLABLABLA BLA BLAB BLZLDAL A ,D ELEM1 <elem1>
 </elem1>
 <elem2>
 </elem2>
  • 37. DESSINE MOI DES FLOTTANTS…
  • 38. Float nav { 
 float: left;
 width:20%;
 } section { 
 float: left;
 width:80%;
 } <SECTION>
 lorem blabla <NAV> <DIV> <FOOTER>
  • 39. Float, ça déborde ! <SECTION>
 lorem blabla <NAV> <DIV> nav { 
 float: left;
 width:20%;
 } <FOOTER> section { 
 float: left;
 width:80%;
 } UN CONTENEUR A POUR HAUTEUR 
 CE QU’IL CONTIENT DANS LE FLUX
  • 41. Clear <SECTION>
 lorem blabla <NAV> <DIV>nav { 
 float: left;
 width:20%;
 } <FOOTER> section { 
 float: left;
 width:80%;
 } footer { 
 clear: both;
 }
  • 42. Clear Remet les flottants qui le précédent dans le flux, 
 et interprète leur hauteur afin de placer l’élément après. Le navigateur intègrera 
 les flottants dans le calcul de
 la hauteur du parent.
  • 43. Clear, pas mal mais bof… un flottant peut déborder de son parent... <P>
 lorem blabla <NAV> LINK 1 LINK X <DIV> nav { 
 float: left;
 width:200px;
 }
  • 44. un flottant peut déborder de son parent... mais pas d’un contexte <P>
 lorem blabla <DIV> nav { 
 float: left; etc…
 }
 div {
 …votre code ici pour 
 créer un contexte…
 } Float, une question de contexte… <NAV> LINK 1 LINK X
  • 46. Un block comme contexte un flottant peut déborder de son parent... mais pas de son contexte... <P>
 lorem blabla <H1> TITRE MACHIN <DIV> h1 { 
 float: left; etc…
 }
 div {
 overflow:hidden;
 } HTTP://WWW.ALSACREATIONS.COM/ASTUCE/LIRE/1543-LE-CONTEXTE-DE-FORMATAGE-BLOCK-EN-CSS.HTML
  • 48. C’est quoi un sélecteur ? Le terme sélecteur désigne la partie précédant le bloc de déclaration, à gauche de l’accolade ouvrante. Il peut être un sélecteur d’élément(p), une classe (.list-inline), un ID (#product) ou un sélecteur d’attribut ([role="navtop"]. Nous pouvons déclarer plusieurs sélecteurs, à condition de les séparer par une virgule. 48 p, .list-inline, #product, [role="nav-top"] {
 margin-top: 20px;
 margin-bottom: 20px;
 }
  • 49. 49 ATTENTION, LES SÉLECTEURS DOIVENT ÊTRE COMPOSÉS EXCLUSIVEMENT DE : • CARACTÈRES ALPHANUMÉRIQUES, • DE TIRETS ( – ) OU D’UNDERSCORES ( _ ). IL N’EST PAS POSSIBLE DE COMMENCER UN SÉLECTEUR PAR : • UN CHIFFRE, • ET PAS RECOMMANDÉ PAR UN TIRET OU UN UNDERSCORE.
  • 50. Sélecteur universel Si vous souhaitez sélectionner l’ensemble des éléments de votre HTML, rien de plus simple que d’utiliser ce qui est une norme en informatique, l’astérisque. * { 
 box-sizing: border-box;
 } cette technique n’est pas recommandée, elle sollicite beaucoup trop lourdement le navigateur… 50
  • 51. Sélecteur de type Un sélecteur de type sélectionne un élément par le biais de sa balise HTML p { 
 color:#00FF00;
 } 51
  • 52. Sélecteur de classe Le sélecteur de classe est un nom que l’ont défini librement. Il peut être réutilisé plusieurs fois dans l’HTML. Un sélecteur de classe est composé d’un nom préfixé d’un point .text-blue.
 Il s’applique sur sur l’élément voulu dans l’HTML avec l’attribut class="text- blue". 52 HTML CSS <div class="text-blue"> … </div> .text-blue { color:blue; }
  • 53. Sélecteur d’identifiant Le sélecteur d’identifiant ou ID est un nom que l’ont défini librement. Il peut être réutilisé que seule fois dans l’HTML. Un sélecteur d’identifiant est composé d’un nom préfixé d’un dièse #product.
 Il s’applique sur l’élément voulu dans l’HTML avec l’attribut id="product". 53 HTML CSS <div id="product"> … </div> #product { background-color:blue; }
  • 54. Sélecteur d’identifiant Le sélecteur d’identifiant ou ID est un nom que l’ont défini librement. Il peut être réutilisé que seule fois dans l’HTML. Un sélecteur d’identifiant est composé d’un nom préfixé d’un dièse #product.
 Il s’applique sur l’élément voulu dans l’HTML avec l’attribut id="product". 54 HTML CSS <div id="product"> … </div> #product { background-color:blue; }
  • 55. Sélecteur d’attribut Les sélecteurs d’attribut ciblent un élément en utilisant la présence d’un certain attribut ou de la valeur d’un attribut. 55 HTML CSS <element attribut="valeur"> … </element> [attr="valeur"] { propriete:valeur; }
  • 56. Sélecteur d’attribut Les sélecteurs d’attribut ciblent un élément en utilisant la présence d’un certain attribut ou de la valeur d’un attribut. 56 HTML CSS <element attribut="valeur"> … </element> [attr="valeur"] { propriete:valeur; }
  • 57. Sélecteur d’attribut un exemple : 57 HTML CSS <section role="list-article"> … </section> [role="list-article"] { background-color:blue; }
  • 58. Sélecteur d’attribut [attr] Représente un élément avec un attribut nommé attr [attr=valeur] Représente un élément avec un attribut nommé attr dont la valeur est exactement « valeur 58
  • 59. Sélecteur d’attribut [attr~=valeur]
 Représente un élément avec un attribut nommé attr dont la valeur est une liste séparée par des espaces, dont l’un d’eux est exactement « valeur » [attr|=valeur]
 Représente un élément avec un attribut nommé attr dont la valeur est une liste séparée par un tiret (-), dont l’un d’eux est exactement « valeur ». Il peut être utilisé pour cibler les codes de langue utilisant la sous-dénomination. 59
  • 60. Sélecteur d’attribut [attr^=valeur]
 Représente un élément avec un attribut nommé attr dont la valeur commence par « valeur » [attr$=valeur]
 Représente un élément avec un attribut nommé attr dont la valeur se termine par « valeur » [attr*=valeur]
 Représente un élément avec un attribut nommé attr dont la valeur contient au moins une occurrence de « valeur » comme sous-chaîne 60
  • 61. Exemple de sélecteur d’attribut CIBLE UN ÉLÉMENT SELON SON ATTRIBUT 
 [type="submit"] {cursor: pointer}
 → tous les éléments ayant un attribut HTML « type » dont la valeur est exactement « submit » auront une curseur différent [href^="https"] {background-image: url(cadenas.png)} → si « href » débute par « https » alors on affiche un picto de cadenas [href$=".pdf"] {background-image: url(pdf.png)} → si « href » finit par « .pdf » alors on affiche un picto de PDF [href*="cassoulet"] {background: url(cassoulet.jpg)} → si « href » contient « cassoulet » alors on affiche l'image 61
  • 62. Sélecteur d’enfant Le sélecteur d’enfant direct s’applique à l’enfant ou aux enfants de l’élément désigné.
 Cette règle s’applique à l’élément elem2 s’il est l’enfant de elem1 dans l’ordre de déclaration HTML. 62 CSS elem1 > elem2 { background-color:blue; } >
  • 63. Sélecteur de frère adjacent Le sélecteur de frère adjacent affecte un élément à condition que celui-ci soit précédé de l’autre élément spécifié. Cette règle s’applique à l’élément elem2 s’il est le frère de elem1 dans l’ordre de déclaration HTML. 63 CSS elem1 + elem2 { background-color:blue; } +
  • 64. Sélecteur adjacent général Le sélecteur adjacent général cible tous les frères elem2 suivant, directement ou non, un élément elem1. 64 CSS elem1 ~ elem2 { background-color:blue; } ~
  • 65. Pseudo-classes Une pseudo-classe CSS est un mot-clé ajouté au sélecteur pour indiquer un état particulier de l’élément qui doit être sélectionné. Par exemple, :hover appliquera le style quand l’utilisateur survolera l’élément visé par le sélecteur. 65 CSS a:hover { background-color:blue; } :
  • 66. Pseudo-classes 66 : :last-child → dernier enfant d'un élément :nth-child (aussi:nth-last-child) → Nième enfant d'un élément :first-of-type → 1er enfant du type désigné :last-of-type → dernier du type désigné :nth-of-type (aussi:nth-last-of-type) → Nième du type désigné :only-child → enfant unique :only-of-type → élément unique du type désigné liste non exhaustive, la suite dans le doc mémento CSS
  • 67. Pseudo-classe :nth-child 67 : Retrouvez vos enfants http://nth-test.com/ http://nthmaster.com/
  • 68. Pseudo-elements Comme les pseudo-classes, les pseudo-éléments sont ajoutés aux sélecteurs. Au lieu de décrire un état contextuel (survol), ils permettent de cibler certaines parties du document, et de créer « virtuellement » un nouvel élément... (j'ai pas trouvé mieux comme explication...) Par exemple ::first-line cible la première ligne de l’élément ciblé par le sélecteur. 68 CSS p::first-line { background-color:blue; } ::
  • 69. Pseudo-elements 69 :: ::before cible le premier enfant virtuel de l’élément ::after cible le dernier enfant virtuel de l’élément ::first-letter cible la première lettre de la première ligne d’un bloc ::first-line cible la première ligne de l’élément ciblé par le sélecteur ::selection applique des règles de décoration à la portion du texte qui a été surligné (non standard) liste non exhaustive, la suite dans le doc mémento CSS Vous verrez parfois le simple deux-points (:) 
 au lieu du double (::)
 
 La plupart des navigateurs acceptent les deux valeurs. 
 Depuis CSS3, cela permet de différencier les pseudo- classes(:), des pseudo-éléments(::)
  • 70. LE POIDS DES SÉLECTEURS
  • 71. Poids des sélecteurs 71 !important <style> #id .class
 [attr]
 :pseudo- élément bazooka has been nul bien yeah baby Afin d’améliorer la notion de priorité et de poids nous attribuerons 
 un système de points aux sélecteurs. 
 
 Nous pouvons ainsi appliquer des styles à un élément de manière 
 plus souple, en utilisant un sélecteur avec le moins de poids possible.
  • 72. Poids des sélecteurs 72 selecteurs !important <style> #id .class
 [attr]
 :pseudo- élément sélecteur joker(*), de parenté(>) ou d'adjacence(+) 0 0 0 0 0 sélecteur CSS div, p 0 0 0 0 1 une classe .my-class 0 0 0 1 0 un sélecteur d’attribut [class*="col-"] 0 0 0 1 0 une pseudo-classe :only-of-type 0 0 0 1 0 un ID #my-id 0 0 1 0 0 un style en ligne (injecté souvent par javascript) 
 <ul style="padding: 0;">...</ul> 0 1 0 0 0 !important (DANGER ZONE) 1 0 0 0 0
  • 73. Poids des sélecteurs 73 selecteurs !important <style> #id .class
 [attr]
 :pseudo- élément #header .logo img 0 0 1 1 1 div#header a.logo img 0 0 1 1 3 div[id=header] a.logo img 0 0 0 2 3 .logo > img 0 0 0 1 1 .logo img:hover 0 0 0 2 1
  • 74. Préfixes constructeurs Proposés par le W3C Liste (non exhaustive) : -moz- pour le moteur de rendu Gecko de Mozilla Firefox ou Thunderbird 
 -ms- pour Microsoft Internet Explorer
 -o- pour Opera
 -webkit- pour les moteurs WebKit de Safari et Chrome par exemple Concerne : 
 Propriétés encore non finalisées (ex. -moz-animation, -webkit-border- radius) 
 Éléments propriétaires (ex. -ms-filter, -webkit-mask) 74
  • 75. RESPONSIVE WEB DESIGN (RWD) SOURCE > HTTP://BLOG.FROONT.COM/9-BASIC-PRINCIPLES-OF-RESPONSIVE-WEB-DESIGN/
  • 76. PLAN 76 • Terminologie & définition • Etat des lieux • Design fluide • Contenu fluide • Media Queries • Tailles
  • 77. DÉFINITION Le Responsive Web Design (RWD) est un ensemble de principes/ méthodes permettant de rendre un site web adaptable à chaque terminal afin d'apporter la meilleure expérience utilisateur, quel que soit le contexte de visualisation. 77
  • 78. TERMINOLOGIE Design statique >> LAYOUT FIXE Design fluide >> LAYOUT OCCUPE TOUTE LA FENÊTRE NAVIGATEUR, QUELQU’EN SOIT LA TAILLE Design adaptative >> LAYOUT CHANGE POUR CERTAINES TAILLES DE LA FENÊTRE NAVIGATEUR (POINTS DE RUPTURE / BREAKPOINTS) Design responsive >> LAYOUT S’ADAPTE À LA FENÊTRE NAVIGATEUR, QUELQU’EN SOIT LA TAILLE 78
  • 79. RESPONSIVE VS ADAPTATIVE 79 SOURCE > HTTP://BLOG.FROONT.COM/9-BASIC-PRINCIPLES-OF-RESPONSIVE-WEB-DESIGN/
  • 80. BREAKPOINTS VS SANS BREAKPOINT 80 SOURCE > HTTP://BLOG.FROONT.COM/9-BASIC-PRINCIPLES-OF-RESPONSIVE-WEB-DESIGN/
  • 81. TERMINOLOGIE Contenus fluides >> LES CONTENUS S’ADAPTENT EN FONCTION DE LA TAILLE DE LEUR CONTENEUR (GESTION DES DÉBORDEMENTS) Images fluides >> LES IMAGES S’ADAPTENT EN FONCTION DE LA TAILLE DE LEUR CONTENEUR (GESTION DES DÉBORDEMENTS) Media Queries >> PERMETTENT DE DÉFINIR DES POINTS DE RUPTURE (BREAKPOINTS) 81
  • 82. TERMINOLOGIE Desktop first >> ON COMMENCE PAR CODER LA VERSION DESKTOP (DU + GRAND AFFICHAGE) Mobile first >> ON COMMENCE PAR CODER LA VERSION MOBILE (DU + PETIT AFFICHAGE) 82
  • 83. DESKTOP FIRST VS MOBILE FIRST 83 SOURCE > HTTP://BLOG.FROONT.COM/9-BASIC-PRINCIPLES-OF-RESPONSIVE-WEB-DESIGN/
  • 84. RESPONSIVE OU APP ??? 84 le choix dépend de la typologie du contenu et du besoin
  • 85. ÉTAT DES LIEUX QUELQUES STATS… 85 SOURCES > HTTP://GS.STATCOUNTER.COM
  • 88. 88 Desktop vs Mobile vs Tablette
  • 92. QUELLE UNITÉ, POUR QUEL USAGE ? 92 LE PIXEL : PX • Unité « fixe » 
 • Unité « rassurante » 
 • Produit par les logiciels graphiques 
 • Éventuellement source de problèmes d'accessibilité (zoom texte impossible) 
 • Indispensable à certains éléments (images, iframes, etc.) 

  • 93. QUELLE UNITÉ, POUR QUEL USAGE ? 93 LE CADRATIN : EM font-size:****em; width:***em; • Police relative à la font-size du parent 
 • Taille de police répercutée d'enfant en enfant (« cascade ») 
 • Varie en fonction de la taille de police utilisateur 
 • Largeur (hauteur) du bloc relative à sa propre font-size (width: 10em = « 10 caractères M ») • Varie en fonction de la taille de police utilisateur
  • 94. QUELLE UNITÉ, POUR QUEL USAGE ? 94 LE CADRATIN : EM taille ? SOURCE > ALSACRÉATIONS QUIZZ
  • 95. QUELLE UNITÉ, POUR QUEL USAGE ? 95 LE POURCENTAGE : % font-size:****%; width:***%; • Police relative à la font-size du parent 
 • Taille de police répercutée d'enfant en enfant (« cascade ») 
 • Varie en fonction de la taille de police utilisateur 
 • Largeur (hauteur) du bloc relative à la largeur du bloc parent
 (width: 10% = 10% du parent) • Varie en fonction de la taille de la fenêtre navigateur
  • 96. QUELLE UNITÉ, POUR QUEL USAGE ? 96 LE POURCENTAGE : % taille ? SOURCE > ALSACRÉATIONS QUIZZ
  • 97. QUELLE UNITÉ, POUR QUEL USAGE ? 97 ROOT EM : REM font-size:****rem; width:***rem; • Police relative à la font-size du parent de <html> 
 • Pas de « cascade » 
 • Varie en fonction de la taille de police utilisateur 
 • Largeur (hauteur) du bloc relative à sa propre font-size (width: 10rem = « 10 caractères M ») • Varie en fonction de la taille de police utilisateur
  • 98. QUELLE UNITÉ, POUR QUEL USAGE ? 98 ROOT EM : REM taille ? SOURCE > ALSACRÉATIONS QUIZZ
  • 99. QUELLE UNITÉ, POUR QUEL USAGE ? 99 VIEWPORT UNITS font-size:****vw; width:***vw; • Police relative à la largeur de fenêtre • Pas de « cascade » • Varie en fonction de la taille de fenêtre navigateur
 • Largeur (hauteur) du bloc relative à la largeur de fenêtre (width: 10vw = 10% de la fenêtre) • Varie en fonction de la taille de la fenêtre navigateur vw, vh, vmin, vmax
  • 100. QUELLE UNITÉ, POUR QUEL USAGE ? 100 VIEWPORT UNITS vw, vh, vmin, vmax vmin,vmax → hauteur ou largeur du viewport, 
 selon que l’un ou l’autre soit 
 inférieur Rendre à Goetter, ce qui appartient à Goetter : Blog / Formation
  • 101. QUELLE UNITÉ, POUR QUEL USAGE ? 101 VIEWPORT UNITS vw, vh, vmin, vmax taille ? SOURCE > ALSACRÉATIONS QUIZZ
  • 102. QUELLE UNITÉ, POUR QUEL USAGE ? 102 MINIMAS / MAXIMAS UNITS • min-width :largeur minimum • max-width : largeur maximum • min-height :hauteur minimum • max-height : hauteur maximum
  • 103. QUELLE UNITÉ, POUR QUEL USAGE ? 103 MINIMAS / MAXIMAS UNITS SOURCE > HTTP://BLOG.FROONT.COM/9-BASIC-PRINCIPLES-OF-RESPONSIVE-WEB-DESIGN/
  • 104. QUELLE UNITÉ, POUR QUEL USAGE ? 104 SOURCE > HTTP://BLOG.FROONT.COM/9-BASIC-PRINCIPLES-OF-RESPONSIVE-WEB-DESIGN/
  • 105. COLONNES FLUIDES 105 • Mélange des unités largeur en % + padding et bordures en pixel ? • Débordements les mots longs et URL qui dépassent
 (on va y revenir)
  • 106. REMEMBER : Un block comme contexte un flottant peut déborder de son parent... mais pas de son contexte... <P>
 lorem blabla <H1> TITRE MACHIN <DIV> h1 { 
 float: left; etc…
 }
 div {
 overflow:hidden;
 }
  • 107. COLONNES FLUIDES 107 • Mélange des unités largeur en % + padding et bordures en pixel ? • Débordements les mots longs et URL qui dépassent
 (on va y revenir)
  • 108. GRILLES FLEXIBLES 108 • Des générateurs existent • Frameworks pour vous servir (bootstrap/foundation/knacss/etc…)
  • 109. GRILLES FLEXIBLES 109 • Ethan Marcotte : ROBOT OR NOT
  • 110. GRILLES FLEXIBLES 110 Les frameworks ont des grilles flexibles, 
 mais pas vraiment
 responsive…
 plutôt adaptative… BREAKPOINTS SELON LES STANDARDS… 
 PAS SELON LE BESOIN !!!!
  • 111. GRILLES FLEXIBLES 111 en avez-vous réellement besoin…?
  • 113. GÉRER LES DÉBORDEMENTS DE CONTENUS 113 word-wrap: break-word ; Rendre à Goetter, ce qui appartient à Goetter : Blog / Formation
  • 114. 114 hyphens: auto ; Attention aux --prefixCésure intelligente ! GÉRER LES DÉBORDEMENTS DE CONTENUS Rendre à Goetter, ce qui appartient à Goetter : Blog / Formation
  • 115. 115 table {     table-layout: fixed;     width:100%; } GÉRER LES DÉBORDEMENTS DE CONTENUS SUR LES CELLULES DE TABLEAUX
  • 116. IMAGES FLUIDES 116 GÉRER LES DÉBORDEMENTS DE MEDIAS Y a des gens qui n’ont pas 
 réussi parce qu’ils ne 
 sont pas awares ÇA DÉBORDE LÀ…
  • 117. IMAGES FLUIDES 117 GÉRER LES DÉBORDEMENTS DE MEDIAS Y a des gens qui n’ont pas 
 réussi parce qu’ils ne 
 sont pas awares max-width: 100% ; height : auto ; → sur img, table, td, blockquote, object, video, input, textarea
  • 119. Media Queries 119 LES POINTS DE RUPTURE (BREAKPOINTS) SOURCE : HTTP://WWW.JOHNBHARTLEY.COM/SPEAKING/BUFF/
  • 120. 120 Les frameworks ont des grilles flexibles, 
 mais pas vraiment
 responsive…
 plutôt adaptative… BREAKPOINTS SELON LES STANDARDS… 
 PAS SELON LE BESOIN !!!! Media Queries LES POINTS DE RUPTURE (BREAKPOINTS)
  • 121. 121 Media Queries LES POINTS DE RUPTURE (BREAKPOINTS) QUELS BREAKPOINTS UTILISER ?
  • 122. 122 CELA DEPEND DE VOTRE DESIGN ! Media Queries LES POINTS DE RUPTURE (BREAKPOINTS) QUELS BREAKPOINTS UTILISER ? UNE GRILLE FLEXIBLE GÉNÉRÉE N’EST PAS FORCEMENT UTILE
  • 123. 123 Media Queries CIBLER SELON LA TAILLE DE L’ÉCRAN @media (max-width:640px) { body { width: auto; }
 
 } ET PLEINS D’AUTRES CSS ICI,
 DÉDIÉS AUX PETITS ÉCRANS PROPRIÉTÉS
  • 124. 124 Media Queries CRITÈRES DES MEDIAS QUERIES • width, height largeur, hauteur de la zone d’affichage (viewport) 
 • device-width, device-height largeur, hauteur du périphérique (« résolution ») 
 • resolution densité de pixels (ex. 192dpi) 
 • orientation périphérique tenu en portrait (portrait) ou paysage (landscape)
  • 125. 125 Media Queries CUMUL DE CRITÈRES • and → « et » • only → « uniquement » • not → « non » • , → « ou » @media (max-width:640px) and (orientation:portrait) {} @media only screen and (max-width:1024px) {} @media (max-width:640px) , print {} @media (max-width:640px) and not (orientation:portrait) {}
  • 128. bienvenu en enfer… 128 UN PIXEL EST-IL UN PIXEL ?
  • 129. bienvenu en enfer… 129 UN PIXEL EST-IL UN PIXEL ?
  • 130. bienvenu en enfer… 130 viewport (faux pixels) ce que le device accepte d’afficher… largeur réelle (vrais pixels) device-width (largeur déclarée, faux pixels) ce que le device déclare faire comme largeur 1 2 3 UN PIXEL EST-IL UN PIXEL ?
  • 131. bienvenu en enfer… 131 largeur réelle (vrais pixels) 1UN PIXEL EST-IL UN PIXEL ? « LARGEUR DE L’ÉCRAN D’UN TERMINAL MOBILE » iPhone 3 : 320px Samsung Galaxy S : 480px 
 iPhone 4, iPhone 5 : 640px 
 Nokia Lumia 920 : 768px iPad, iPad Mini : 768px 
 Sony Xperia Z : 1080px 
 Samsung Galaxy S4 : 1080px 
 iPad 3 : 1536px
  • 132. bienvenu en enfer… 132 device-width 
 (largeur déclarée, faux pixels)2UN PIXEL EST-IL UN PIXEL ? « LARGEUR DÉCLARÉE PAR UN TERMINAL MOBILE » iPhone 3, 4, 5 : 320px 
 iPhone 6 : 375px iPhone 6 Plus : 414px 
 Sony Xperia Z : 360px Nokia Lumia 920 : 320px Samsung Galaxy S4 : 360px 
 iPad 1, 2, 3 : 768px 
 iPad mini : 768px
  • 133. bienvenu en enfer… 133 viewport (faux pixels) 3UN PIXEL EST-IL UN PIXEL ? « LARGEUR DE FENÊTRE » « SURFACE VIRTUELLE QU’UN MOBILE ACCEPTE 
 D’AFFICHER PAR DÉFAUT À L’ÉCRAN »
  • 134. bienvenu en enfer… 134 viewport (faux pixels) 3UN PIXEL EST-IL UN PIXEL ? Safari : 980px 
 Opera mini : 850px Opera mobile : 980px Android 1,2,3 : 800px Android 4 : 980px 
 IE mobile : 1024px
  • 135. bienvenu en enfer… 135 UN PIXEL EST-IL UN PIXEL ? largeur physique device-width viewport Niveau de zoom : device-width / viewport 320 / 980 = 0,33
  • 136. Forcer le viewport 136 <meta name="viewport" content="width=320"> BALISE META VIEWPORT LARGEUR DE FENÊTRE 320PX
  • 137. Forcer le viewport 137 <meta name="viewport" content=« width=device-width"> BALISE META VIEWPORT LARGEUR DE FENÊTRE = DEVICE-WIDTH
  • 138. Forcer le viewport 138 <meta name="viewport" content=« initial-scale=1.0 »> BALISE META VIEWPORT NIVEAU DE ZOOM INITIAL = 1 (PAS DE ZOOM) <meta name="viewport" content=« width=device-width">
  • 139. Forcer le viewport 139 <meta name="viewport" content=« width=device-width, 
 initial-scale=1.0 »> BALISE META VIEWPORT LARGEUR DE FENÊTRE = DEVICE-WIDTH ET NIVEAU DE ZOOM INITIAL <meta name="viewport" content=« width=device-width"> <meta name="viewport" content=« initial-scale=1.0 »>
  • 140. Forcer le viewport 140 BALISE META VIEWPORT • width / height : impose une largeur / hauteur de viewport 
 (ex : « width=device-width ») • initial-scale : impose un zoom initial (ex : « initial-scale=1.0 ») • user-scalable : zoom autorisé ou non (ex : « user-scalable=no ») • minimum-scale : taille de zoom mini (ex : « minimum-scale=1.0 ») • maximum-scale : taille de zoom maxi (ex : « maximum-scale=1.0 ») <meta name="viewport" content="">
  • 141. Forcer le viewport 141 BALISE META VIEWPORT hop hop hop ! doucement là…du html pour gérer le design > beurk
  • 142. Forcer le viewport 142 LA FUTURE MÉTHODE VIEWPORT @viewport {
 width: device-width; 
 height: device-height; 
 zoom: 1;
 max-zoom: 1; 
 min-zoom: 1; 
 user-zoom: fixed; 
 orientation: portrait; } DÉJÀ RECONNU PAR : OPERA, IE MOBILE 10 FIREFOX MOBILE (EX. @-O-VIEWPORT)!
  • 145. Privilégiez le format SVG 145 SOURCE > HTTP://BLOG.FROONT.COM/9-BASIC-PRINCIPLES-OF-RESPONSIVE-WEB-DESIGN/
  • 146. Privilégiez les fonts « systèmes » 146 SOURCE > HTTP://BLOG.FROONT.COM/9-BASIC-PRINCIPLES-OF-RESPONSIVE-WEB-DESIGN/
  • 147. Optimisez vos images ! 147 Ensuite, chargez les en fonction : • de la taille du device • si l’écran est retina • en fonction de la connectivité
  • 148. on arrête pas le progrès… 148 http://www.alsacreations.com/article/lire/1559-responsive-web-design-present-futur- adaptation-mobile.html TRÈS BON ARTICLE DE STEPHANIE WALTER (ALSACRÉATIONS):
  • 149. références, webographie… 149 LINK Responsive Web Design ETHAN MARCOTTE EDITIONS EYROLLES RAPHAËL GOETTER HTTP://GOETTER.FR/LIVRES/ EDITIONS EYROLLES QUELQUES LIVRES…
  • 150. références, webographie… 150 HTTPS://WWW.YOUTUBE.COM/WATCH?V=115RDUBV--U Le futur du Responsive Web Design HTTP://WWW.PARIS-WEB.FR/2013/CONFERENCES/HTML-CSS-BOUSCULEZ-VOS-HABITUDES.PHP html/css, bousculez vos habitudes : QUELQUES CONFÉRENCES…