Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
CSS• chaque élément HTML considéré comme une boîte rectangulaire.
• flux du document : ordre dans lequel le navigateur affiche ces boîtes.
– flux normal (par défaut)
• un élément père est un conteneur
• un élément fils s'affiche dans son conteneur
• élément bloc– s'affiche en dessous de son frère précédent.
– occupe toute la largeur disponible dans son conteneur.
• élément en ligne– s'affiche à côté de son frère précédent.
– retour à la ligne quand il n'y a plus de place dans le conteneur.
– flux personnalisé
• certaines propriétés CSS permettent de sortir des éléments du flux normal
38
Affichage des éléments HTMLflux du document
(c) UGA-2018 Philippe GENOUD
CSS• exemple de flux normal
39
Affichage des éléments HTMLflux du document
(c) UGA-2018 Philippe GENOUD
CSS• et éléments génériques sans information structurante prédéfinie
– utilisés en association avec des feuilles de style CSS ou du Javascript via les attributs id, class ou style
40
Affichage des éléments HTMLflux du document
(c) UGA-2018 Philippe GENOUD
div : balise de type bloc zone rectangulaire qui ne peut être répartie sur plusieurs lignes peut contenir tous les autres éléments de type bloc ou en ligne
span : balise de type en ligne (inline) s'inscrit dans le flux du contenu, peut être répartie sur plusieurs lignes peut contenir tous les autres éléments en ligne
CSS
41
Notion de boîteparties constituantes
marge externe
marge interne
bordure
(c) UGA-2018 Philippe GENOUD
• boîte rectangulaire matérialisant un élément composée de 3 parties :– son contenu (contenu de l'élément : texte, image… autres éléments…)
– un cadre
• une bordure
• un marge interne (marge entre le contenu et la bordure)
– une marge externe
• marge entre le cadre et les boîtes matérialisant les éléments adjacents dans le flux
contenu
CSS
42
Notion de boîtepropriétés CSS
marginwidth
height
background
(c) UGA-2018 Philippe GENOUD
• La taille du contenu, le cadre et la marge externe d'une boîte peuvent être contrôlés par des propriétés CSS.
padding border-style
border-width
border-color
marge externebordure
largeur ethauteur
épaisseurtype, épaisseur
et couleurépaisseur
Contenu Marge interne Bordure Marge externe
Arrière plan
couleurimage
margin-right
height
background-color
marge interne
contenu
padding-top
width
border-width-bottom
CSS• dimensions d'une boîte induites par son contenu + trois périmètres
(margin, border , padding).
• margin, border, padding pas obligatoires– valeurs par défaut
• 0 pour éléments en ligne et
• border = 0, margin et padding dépendent du navigateur pour les éléments bloc fixer dans les feuilles de style CSS pour rendu indépendant du navigateur
43
Notion de boîtedimensions et attributs par défaut
(c) UGA-2018 Philippe GENOUD
marge externebordure
margin-right
height
background-color
marge interne
contenu
padding-top
width
border-width-bottom
CSS
• Bordures et arrière plan
– Possibilité d'entourer les éléments et de les doter d'un arrière-plan (couleur, image)
– Propriétés• border-style style
• border-width épaisseur
• border-color couleur
• background-color couleur arrière plan
• background-image image d'arrière plan
44
Bordures et arrière-planintroduction
applicable à tous les bordsou de chaque côté
(c) UGA-2018 Philippe GENOUD
CSS• border-style
45
Bordures et arrière-planstyle
• border-style: tous les côtés
• border-style:
• côtés horizontaux
• côtés verticaux
• border-style:
• côté horizontal haut
• côtés verticaux
• côté horizontal bas
• possibilité de spécifier chaque côté
• border-left-style
• border-right-style
• border-top-style
• border-bottom-stylevaleurs possibles
(c) UGA-2018 Philippe GENOUD
CSS
• border-width
– valeur numérique ex: border-width:5px (5 pixels)
– mots clés
• border-color
– valeur numérique • hexadécimale : #00ffff ou #0ff
• rgb : rgb(0,255,255) ou rgb(0,100%,100%)
• mot clé : cyan
• même règles que pour border-style pour individualiser chaque côté.
46
Bordures et arrière-planépaisseur, couleur
(c) UGA-2018 Philippe GENOUD
• background-color: valeur• #00ffff, #0ff , rgb(0,255,255), rgb(0,100%,100%) , cyan
• background-image: url(url de l'image)• image locale url(images/logo-ujf.png) – chemin relatif
• image distante url(http://www.monsite.org/images/logo.gif)
– par défaut l'imageest répétée en damier
CSS
47
Bordures et arrière-plancouleur – image arrière-plan
logo_ujf-fond.png
(c) UGA-2018 Philippe GENOUD
• background-repeat: valeur
• contrôle répétition de l'image d'arrière-plan
CSS
48
Bordures et arrière-planimage arrière-plan
• background-position: valeur1 valeur2
• valeur1 position horizontale par rapport au bord gaucheleft, right ou pourcentage
• valeur2 si présente, position verticale par rapport au bord supérieurtop, bottom ou pourcentage
(c) UGA-2018 Philippe GENOUD
• Par défaut image d'arrière-plan attachée à son élément– se déplace avec lui lors d'un scroll
• background-attachment: fixed
– attache l'image à la fenêtre.
CSS
49
Bordures et arrière-planimage arrière-plan
(c) UGA-2018 Philippe GENOUD
CSS
• exemple (sans positionnement)
50
Positionnement des éléments
(c) UGA-2018 Philippe GENOUD
Par défaut un élément bloc (block) débute sur une nouvelle ligne et utilise la largeur maximale disponible
Par défaut un élément en-ligne (in line) ne débute pas sur une nouvelle ligne et utilise la largeur nécessaire
Ce comportement est défini par la propriété display (valeurs: inline, block, inline-block, none….)
http://www.w3schools.com/css/tryit.asp?filename=trycss_display_inline_listhttp://www.w3schools.com/css/tryit.asp?filename=trycss_display_inline_list
CSS
51
250px
400px
400px
250px 20px20px
30px 30px
(c) UGA-2018 Philippe GENOUD
attribution de dimensions aux éléments div1 et p1
ajout de marges internes (padding) aux éléments div1et p1
Positionnement des éléments
CSS
52
Positionnement des éléments
20px
20px
(c) UGA-2018 Philippe GENOUD
ajout d'une marge externe (margin) a l'élément div1
div1 sans marge
div1 avec marge
CSS
53
Positionnement des élémentspositionnement relatif
50px
• positionnement relatif
– l'élément est décalé à l'aide des propriétés top, right, left, bottom par rapport à sa position normale dans le flux courant l'élément peut prendre place au dessus de ses éléments frères.
– n'affecte pas les boites qui l'entourent
(c) UGA-2018 Philippe GENOUD
40px
CSS
54
Positionnement des élémentspositionnement absolu
100px 90px
• positionnement absolu
– sort un élément du flux
– l'élément ne participe plus à la position de ses frères
– positionnement à l'aide des propriétés top, right, left, bottom• expriment des décalages non plus par rapport à position théorique (positionnement relatif) mais par
rapport à la position d'un bloc conteneur de référence
• boite conteneur de référence : le premier élément ancêtre positionné (relatif, absolu ou fixed)(élément toujours considéré comme positionné)
tout élément positionné en absolu est considéré de type bloc=> éléments en ligne peuvent ainsi recevoir des dimensions et bordures
(c) UGA-2018 Philippe GENOUD
CSS
55
Positionnement des élémentspositionnement fixe
• positionnement fixe
– cas particulier du positionnement absolu
– l'élément reste fixe dans la page par rapport à la zone de visualisation (pas de scroll)
(c) UGA-2018 Philippe GENOUD
positionnement absolu
scrolling en liaisonavec l'élément deréférence
positionnement fixe
pas de scrolling
CSS
56
Positionnement des élémentspositionnement flottant
• positionnement flottant1. sort l'élément du flux
2. l'élément est "poussé" à gauche (float: left)ou à droite (float: right) de son conteneur.
3. les éléments qui le suivent dans leconteneur prennent place autour de lui.
positionnement normal (flux)
positionnement en flottant
(c) UGA-2018 Philippe GENOUD
positionnement flottant (right)
CSS
57
Positionnement des élémentspositionnement flottant
(c) UGA-2018 Philippe GENOUD
p3p2
p4
p5
p1
• possibilité de placer des blocs flottants côte à côte
CSS
58
Positionnement des élémentspositionnement flottant
(c) UGA-2018 Philippe GENOUD
p3p2
p4
p5
p1
• clear permet d'interdire le voisinage avec un élément flottant (à droite, à gauche ou des deux côtés).
pas d'élementflottant à droite
CSS
59
Positionnement des élémentspositionnement flottant
(c) UGA-2018 Philippe GENOUD
p3p2
p4
p5
p1
• clear permet d'interdire le voisinage avec un élément flottant (à droite, à gauche ou des deux côtés).
pas d'élementflottant ni à droite ni
à gauche
css• En utilisant les propriétés float et clear possibilité de définir des grilles de boites remplissant
automatiquement la largeur de l’écran
(c) UGA-2018 Philippe GENOUD 60
display: inline-block
http://www.w3schools.com/css/tryit.asp?filename=trycss_inline-block_old
http://www.w3schools.com/css/tryit.asp?filename=trycss_inline-block_old
css• Possible d’obtenir facilement le même effet avec la propriété display:inline-block.
(c) UGA-2018 Philippe GENOUD 61
display: inline-block
http://www.w3schools.com/css/tryit.asp?filename=trycss_inline-block
• Les éléments inline-block se comportent comme des éléments en ligne mais peuvent avoir une largeur et hauteur.
http://www.w3schools.com/css/tryit.asp?filename=trycss_inline-block
CSS
62
Positionnement des élémentspositionnement flottant
(c) UGA-2018 Philippe GENOUD
p3
p2
p4p5
p1
• possibilité de faire flotter des éléments en ligne.
+
?
CSS
63
Positionnement des élémentspositionnement flottant
(c) UGA-2018 Philippe GENOUD
p3
p2
p4p5
p1
• possibilité de faire flotter des éléments en ligne.
+
• tout élément flottant est considéré de type bloc• les éléments en ligne peuvent alors recevoir bordures et dimensions
CSS
64
Positionnement des élémentsAfficher et masquer des éléments
(c) UGA-2018 Philippe GENOUD
p3
p2
p4p5
p1
• possibilité de rendre invisible des éléments
• visibility:hidden masque l'élément mais réserve sa position et ses dimensions. L'élément occupe de l'espace sur la page.
• autres valeurs : visible, collapse (pour tables), inherit
CSS
65
Positionnement des élémentsAfficher et masquer des éléments
(c) UGA-2018 Philippe GENOUD
p3
p2
p4
p5
p1
• possibilité de retirer un élément de l'affichage
• display:none l'élément n'est plus du tout affiché. Tout se passe comme si il n'existait pas
CSS
66
Positionnement des élémentspositionnement flottant
• positionnement flottant
– autre exemple.
positionnement en fluxpositionnement en flottant
(c) UGA-2018 Philippe GENOUD
CSS
67
Positionnement des élémentsFlex boxes
• positionnement flottant complexe à maîtriser
• Boites flexibles (flex boxes ou flexs) un nouveau mode de positionnement (layout) des éléments introduits avec CSS3.– amélioration par rapport au modèle de bloc
– comportement plus prévisible pour prise en compte de tailles différentes d'affichage.
(c) UGA-2018 Philippe GENOUD
une norme récente mais largement anticipée par les navigateurs modernes
https://www.w3.org/TR/css-flexbox-1/
https://www.w3.org/TR/css-flexbox-1/
CSS• Modèle de boîte flexible – flex box
• 4 caractéristiques principales– Distribution des éléments horizontale ou verticale, avec passage à la ligne autorisé ou non,
– Alignements et centrages horizontaux et verticaux, justifiés, répartis,
– Réorganisation des éléments indépendamment de l’ordre du flux (DOM),
– Gestion des espaces disponibles (fluidité).
(c) UGA-2018 Philippe GENOUD 68
Positionnement des élémentsFlex boxes
https://demos.scotch.io/visual-guide-to-css3-flexbox-flexbox-playground/demos/
https://demos.scotch.io/visual-guide-to-css3-flexbox-flexbox-playground/demos/
(c) UGA-2018 Philippe GENOUD 69
flex container : n’importe quel élément HTML doté de la déclaration display: flex; ou display: inline-flex;
flex items: enfants d'un flex container.le type "flex-item" est item est implicite, inutile de déclarer quoi que ce soit
A B C
Eléments "flex-item" ne sont plus considérés comme des éléments classiques (“bloc” “inline”) mais sont par défaut distribués horizontalement dans leur conteneur flex.
les propriétés de positionnement "classiques" (display*, float …) sans effet sur les éléments flex-items.
*mis à part diplay:none;
CSSPositionnement des éléments
Flex boxes
(c) UGA-2018 Philippe GENOUD 70
https://www.w3.org/TR/css-flexbox-1/
CSSPositionnement des éléments
Flex boxes
https://www.w3.org/TR/css-flexbox-1/
(c) UGA-2018 Philippe GENOUD 71
flex-direction: (propriété de flex-container)définit la direction (axe principal ou main-axis) selon laquelle les flex-items sont distribués
row
A B C D
row-reverse
D C B A
A
B
C
D
column
D
C
B
A
column-reverse
CSSPositionnement des éléments
Flex boxes
(c) UGA-2018 Philippe GENOUD 72
flex-wrap (propriété de flex-container)définit si le contenu sera distribué sur une seule ligne (ou colonne selon l’axe principal) ou sur plusieurs lignes
nowrap
A B C E F G
A B C
E F G
wrap
A B C
E F G
wrap-reverse
valeur par défaut :les éléments ne passent pas à la ligne.
les éléments passent à la ligne dans le sens de lecture. les éléments passent à la ligne dans le sens de lecture inverse.
CSSPositionnement des éléments
Flex boxes
(c) UGA-2018 Philippe GENOUD 73
justify-content (propriété de flex-container)définit l'alignement selon l'axe principalpermet de distribuer l'espace restant libre supplémentaire lorsque les éléments d'une ligne sont soit rigides ou si ils sont flexibles ont atteint leur taille maximale. Permet d'exercer également un certain contrôle sur l'alignement des éléments lorsqu'ils débordent la ligne.
flex-start
A B C
flex-end
A B C
center
A B C
space-between
A B C
space-around
A B C
space-evenly
A B C
CSSPositionnement des éléments
Flex boxes
(c) UGA-2018 Philippe GENOUD 74
align-items (propriété de flex-container)définit l'alignement selon l'axe secondaire (perpendiculaire à l'axe principal)
AB
CE
AB
CE
A B C E A B C E
flex-start flex-end
center stretch
baseline
lorem idpsum lorem ipsum lorem ipsum lorem idpsum
CSSPositionnement des éléments
Flex boxes
(c) UGA-2018 Philippe GENOUD 75
align-self (propriété de flex-item)permet de définir un alignement spécifique pour un item particuliervaleurs de cette propriété identiques à celles de align-items
A
B
C
D
#flexContainer {display: flex;flex-direction: column;align-items: flex-start;
}
#elementC {align-self: flex-end;
}
CSSPositionnement des éléments
Flex boxes
(c) UGA-2018 Philippe GENOUD 76
align-contents: (propriété de flex-container)permet d'aligner les lignes d'un conteneur flex quand il reste de la place disponible selon l'axe secondaire (similaire à justify-content pour l'axe principal)
flex-start
flex-end
center
stretch
space-between
space-around
CSSPositionnement des éléments
Flex boxes
(c) UGA-2018 Philippe GENOUD 77
order: (propriété d'un flex item)• Par défaut, les éléments flex items sont affichés selon leur ordre d'apparition dans le code source de
la page. La propriété order offre la possibilité de contrôler cet ordre élément par élément. • La valeur de order (0 par défaut) indique l'ordre dans lequel les éléments sont affichés (de plus petit
au plus grand)
A
B
D
C
#flexContainer {display: flex;flex-direction: column;align-items: stretch;
}
order: 0
order: 0
order: 0
order: 0
A
C
B
D
order: 0
order: 0
order: 0
order: 1
#elementB {order: 1;
}
D
A
B
C
order: 0
order: 0
order: 0
order: 1
#elementB {order: 1;
}
#elementD {order: 1;
}
CSSPositionnement des éléments
Flex boxes
(c) UGA-2018 Philippe GENOUD 78
flex-grow: (propriété d'un flex item)• définit la possibilité pour un flex-item de s'étirer ou non dans l'espace restant du conteneur flex.• par défaut 0, pas d'étirement• si valeur > 0, étirement (la proportion de l'espace restant attribué à aux éléments étirables sera
proportionnelle à la valeur de leur attribut flex-grow)
A B Cflex-grow: 0 flex-grow: 0 flex-grow: 0
#flexContainer {display: flex;
}
Cflex-grow: 1
#flexContainer {display: flex;
}#A, #B, #C {
flex-grow: 1;}
BAflex-grow: 1flex-grow: 1
tous les éléments flex-item ont un flex-grow égal à 1, l'espace restant est réparti de manière égale entre tous les items
#flexContainer {display: flex;
}#A, #B {
flex-grow: 1;}#B {
flex-grow: 2;}
Cflex-grow: 1
BAflex-grow: 2flex-grow: 1
l'élément B a un flex-grow de 2, l'espace restant est qui lui sera attribué sera (si possible) 2 fois plus grand que celui attribué aux flex-items ayant un valeur de flex-grow égale à 1.
(c) UGA-2018 Philippe GENOUD 79
flex-shrink: (propriété d'un flex item)• définit la possibilité pour un flex-item de se contracter si nécessaire.• par défaut 1, pas d'étirement
flex-shrink: (propriété d'un flex item)• définit la possibilité pour un flex-item de se contracter si nécessaire.• par défaut 1, pas d'étirement
CSSPositionnement des éléments
Flex boxes
• https://css-tricks.com/snippets/css/a-guide-to-flexbox/#flexbox-background
• https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox
• https://developer.mozilla.org/fr/docs/Apprendre/CSS/CSS_layout/Flexbox
• https://www.alsacreations.com/tuto/lire/1493-css3-flexbox-layout-module.html
(c) UGA-2018 Philippe GENOUD 80
CSSPositionnement des éléments
Flex boxes
https://css-tricks.com/snippets/css/a-guide-to-flexbox/#flexbox-backgroundhttps://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexboxhttps://developer.mozilla.org/fr/docs/Apprendre/CSS/CSS_layout/Flexboxhttps://www.alsacreations.com/tuto/lire/1493-css3-flexbox-layout-module.html
CSS
• Nécessité d’adapter l’affichage des pages à différents modes de consultation
(c) UGA-2018 Philippe GENOUD 81
Responsive Web Design Media queries
• Avec CSS2 et HTML4 il était déjà possible de spécifier un média de destination pour l’application d’une feuille de style
...
Attribut précisant le contexte dans lequel les styles doivent être appliqués
Media queries CSS3 permettent de définir un panel de critères plus précis en fonction de facteurs liés au dispositif d’affichage :
Largeur, hauteur, orientation, résolution…
CSS
(c) UGA-2018 Philippe GENOUD 82
Responsive Web Design Media queries
• media query : expression booléenne définissant un ensemble de conditions à réunir pour l’application de styles
@media screen and (min-width: 600px) and (max-width: 1024px) {.bloc {
display:block;clear:both;
}img {
float left;}
}
styles appliqués si l’expression media est vraie
color support de la couleur (bits/pixel)color-index périphérique utilisant une table de couleurs indexéesdevice-aspect-ratio ratio du périphérique de sortie (par exemple 16/9)aspect-ratio ratio de la zone d'affichagedevice-height dimension en hauteur du périphériquedevice-width dimension en largeur du périphériquegrid périphérique bitmap ou grille (ex : lcd)height dimension en hauteur de la zone d'affichagemonochrome périphérique monochrome ou niveaux de gris (bits/pixel)orientation orientation du périphérique (portait ou landscape)resolution résolution du périphérique (en dpi, dppx, ou dpcm)scan type de balayage des téléviseurs (progressive ou interlace)width dimension en largeur de la zone d'affichage
Critères possibles:préfixés par min- ou max- lorsqu’ils acceptent des valeurs numériques
Opérateurs logiques:and, or, not, only
CSS• http://www.w3schools.com/css/
• CSS2 : Pratique du design web, Raphaël Goetter, 3ème edition, Editions Eyrolles, 2009
• Tête la première HTML avec CSS et XHTML, Eric et Elisabeth Freeman, Editions 0'Reilly, 2007
• http://www.csszengarden.com
• http://openweb.eu.org
• http://wiki.media-box.net/documentation/css
• http://www.w3.org/TR/1998/REC-CSS2-19980512/propidx.html
• http://getbootstrap.com/docs/3.3/getting-started/#download
• …
(c) UGA-2018 Philippe GENOUD 83
Bibliographie
http://www.w3schools.com/css/http://www.csszengarden.com/http://openweb.eu.org/http://wiki.media-box.net/documentation/csshttp://www.w3.org/TR/1998/REC-CSS2-19980512/propidx.htmlhttp://getbootstrap.com/docs/3.3/getting-started/#download