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
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 ?
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
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>
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;
}
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>
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
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
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(::)
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
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
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
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…)
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 !!!!
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
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)
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) {}
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="">
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):