HTML 5 & CSS 3
ID 143
Au tableau: goo.gl/Ro3QbN
HTML
Voir la spec
1993
Tim Lee-Berners
Hyper
HTML
Text
HTML
Markup
HTML
Language
HTML
HyperText
Document A
Document B
Hyper Lien
Doc. A
Doc. B
Markup
texte
texte
<a>
</a>
texte
<a>
</a>
balise ouvrante
texte
<a>
</a>
balise fermante
texte
<a href>
</a>
attribut
texte
<a href="{value}">
</a>
valeur
<a href="http://example.org/doc">texte</a>
URL
<orpheline/>
balise auto-fermante
Écrivons notre premier document HTML
Bonjour !
Bonjour !
↲
↲
↲
Bonjour !
<!DOCTYPE html>
Bonjour !
<!DOCTYPE html> <title>hello</title> Bonjour !
<!DOCTYPE html> <title>hello</title> Bonjour !
hello.html
Transformons-le en
page web
<!DOCTYPE html> <title>hello</title> Bonjour !
<!DOCTYPE html> <html lang="fr"> <title>hello</title> Bonjour ! </html>
TAB : |------>
SHIFT + TAB : <-----|
<!DOCTYPE html> <html lang="fr"> <meta charset="utf-8"> <title>hello</title> Bonjour ! </html>
<!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8"> <title>hello</title> </head> <body> Bonjour ! </body> </html>
<!DOCTYPE html> <html lang="fr"> <head> {Tête} </head> <body> {Corps} </body> </html>
<head>
<body>
<html>
<head>
<body>
<html>
<!DOCTYPE html> <html lang="fr"> <head> {Tête} </head> <body> {Corps} </body> </html>
les balises principales/usuelles
header / footer
main / aside / nav
article / section
figure
journal Le monde
CSS
Voir la spec
<center>
<font size="3" color="red">
<table width="500">
<td valign="middle">
<marquee>
<center>
<font size="3" color="red">
<table width="500">
<td valign="middle">
<marquee>
Contenu
!=
Présentation
<link rel="stylesheet">
<link rel="stylesheet" href="styles.css">
<balise style="">
<link rel="stylesheet"> <link rel="alternate stylesheet" title="Fancy"> <link rel="alternate stylesheet" title="Basic">
voir une démo
<link rel="stylesheet" href="style.css">
<link rel="stylesheet" media="print">
optionnel
body { background:red; }
selecteur { propriété:valeur; }
selecteur { propriété1:valeur; propriété2:valeur; }
selecteur1, selecteur2 { propriété:valeur; }
selecteur { propriété2:valeur; }
selecteur {
propriété1:valeur;
}
selecteur { propriééété:WTF; }
Styles par défaut du navigateur
body : margin
p : margin-top margin-bottom
ul/ol : padding-left list-style
em/strong : font-style/font-weight
blockquote : margin
reset VS. normalize VS. rien
Colors
#ff00ff
rgb(255, 0, 255);
rgba(255, 0, 255, 0.5);
hsl(0, 100%, 100%)
Background
background-color
background-image
background-repeat
background-attachment
background-position
background-size
background (shorthand)
Border
border-width
border-color
border-style
border (shorthand)
border-radius
Bonus : fabriquer un triangle avec border
Texte
- color
- font-weight
- font-style
- font-variant
- font-family
- @font-face
- text-decoration
- text-transform
- text-align
- line-height
- font-size
- letter-spacing
- word-spacing
- word-wrap
- text-indent
- direction
- text-shadow
- outline
Units
A
p
line-height
A
p
m
1 em
Box
- display
- padding
- margin
- width
- min-width
- max-width
- height
- min-height
- max-height
margin
border
padding
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus vitae mauris volutpat, placerat tortor sit amet, mollis leo.
margin
border
padding
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus vitae mauris volutpat, placerat tortor sit amet, mollis leo.
width
box-sizing: content-box
margin
border
padding
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus vitae mauris volutpat, placerat tortor sit amet, mollis leo.
width
box-sizing: border-box
Flow
inline elements
- a
- abbr
- acronym
- b
- bdo
- big
- br
- button
- cite
- code
- dfn
- em
- i
- img
- input
- kbd
- label
- map
- object
- q
- samp
- script
- select
- small
- span
- strong
- sub
- sup
- textarea
- time
- tt
- var
reste dans le flow (comme du texte)
pas de width ni de height
pas de margin-top ni margin-bottom
inline-block
float
Selecteurs
*
E
E[foo]
E[foo="bar"]
E[foo~="bar"]
E[foo^="bar"]
E[foo$="bar"]
E[foo*="bar"]
E[foo|="en"]
E:root
E:nth-child(n)
E:nth-last-child(n)
E:nth-of-type(n)
E:nth-last-of-type(n)
E:first-child
E:last-child
E:first-of-type
E:last-of-type
E:only-child
E:only-of-type
E:empty
E:link
E:visited
E:active
E:hover
E:focus
E:target
E:lang(fr)
E:enabled
E:disabled
E:checked
E::first-line
E::first-letter
E::before
E::after
E.warning
E#myid
E:not(s)
E F
E > F
E + F
E ~ F
E F
#bobby
.fruit
ancres
Spécificité
0
1
0
0
inline styles
IDs
Classes, attributes and pseudo-classes
Elements and pseudo-elements
#c
Sélecteur CSS :
0
1
1
0
inline styles
IDs
Classes, attributes and pseudo-classes
Elements and pseudo-elements
#c
Sélecteur CSS :
.danger
0
1
1
1
inline styles
IDs
Classes, attributes and pseudo-classes
Elements and pseudo-elements
#c
Sélecteur CSS :
.danger
div
Exercices
<body>
<div>
<ul>
<li>item A</li>
<li>item B</li>
<li>item C</li>
</ul>
</div>
</body>
color:red;
font-family:monospace, sans-serif;
gris : #333
vert : yellowGreen
graisse texte normal : 300
graisse titres : 700
-> introduction aux ancres
Bleu (RGB) : 33, 150, 243
Font : Arial
2 techniques de centrage horizontal
display:inline-block;
text-align:center
display:block;
margin-left:auto;
margin-right:auto
width:Xpx
auto
auto
X
width non-définie
width définie à X
TP
Icons : 🤛🏼, 👊🏼, 🤜🏼
<br> INTERDITS
Toutes les unités en ems
<br> INTERDITS
Nom de famille TOUJOURS en majuscules
Lien vers le profil twitter
Arial + Interlignage : 1,5
NB : largeur de la colonne en ems.
NB : la page scrolle vers le bas
Font : Oswald (Google font)
#231d1f
👏🏼
Logo Lavazza : https://svgshare.com/i/5xF.svg
Image tasse : https://goo.gl/puV6bU
NB : le design doit être centré horizontalement quelque soit la largeur de la page
Logo SNCF : https://svgshare.com/i/60U.svg (en background-image)
#1f1e28 gray white
NB : l'intégration doit etre "élastique" ie : s'agrandir avec la fenetre
#323c60
NB : le centrage vertical est optionnel, car non vu encore
NB : les unités doivent être en ems
Logo Ricola : https://svgshare.com/i/5ze.svg
Bonbon : https://goo.gl/yw5fUd
Herbe : https://goo.gl/f5p559
#ffd700 #36985b ( NB : le centrage vertical est optionnel, car non vu encore)
Exercice
Faire un sapin de noel a l'aide de blocks CSS
Pseudo-element
:before
:after
Positionnement
- position
- left
- top
- right
- bottom
- float
- clear
- z-index
- overflow
- clip
- visibility
top
bottom
left
right
position:relative (ou absolute)
position:absolute
position:static
z-index
Image : https://goo.gl/Zy2LWv
#173691
white
red: #ff6f69;
beige: #ffeead;
yellow: #ffcc5c;
CSS Vars
:root {
--macouleur: #ccc;
}
p {
color: var(--macouleur);
}
Float
Web font
Intro font files : https://goo.gl/mjBCuY
-
fontsquirrel : https://www.fontsquirrel.com/tools/webfont-generator
/* normal */ @font-face { font-family: 'ubuntu'; src: url('ubuntu-regular-webfont.woff2') format('woff2'), url('ubuntu-regular-webfont.woff') format('woff'); font-weight: 400; font-style: normal; } /* nornal italic */ /*@font-face { font-family: 'ubuntu'; src: url('ubuntu-italic-webfont.woff2') format('woff2'), url('ubuntu-italic-webfont.woff') format('woff'); font-weight: 400; font-style: italic; }*/ ...
ubuntu.css
SVG sprite
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="position:absolute; width:0; height:0; visibility:hidden;"> <symbol id="hamburger" viewBox="0 0 500 500"> ... </symbol> </svg>
icons.svg
<svg role="img" class="icon">
<use xlink:href="icons.svg#hamburger"/>
</svg>
svg.icon { width:1em; height:1em; fill:currentColor; }
Forms
<form action="/search" method="post">
{champs}
</form>
<input type="text" name="firstname">
<input type="number" name="phonenumber">
<input type="date" name="birthday">
<select>
<option>Option A</option>
<option>Option B</option>
</select>
<input type="radio" name="gender">Femme
<input type="radio" name="gender">Homme
<input type="checkbox" name="topings">Dessert
<input type="checkbox" name="topings">Salade
RWD
320x480
iphone
768x1024
ipad
1440x900
imac
320x480
iphone
768x1024
ipad
1440x900
imac
Maquette mobile : goo.gl/uXKVcc
Maquette desktop : goo.gl/ECSSvS
Maquettes
Mockups
Exercice mockups
screenshots > sketch > gdraw > photoshop
320x480
iphone
768x1024
ipad
1440x900
imac
900px
500px
<meta name="viewport" content="width=device-width,minimum-scale=1,maximum-scale=1,initial-scale=1">
li {width:100%;} /* mobile */
@media (min-width:500px) {
li {width:50%;} /* tablette */
}
li {width:100%;} /* mobile */
@media (min-width:500px) {
li {width:50%;} /* tablette */
}
@media (min-width:900px) {
li {width:33.33%;} /* desktop */
}
Fork from : codepen.io/abernier/pen/d670cdcf2d865e9a3a6cc85cd9a16cb2
Ex : Sur un écran de plus de 500px, rendre le fond de page en vert
Fork from : codepen.io/abernier/pen/361209ee14f06c0370adbd1c32058456
Sur un écran de plus de 500px, faire en sorte que la div ne prenne plus 100% de large mais seulement 50%
Fork from : codepen.io/abernier/pen/da25e96901f4fc070d613c2d231a1775
Faire en sorte qu'a partir d'un écran de 500px, les 4 divs se disposent côte-à-côte 2 à 2 + changer leur couleur de fond en jaune
Fork from : codepen.io/abernier/pen/da25e96901f4fc070d613c2d231a1775
En plus, faire maintenant en sorte qu'à partir d'un écran de 900px, les 4 divs passent côte-à-côte 3 à 3
CSS grid
voir css-tricks
Testing
IFOCOP143 - HTML5 & CSS3
By Antoine BERNIER
IFOCOP143 - HTML5 & CSS3
- 2,424