Ex ea commode maximus
Lorem ipsum dolor amet. Ut enim ut aliquip ex ea commodo consequat ad minim veniam sulaco narcissus fiorina
- enim ut aliquip
- auriga enim ut aliquip
- giger enim ut aliquip
LISAA
Stéphane Dumoulin, développeur Front-end depuis 8 ans, actuellement en freelance
Internet a été prédit de manière utopique par Paul Otlet dans les années 30 avec le Mondaneum.
""Ici, la Table de Travail n’est plus chargée d’aucun livre. À leur place se dresse un écran et à portée un téléphone. Là-bas, au loin, dans un édifice immense, sont tous les livres et tous les renseignements, avec tout l'espace que requiert leur enregistrement et leur manutention, [...] De là, on fait apparaître sur l’écran la page à lire pour connaître la question posée par téléphone avec ou sans fil. Un écran serait double, quadruple ou décuple s'il s'agissait de multiplier les textes et les documents à confronter simultanément...""
Internet a été théorisé, d'un point de vue technique, au début des années 60, avec les recherches sur la commutation de paquets.
Dans les années 60, trois groupes de recherche travaillent à l'élaboration de l'informatique en réseau.
De ces recherches nait le projet Arpanet.
Au début des années 70, la première ébauche d'Internet comprend 4 serveurs répartis aux Etats Unis. Le projet devient public en 1972.
Deux applications importantes d'Arpanet apparaîssent dans les années 70 :
A la fin des années 80, le réseau connait un succès grandissant avec l'ouverture de grands centres informatiques.
Au début des années 90, le réseau s'ouvre au trafic commercial et le Web apparait.
Un article du Monde : Comment le Web a « avalé » Internet
Le web est une application qui fonctionne sur le réseau Internet.
Il a été inventé par Tim Berners Lee en 1990 au CERN à coté de Genève.
Le Web est projet informatique dont le but était de permettre aux chercheurs du CERN de partager leur document en utilisant un nouveau concept de navigation : l'hypertexte
Le premier navigateur expérimental s'appelle World Wide Web
Une page web se consulte grâce à un navigateur, aussi appelé navigateur internet ou browser.
Une page web, distante ou locale, peut y être ouverte et lue directement.
A noter qu'il existe Opéra, développé par une société norvégienne
Source : Wikipedia
Le HTML est un langage de balisage conçu pour structurer les pages web issu du langage SGML.
Sa première version date de 1993
Le langage HTML, ou langage de balisage d’hypertexte, a été inventé en 1989. Il est à la base de la technologie du World Wide Web.
HTML permet d'écrire des documents hypertexte, c'est à dire qui ont vocation à être liés entre eux et dont la consultation peut se faire de manière non linéaire.
L'idée centrale du langage est l'hyperlien qui ajoute une nouvelle dimension dans la navigation.
HTML est un métalangage
Le HTML est un méta langage. Son but originel est de décrire la sémantique du document.
A l'origine, les navigateurs web appliquaient des styles de mise en page diférentes selon les balises pour signifier la sémantique de manière visuelle à l'internaute.
Autre intérêt : la lisibilité du code par les concepteurs de page web
Avec l'avènement du langage CSS, la mise en page n'a plus été confiée au navigateur.
L'intérêt de la sémantique des balises réside maintenant dans la lisibilité par les moteurs de recherche et dans l'accessibilité.
Dans les premiers temps du web, le HTML a surtout un but de stylisation.
HTML permet aussi de structurer logiquement et de mettre en forme le contenu des pages
Au début des années 2000, le langage CSS commence à se standardiser et son utilisation augmente exponentiellement dans la communauté du développement web.
L'écriture du HTML conserve son impératif sémantique mais doit aussi permettre l'élaboration d'un design sophistiqué
Le HTML est un métalangage qui permet de structurer et d'assurer la sémantique d'un document web. Il s'agit de la première couche des technologies standards du web, les deux autres étant JavaScript et CSS.
Une page web est un fichier html. Son contenu est généralement appelé : document web
Elle possède :
Il existe différentes manières de créer une page web
Pour créer une page web à la main (sans interface graphique), on a besoin :
Il existe énormément d'éditeurs de texte gratuits. Leur intérêt principal réside dans la coloration syntaxique.
On commence par créer le fichier html
Depuis l'avènement du HTML 5, un document web se déclare grâce avec le doctype.
<!DOCTYPE html>
Le Doctype garantit que le navigateur fait de son mieux pour suivre les spécifications actuelles du langage HTML, plutôt que d'utiliser un mode de rendu différent incompatible avec certaines spécifications.
L'intérieur d'un document web est englobé dans une balise <html>
Une balise HTML commence et se termine toujours par un chevron <balise>
On parle souvent de tag (balise en anglais), ou de markup pour désigner l'ensemble ou une partie des balises d'un site
Une balise peut posséder des attributs qui viennent compléter un tag.
<balise name="value"></balise>
<h1 id="titre-principale"></h1>
<img src="panda.gif" />
<p id="text_intro" style="width: 250px;"></p>
Ils peuvent fournir des méta-informations sur la balise ou bien changer le comportement du tag.
id
: il permet d'identifier de manière unique une baliseclass
: permet de signifier l'appartenance d'une balise à une même catégorie d'entitéssrc
: src attend comme valeur un chemin d'accès à un fichiertype
: modifie le comportement et/ou l'aspect de certaines balises de formulairesonclick
: attribut d'évènement, il attend comme valeur un code JavaScriptdata-*
: nouveau type d'attribut autorisé par la norme HTML5, qui permet de stocker une donnée arbitraire...mais que l'on rencontre encore souvent
id
class
data-*
onclick, onmouseover, ...
Les balises images possèdent des attributs specifiques :
src
: qui est le chemin vers le fichier source de l'imagealt
: qui décrit l'image aux moteurs de recherchetitle
: qui décrit l'image aux utilisateursL'attribut src
n'est pas spécifique à la balise image, il sert aussi à d'autres balises :
<video src="films/biglebowski.mp4">
pour afficher des vidéos<script src="javascript/slider.js">
pour charger des scripts JavaScript<link src="css/style.css">
pour charger les feuilles de style du siteSauf exception, une balise doit toujours posséder un contenu.
mais la plupart d'entre elles d
La balise <img />
possède l'attribut src=""
La balise <br />
ne possède aucun attribut obligatoire : son comportement est intrinsèque.
Les balises d'un document HTML sont soumises à une hiérarchie.
On représente visuellement la hiérarchie des balises grâce à l'indentation
Le document web se scinde en suite en deux grandes parties
Balise <head>
Elle doit contenir :
Balise <body>
La balise BODY n'a pas d'attribut, ni aucune balise enfant obligatoire.
Un document basique va généralement contenir au minimumu un titre et un paragraphe.
<h1>Le titre de ma page</h1>
<p>Lorem ipsum deloreane sit amet, consectetur adipiscing nostromo commodo consequat sulaco.
Duis aute irure dolor jabba in reprehenderit in voluptate dagoba velit esse cillum klendathu dolore </p>
Il existe 6 niveaux de titrage différents : de <h1> à <h6>
La règle générale veut qu'il n'y ait qu'une seule balise H1 par page web.
<br/>
est une balise autofermante qui permet de matérialiser un saut de ligne.
Sauter une ligne dans le code source n'aura aucun visuel en front !
<p>Lorem ipsum deloreane sit amet, consectetur adipiscing <br/>nostromo commodo consequat sulaco. <br/>Duis caute irure dolor jabba in reprehenderit in voluptate dagoba
cvelit esse cillum klendathu dolore </p>
Lorem ipsum deloreane sit amet, consectetur adipiscing
nostromo commodo consequat sulaco.
Duis aute irure dolor jabba in reprehenderit in voluptate dagoba velit esse cillum klendathu dolore
Attention à ne pas confondre saut de ligne et paragraphe, visuellement et sémantiquement, les deux ne sont pas identiques.
Les listes à puces peuvent être créées en HTML grâce à deux balises
UL signifie Unordered List : elle va contenir les items de la liste
<ul></ul>
<li>Sith amet, consectetur adipiscing</li>
Il existe également une version ordonnée, avec des puces chiffrées
<ol></ol>
Le lien hypertexte est le concept phare du Web. Il permet la navigation entre les pages et les sites.
La balise <a>
va permettre de créer des liens
Par défaut, un lien sera souligné et de couleur bleue.
La balise A possède un attribut obligatoire : href=""
La valeur de href est l'URL qui pointe vers la page web que l'on veut lier.
On différencie trois types d'URL pour l'attribut href
Elle permet de créer un lien entre deux pages appartenant au même site relativement à leur emplacement dans l'arborescence du site
Elle permet de créer un lien entre deux pages situées sur des sites différents
Elle commence toujours par :
Elle permet de créer un lien entre deux pages appartenant au même site relativement à la racine du site
Certaines balises ont pour rôle d'accentuer l'importance d'un mot ou d'un groupe de mots.
<strong>
(pour renforcement) indique que le texte a une importance particulière.
Cela se traduit généralement par un affichage en gras.
<em>
(pour emphase) est utilisé afin de marquer un texte sur lequel on veut insister, ou que l'on veut faire remarquer.
Cela se traduit généralement par un affichage en italique.
La balise image ne possède pas de contenu, seulement un attribut src
.
L'attribut src attend comme valeur une URL correspondant à l'adresse d'un fichier image
Comme pour le lien A, l'URL peut être relative, semi relative ou absolue.
L'attribut alt
est un attribut obligatoire des balises image. Il contient la description détaillée de l'image.
Un navigateur web est capable d'afficher de nombreux types d'images
Ces formats correspondent aux méthodes de compression utilisées pour réduire le poids des images.
Le PNG, le GIF et le JPEG correspondent à trois formats de compression différents, qui ont chacun des cas d'utilisation bien spécifiques.
JPEG signifie Joint Photographic Experts Group. C'est un format mis au point dans les années 80 pour améliorer le fonctionnement du fax.
Avec le format JPEG, la diminution du poids est toujours associée à une perte de données : la compression fonctionne par interpolation de couleurs. L'image résultante est une "approximation" de l'image d'origine.
Poids de l'image : 142 ko
Poids de l'image : 31 ko
Le format GIF a été créé dans les années 80 pour permettre de télécharger des images sur Internet plus rapidement
La diminution de poids des images GIF est dûe à un algorithme qui enregistre les occurences de couleurs dans un dictionnaire. C'est la technique de stockage des données qui diminue le poids, et non leur approximation, comme avec JPEG.
Compression JPEG. Poids de l'image : 136 ko
Compression GIF. Poids de l'image : 94 ko
On constate des problèmes de dégradé !
Poids de l'image : 26 ko
Poids de l'image : 10 ko
PNG signifie Portable Network Graphics . C'est un format mis au point dans le milieu des années 90 pour prendre le relais du GIF et offrir un solution de remplacement libre.
Comme pour GIF, le système de compression est basé sur un dictionnaire d'occurences qui références les couleurs présentes en plus grand nombre. PNG présente cependant des différences notables avec GIF.
Poids de l'image : 42 ko
Poids de l'image : 12 ko
SVG signifie Scalable Vector Graphics . C'est un format dérivé du XML mis au point au début des années 2000 par le W3C.
Le SVG n'est pas un algorithme de compression. Il se base sur des formes vectorielles définies à l'intérieur de balises XML.
On différencie deux types de balises : les balises inline et les balises block
Leur comportement par défaut est l'empilement
Il faut bien connaitre la catégorie d'une balise pour comprendre sa mise en page en CSS
Leur comportement par défaut est de se positionner à la suite de l'élément précédent (balise, texte, image...)
Il existe une centaine de balises HTML standards.
On distingue les balises sémantiques et les balises qui n'ont pas de signification particulière
Elles donnent un sens particulier au contenu qu'elles englobent
Elles servent à isoler certaines parties du contenu dans un but de présentation uniqement.
L'utilisation de ces balises doit se faire lorsque la mise en page avec CSS nécessite un squelette HTML particulier.
Ces balises doivent être utilisées en dernier recours.
Les balises container sont des types de balises dont le but est d'englober d'autres balises.
<article> <h1>Le titre de ma page</h1> <p>Lorem ipsum deloreane sit amet, consectetur adipiscing nostromo commodo consequat sulaco.</p> </article>
Vers 1995, Netscape introduit les premières balises HTML destinées à la présentation et à la mise en page.
Elle répond à une volonté de faire évoluer HTML d'un langage de structuration à un langage de présentation.
La toute première version de CSS sort en décembre 1996
Un des premiers navigateurs à prendre en compte de manière étendue les CSS est Internet Explorer 6
... malheureusement, la prise en compte du lange est largement buguée et le monopole de Windows et IE6 restera indétronable pendant presque 7 ans
La syntaxe du langage CSS est très simple
Le CSS est un langage déclaratif.
CSS signifie "Feuilles de style en cascade"
La « cascade » est la combinaison de différentes sources de styles appliqués au document.
Selon leur degré respectif de priorité. Différents modes de cascade peuvent se combiner :
Les styles CSS peuvent s'appliquer de 3 manières différentes :
Cette balise se place toujours dans l'entête de la page
Cette balise peut être placée n'importe où dans le document. Le plus souvent, on la rencontre dans l'entête.
Chaque balise possède un attribut facultatif et universel style=""
Il doit cibler une balise ou un ensemble de balise pour leur appliquer une une série de règles
L'ensemble des règles définit le style global d'une balise et son comportement vis à vis des autres balises du document
Les balises HTML possèdent deux attributs facultatifs
La classe permettent de donner une catégorie à une balise. Un élément peut posséder plusieurs classes séparées par des espaces
Il permet d'attribuer un identifiant unique à une balise.
Donner deux identifiants identiques dans une même page web est interdit par le langage HTML.
Ces deux attributs permettent de manipuler les éléments HTML via JavaScript et CSS
En pratique, on essaie de limiter le ciblage CSS via les id.
Son but est de cibler toutes les balises appartenant à la même classe
La syntaxe est .nom-de-la-classe
Ces règles (ou cette déclaration de style) s'appliquera à toutes les balises possèdant la classe intro-article
Son but est de cibler la balise possèdant cet id
La syntaxe est #identifiant
Ces règles s'appliquera à la balise unique possèdant l'id article-principal
Son but est de cibler toutes les balises appartenant au même type
Ces règles (ou cette déclaration de style) s'appliquera à TOUTES les balises <p> de la page web.
Pour cibler plus précisément une balise ou un ensemble de balises, on peut combiner les sélecteurs
La syntaxe CSS permet de cibler les balises HTML selon leur hiérarchie, c'est à dire selon leur imbrication.
On distingue deux marqueurs importants :
Ici on cible uniquement les balises de classe intro
placées à l'intérieur de balises de type article
le sélecteur chevron > permet de cibler le sélecteur suivant uniquement si celui-ci est un enfant direct
Il existe plusieurs propriétés pour définir la typographie
Il existe différents types d'unités :
px
, la plus populaire et la plus utiliséerem
, une unité relative à la taille de typo définie pour la balise htmlem
, une unité relative à la taille de typo définie pour la balise parentpt
vw
Il existe différents types de valeurs :
La propriété font-family permet de spécifier une famille de typo à une balise ou à un ensemble de balises
Si la typo est composée de plusieurs mots, on l'encadre avec des quotes.
Il faut s'assurer que la fonte spécifiée sera disponible sur tous les systèmes d'exploitation
Il faut toujours préciser le type d'empatement en dernier recours !
Lorsque l'on choisit d'exploiter une typo sur un site, on doit faire attention aux éventuels copyright.
L'utilisation des typos payantes peut être soumise à une limitation en terme de nombre de visiteurs !
Alsacréations : Quelles polices de caractères (fontes) utiliser sur le Web ?
Par défaut, le navigateur cherche la fonte spécifiée sur le disque dur de l'utilisateur.
Pour forcer le navigateur à utiliser une typo qui ne se trouve pas sur l'ordinateur de l'internaute, on utilise la règle @font-face
Il faut disposer d'une typo :
color: #ff7700;
letter-spacing: 1px;
line-height: 1.5;
text-transform: uppercase;
text-decoration: underline;
text-shadow: 3px 3px 5px blue;
En langage CSS, la couleur peut être codée de 4 manières différentes
CSS propose les propriétés width
et height
pour imposer des dimensions aux blocs HTML
Par défaut, ces balises ont une largeur de 100% et une hauteur définie par leur contenu.
Par défaut, ces balises ont une largeur et une hauteur définie par leur contenu.
En l'état, ces balises ne sont pas dimensionnables.
Les marges permettent de créer des espaces entre les différents blocs HTML
margin-top
: la marge hautemargin-bottom
: la marge bassemargin-left
: la marge gauchemargin-right
: la marge droiteElles n'acceptent que les propriétés de marge gauche et droite !
Les padding permettent de créer une marge entre le bord du bloc et son contenu
padding-top
, padding-bottom
, padding-left
, padding-right
Lorem ipsum dolor sit sarah connor amet. Ut enim ut aliquip ex ea commodo consequat ad minim veniam
Les bordures définissent des contours matériels aux blocs HTML.
border-top
, border-bottom
, border-left
, border-right
Ou bien les quatres cotés simultanément : border
Lorem ipsum dolor sit sarah connor amet. Ut enim ut aliquip ex ea commodo consequat ad minim veniam
Les propriétés CSS s'héritent de parents à enfants
Si une balise parent possède une couleur de texte orange, tous ses enfants la posséderont par défaut.
Lorem ipsum dolor amet. Ut enim ut aliquip ex ea commodo consequat ad minim veniam sulaco narcissus fiorina
width
margin
padding
border
Un sélecteur de priorité supérieure prend l'ascendant
color
font-...
text-...
letter-spacing
Deux cas où l'héritage ne fonctionne pas :
Lorem ipsum dolor amet. Ut enim ut aliquip ex ea commodo consequat ad minim veniam sulaco narcissus fiorina
Un élément HTML, qu'il soit inline ou block, peut se voir attribuer une couleur de fond.
Elle peut prendre plusieurs valeurs
background-color: orange;
littéralebackground-color: #ff023c;
hexadécimale background-color: rgb(102, 23, 46);
RGB background-color: rgba(255, 12, 78, 0.3);
RGBA Lorem Arrakis dolor amet. Ut harkonnen ut aliquip ex ea commodo consequat ad minim veniam
Cette proporiété ne s'applique généralement pas sur certaines balises telles que IMG, BR, HR...
Un élément HTML, qu'il soit inline ou block, peut se voir attribuer une image d'arrière-plan.
On doit lui spécifier le chemin de l'image par rapport à l'endroit du projet où est déclarée la propriété background-image
background-image: url('dossier/mon-image.jpg');
Lorem Arrakis dolor amet. Ut harkonnen ut aliquip ex ea commodo consequat ad minim veniam ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab ill, sconsequat ad minim veniam ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab ill, sed ed consequat ad minim veniam ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem consequat ad minim veniam ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab ill, sed aperiam, eaque ipsa quae ab ill, sed consequat ad minim veniam ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab ill, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam
Cette proporiété s'utilise généralement en combinaison avec background-position et background-repeat
Le positionnement et le mode de répétition de l'arrière-plan peuvent être controlés.
Elle spécifie les coordonnées de placement de l'image d'arrière-plan.
background-position: 0% 50%;
background-position
accepte plusieurs types de valeurs
50% 100%
les valeurs en %5px 2px
les valeurs en pixelscenter top
les valeurs littéralesL'origine du repère est le coin haut supérieur de la balise
La répétition détermine comment doit se répéter l'image d'arrière-plan.
Exemple : background-repeat: repeat-x
background-repeat
accepte plusieurs types de valeurs
repeat
la valeur par défaut : l'arrière-plan est répété sur toute la surface du blocno-repeat
l'arrière-plan n'est pas répétérepeat-x
l'arrière-plan est répété uniquement sur l'horizontalerepeat-y
l'arrière-plan est répété uniquement sur la verticaleNB : il existe aussi des valeurs plus confidentielles comme space
et round
Lorem Arrakis dolor amet. Ut harkonnen ut aliquip ex ea commodo consequat ad minim veniam ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab ill, sconsequat ad minim veniam ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab ill, sed ed consequat ad minim veniam ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem consequat ad minim veniam ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab ill, sed aperiam, eaque ipsa quae ab ill, sed consequat ad minim veniam ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab ill, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam minim veniam ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab ill, sed ed consequat ad minim veniam ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem consequat ad minim veniam ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab ill, sed aperiam, eaque ipsa quae ab ill, sed consequat ad minim veniam ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab ill, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam
Les valeurs de position de différentes unités peuvent être combinées !
Une des propriétés CSS3 les plus intéressantes est la proporiété background-size
Elle spécifie la surface d'occupation de d'arrière-plan.
background-size: 450px 100px;
La première valeur représente la largeur de l'image, la seconde sa hauteur
background-size
accepte plusieurs types de valeurs
50% 100%
les valeurs en %500px 200px
les valeurs en pixels500px auto
les valeurs automatiquescover
la valeur de recouvrement optimalcover
est une propriété très utile lorsqu'il s'agit de recouvrir l'arrière-plan d'un élément de manière optimale et sans se soucier des dimensions physiques de l'image de fond
Lorem Arrakis dolor amet. Ut harkonnen ut aliquip ex ea commodo consequat ad minim veniam ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab ill, sconsequat ad minim veniam ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab ill, sed ed consequat ad minim veniam ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem consequat ad minim veniam ut perspiciatis unde omnis iste natus error sit voluptatnatus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab ill, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam
background-size: cover
Lorem Arrakis dolor amet. Ut harkonnen ut aliquip ex ea commodo consequat ad minim veniam ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab ill, sconsequat ad minim veniam ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab ill, sed ed consequat ad minim veniam ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem consequat ad minim veniam ut perspiciatis unde omnis iste natus ensequat ad minim veniam ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab ill, sed ed consequat ad minim veniam ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem consequat ad minim veniam ut perspiciatis unde omnis iste natus error sit voluptatnatus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab ill, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam
width
padding
border
La propriété width
n'est pas la largeur totale du bloc si celui-ci possède un padding ou une border, ou les deux.
Lorem ipsum dolor sit sarah connor amet. Ut enim ut aliquip ex ea commodo consequat ad minim veniam
box-sizing
Le mode de calcul des dimensions d'un bloc peut être modifié avec la proporiété CSS3 box-sizing
content-box
la valeur par défautborder-box
qui inclut border et padding dans le calcul de dimensionsLa largeur totale est de :
300 + 5 + 5 + 20 + 20 = 350 pixels
La largeur totale est de :
300 pixels
Cette technique est maintenant très largement répandue. Beaucoup de sites ne sont plus intégrés sur le modèle classique.
width: 100%;
La largeur totale est de : 50%
et non 50% + 2em + 2em + 20px + 20px
Pour appliquer cette méthode de calcul à toutes les balises d'une page, on utilise le sélecteur universel *
Lorsque les dimensions d'une boîte sont fixées en largeur et en hauteur, le contenu peut parfois dépasser.
overflow: hidden;
Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur
Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur
Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur
Les éléments inline se placent par défaut les uns après les autres.
Le texte, les images, les balises a
, strong
, em
, span
text-align
permet d'aligner ou de centrer texte et imagevertical-align
permet de maitriser l'alignement vertical entre éléments inlineLes éléments inline acceptent les propriétés :
margin-left
et margin-right
padding-left
, padding-right
, padding-top
, padding-bottom
les marges hautes et basses ne sont pas pris en compte pour les éléments inline !
line-height
peut contrôler la hauteur d'une ligne de texte
Le positionnement classique entre balises s'effectue grâce aux marges externes
Quis avatar autem vel eum iure reprehenderit qui in ea eum fugiat quo voluptas nulla pariatur
Le centrage d'un bloc ne peut pas se faire avec text-align
La marge automatique à droite et à gauche d'une balise de type bloc permet de la centrer au milieu de son container.
width: 100%;
Paragraphe de 300 pixels de large centré
Entre deux balises, les marges basses et hautes ne s'additionnent pas, elles fusionnent.
Quis avatar autem vel eum iure reprehenderit qui in ea eum fugiat quo voluptas nulla pariatur
Robocop autem vel eum iure reprehenderit qui in ea eum fugiat quo voluptas nulla pariatur
Ici l'espace entre les blocs est de 20 pixels, et non 40.
Elle permet de décaler un bloc par rapport à son positionnement d'origine sans impact sur la position des blocs au dessus et en dessous.
Autem vel eum iure reprehenderit qui in ea eum fugiat quo voluptas nulla pariatur
Vel eum iure reprehenderit qui in ea eum fugiat quo voluptas nulla pariatur
Sidious reprehenderit qui in ea eum fugiat quo voluptas nulla pariatur
Elle permet de placer un élément en le sortant du flux, c'est à dire que son emplacement ne tient plus compte des balises qui le précèdent ou le suivent dans le code.
position: absolute;
Comme pour la position relative, la position absolue s'accompagne des propriétés top
et left
qui sont des coordonnées de repérage.
En CSS, un bloc est considéré comme positionné s'il possède une position relative ou absolue.
Un bloc n'est donc pas "positionné" par défaut !
Par défaut, une balise positionnée en absolue prend comme référence pour son repère la balise <body>
Cela revient à considérer qu'il s'agit de l'angle supérieur gauche du navigateur
Un paragraphe positionné en absolu
Les balises peuvent se positionner par rapport à un élément de référence qui n'est pas la balise <body>
Pour signifier à une balise que l'origine de son repère est une balise parent différente de BODY, on utilise la commande CSS position: relative;
Un paragraphe positionné en absolu par rapport à un parent
La position absolue est un positionnement particulier
On l'utilise lorsque l'on est certain que l'élément à positionner n'a aucune influence sur le reste de la mise en page
On utilise dans quasiment tous les cas un élément positionné en relatif, et jamais la balise BODY comme origine.
Lorsque des blocs positionnés sont amenés à se chevaucher, la propriété z-index
permet de spécifier leur profondeur.
.first_P
.second_P
.third_P
z-index
ne peut pas s'appliquer sur une balise qui n'est pas positionnée en relative ou absolute, ni entre des balises positionnées et non positionnées.
Elle détache une balise du flux pour la positionner à droite ou à gauche de son container tout en étant contournée par les autres balises (block ou inline).
float: left;
float: right;
Vel eum iure reprehenderit qui in ea eum fugiat quo voluptas nulla pariatur el eum iure reprehenderit qui in ea eum fugiat quo voluptas nulla pariatur.
Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur.
Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur. Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur. Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur.
Par défaut une balise HTML est, soit block, soit inline.
Elle permet de modifier artificiellement le type d'affichage d'une balise.
Lorem eum han solo nulla pariatur onsequatur.
Anakin nulla pariatur onsequatur.
Sid nulla pariatur jabba.
Les balises paragraphe se comportent maintenant comme des balises de type inline (<a href=""> <span> ...)
Les balises A se comportent maintenant comme des balises de type block (<div> <p> ...)
La valeur inline-block
n'existe pas naturellement.
Si elle est spécifiée à une balise, celle-ci va combiner les propriétés des balises block et des balises inline.
width
et height
Circa hos dies Lollianus primae lanuginis adulescens, ut sperabatur, patris inpulsu provocavit ad principem, et iussus ad eius comitatum duci, de fumo, ut aiunt, in flammam traditus Phalangio Baeticae consulari cecidit adulescens, ut sperabatur funesti carnificis manu.
Circa hos dies Lollianus primae lanuginis adulescens, ut traditus Phalangio Baeticae consulari cecidit adulescens, ut sperabatur funesti carnificis manu.
Circa hos dies Lollianus primae lanuginis adulescens, ut speraba tatum duci, de fumo, ut aiunt, in flammam trens, ut speraba tatum duci, de fumo, ut aiunt, in flammam trens, ut speraba tatum duci, de fumo, ut aiunt, in flammam trens, ut speraba tatum duci, de fumo, ut aiunt, in flammam traditus Phalangio Baeticae consulari cecidit adulescens, ut sperabatur funesti carnificis manu.
Des éléments possédant un comportement inline
ou inline-block
peuvent s'aligner verticalement de différentes manières.
Cette propriété détermine comment deux éléments inline ou inline-block doivent se positionner l'un par rapport à l'autre dans le sens de la hauteur.
Les 3 div possèdent la propriété vertical-align: middle
Les 3 div possèdent la propriété vertical-align: top
La pseudo-classe est un mot-clé particulier qui peut être ajouté à un sélecteur CSS.
La pseudo classe est toujours précédée de deux points :
Elle est tojours collée au sélécteur.
La pseudo-classe permet d'indiquer l'état spécifique dans lequel doit se trouver un élément pour être pour être ciblé par la déclaration.
:last-child
Ici, le dernier lien A enfant de la balise <header> sera affiché en vert.
hover
est la pseudo-classe du survol. Elle permet d'activer des règles CSS lorsqu'un élément HTML est survolé par la souris
Lorem eum vador onsequatur. Alien eum han solo nulla pariatur onsequatur.
:hover gère aussi la sortie de zone (le mouseout en JavaScript)
hover
permet d'activer toutes les règles CSS que l'on veut.
Et pas uniquement des règles de mise en page classique !
Cette technique est à la base du fonctionnement des menus déroulants en pur CSS.
Elles permettent d'appliquer des styles spécifiques respectivement sur le dernier et le premier élément HTML d'un élément parent.
La pseudo-classe :nth-child() permet de sélectionner un ou plusieurs éléments en fonction de leur ordre dans le code source.
:nth-child(3)
Les mots clés even
et odd
permettent de créer des alternances de type "1 sur 2"
:nth-child(even)
Film | Genre | Année de sortie |
---|---|---|
Alien | Science-fiction | 1979 |
The Big Lebowski | Comédie | 1996 |
V pour Vendetta | Anticipation | 2005 |
Blade Runner | Thriller SF | 1982 |
Titanic | Drame | 1997 |
Heat | Thriller | 1999 |
:nth-child()
accepte également comme paramètre des formules mathématiques pour cibler les balises enfant.
2n
: un élément sur 23n
: un élément sur 33n + 1
: un élément sur 3 en commençant au premier élément4n + 2
: un élément sur 4 en commençant au second élément:nth-child(3n)
Lorem
ingeni
dicendi
ratio
disciplina
quidem
huic
Un pseudo-élément est un mot-clé ajouté à un sélecteur qui autorise la mise en forme d'une partie de l'élément ciblé.
::first-line
permettra de cibler la première ligne de texte d'une balise::first-letter
permettra de cibler la première lettre du texte d'une baliseLe pseudo-élément est toujours précédée d'un double deux points ::
Il est tojours collé au sélécteur.
La pseudo-classe cible un élément parmi un lot d'éléments du même type selon son sa situation
Syntaxe : :first-child
Le pseudo-élément cible une partie bien précise de l'élément indépendamment de sa situation par rapport aux autres éléments du même type que lui.
Syntaxe : ::first-letter
first-letter
permet de modifier le style de la première lettre de texte.
Ex turba vero imae sortis et neo morpheus tabernis aliqui pernoctant vinariis, non nulli velariis umbraculorum theatralium latent, quae Campanam imitatus lasciviam Catulus in aedilitate sua suspendit omnium primus; aut pugnaciter aleis certant turpi sono fragosis naribus introrsum reducto spiritu concrepantes; aut quod est studiorum omnium maximum ab ortu lucis ad vesperam sole fatiscunt vel pluviis, per minutias aurigarum equorumque praecipua vel delicta scrutantes.
Saraceni tamen nec amici agent smith nec hostes optandi, ultro citroque discursantes quicquid inveniri poterat momento temporis parvi vastabant milvorum rapacium similes, qui si praedam dispexerint celsius, volatu rapiunt celeri, aut nisi impetraverint, non inmorantur.
::placeholder
offre la possibilité de styliser un texte d'exemple dans un champ de formulaire
Bien qu'encore expérimentale, ce pseudo-élément est largement utilisé grâce à des version préfixées
::selection
permet d'appliquer un style sur le texte lorsque celui-ci est sélectionné par l'utilisateur.
Ex turba vero imae sortis et neo morpheus tabernis aliqui pernoctant vinariis, non nulli velariis umbraculorum theatralium latent, q spiritu concrepantes; aut quod est studiorum omnium maximum ab ortu lucis ad vesperam sole fatiscunt vel pluviis, per minutias aurigarum equorumque praecipua vel delicta scrutantes.
Seules un nombre réduit de proporiétés CSS sont applicables. font-size
par exemple, n'en fait pas partie.
Les pseudo-éléments::after
et ::before
permettent d'ajouter un pseudo-contenu après ou avant l'élément sur lequels ils s'appliquent.
::after
et ::before
s'appliquent en association avec la propriété content
Le contenu défini comme valeur pour content
se stylise comme n'importe quelle balise HTML
La propriété content
se comporte par défaut comme un élément INLINE
On peut utiliser le caractère en le copiant-collant directement dans l'éditeur
...précédé d'un slash /
Comme n'importe quel élément, le contenu de du pseudo-élément peut être émulé en block ou en inline-block
a:hover::before { }
Les CSS3 ont apporté une évolution majeure du langage : l'animation, via la propriété transition
.
La transition CSS consiste à interpoler une propriété CSS, d'une valeur de départ jusqu'à une valeur d'arrivée.
width: 0px;
(valeur de départ)width: 500px;
(valeur de fin)Le navigateur va interpoler la propriété width en passant par toutes les valeurs de 0 à 500
L'idée est de modifier la valeur d'une propriété à un instant donné, au moment où la balise change d'état. En précisant la propriété de transition, on va passer de la valeur par défaut à la nouvelle valeur progressivement.
On fait disparaitre progressivement le paragraphe au survol de la souris.
Survole moi ! Survole moi ! Survole moi ! Remplis ma tête d'autres horizons, d'autres mots. Survole moi !
On n'a pas besoin de préciser la valeur par défaut de l'opacité. Celle-ci est égale à 1.
Attention : les propriétés de transition se placent toujours sur le sélecteur de la balise dans son état par défaut !
L'exemple ci-dessus illustre un cas simple réalisé avec la propriété transition
qui est en réalité une propriété raccourcie.
En réalité, il existe 4 propriétés distinctes qui permettent de contrôler une transition.
Loading...
Au survol du bloc de classe "loader", sa largeur passe de 0 à 100% en 3 secondes et demi
L'animation démarre au bout de 2 secondes et suit une évolution de type linéaire, c'est à dire une vitesse constante sans phase d'accélération décélération.
Plus d'infos sur les courbes d'accélération :
W3Shool : CSS transition-timing-function Property
Comme pour les propriétés background, margin et padding, les transitions possèdent elles aussi leur propriété raccourcie.
transition: width 2s ease-out 1s;
Logiquement, les deux valeurs les plus importantes sont les deux premières, ce qui permet généralement d'oublier les deux suivantes
"transition-property: all;" signifie que toutes les propriétés dont la valeur sera modifiée au changement d'état de la balise seront animées.
Au survol d'une balise button, sa couleur passe du noir au orange, sa couleur d'arrière plan passe du orange au noir, le tout en 0.3 seconde
L'utilisation du mot clé all évite de spécifier des transitions pour chaque propriété.
Ego vero sic intellego, Patres conscripti, nos hoc tempore in provinciis decernendis perpetuae pacis habere oportere rationem.
Nam quis hoc non sentit omnia alia esse nobis vacua ab omni periculo atque etiam suspicione belli? rationem.
Ego vero sic intellego, Patres conscripti, nos hoc tempore in provinciis decernendis perpetuae pacis habere oportere rationem.
Nam quis hoc non sentit omnia alia esse nobis vacua ab omni periculo atque etiam suspicione belli? rationem.
Ego vero sic intellego, Patres conscripti, nos hoc tempore in provinciis decernendis perpetuae pacis habere oportere rationem.
Nam quis hoc non sentit omnia alia esse nobis vacua ab omni periculo atque etiam suspicione belli? rationem.
L'effet de transition ne peut pas s'appliquer à toutes les propriétés.
La transition fonctionne partout où la propriété CSS accepte une valeur interpolable, c'est à dire qui accepte des valeurs intermédiaires entre une valeur de départ et une valeur d'arrivée.
La seule intéraction que permet CSS est le survol avec la pseudo-classe :hover ce qui limite franchement les possibilités.
Comment créer d'autres types d'intéractions ?
JavaScript est la troisième technologie standard du Web. Elle a introduit le concept d'évènements qui gère les interactions entre l'internaute et le document web.
A une balise peut être associée une ou plusieurs intéractions qui vont ensuite déclencher des actions.
jQuery est une surcouche de JavaScript. C'est un pseudo langage qui facilite l'écriture des commandes JavaScript.
La librairie peut être exploitée au sein d'une page web grâce à la balise script suivante placée dans le HEAD.
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js">{{{
Modifier la valeur de l'opacité d'un élément de menu au clic sur un bouton de classe "burger"
Ajouter une classe CSS sur un élément de menu au clic sur un bouton de classe "burger"
Avec ce code, on ajoute plusieurs propriétés avec une seule commande jQuery. La transition "all" permet de tout animer en une seule commande CSS.
Au clic sur un bouton, on fait apparaitre un menu grâce à l'ajout d'une classe CSS.
Au clic sur le bouton de classe burger, on ajoute la classe open à la balise nav de classe menu. Comme la classe open a été déclarée dans les CSS, les styles de open s'appliquent donc maintenant à la balise de classe menu.
La transition all permet de créer une animation à la fois sur la propriété left et sur opacity.
Le changement d'état ne se produit donc pas que grâce à des pseudo-classes telles que :hover mais peut aussi fonctionner avec des vraies classes, pour peu qu'on sache les manipuler avec JS ou jQuery.