├── README.md ├── flex.css ├── flex.html ├── form.css ├── form.html ├── img ├── a_inline.png ├── balises_html.png ├── dev_tools.png ├── flex_img_gallery.png ├── flex_multi_line_align_content_center.png ├── flex_multi_line_align_items_center.png ├── flex_one_line_align_items_center.png ├── h1_block.png ├── hex.png ├── html_box.png ├── rgb.png ├── rgba.png └── schema_client_serveur.png ├── img_gallery.css ├── img_gallery.html ├── index.html ├── navigation.css ├── navigation.html ├── page.html └── style.css /README.md: -------------------------------------------------------------------------------- 1 | # STUDI - HTML/CSS 2 | 3 | - [Introduction](#introduction) 4 | - [La communication client / serveur](#la-communication-client--serveur) 5 | - [Le contenu HTML](#le-contenu-html) 6 | - [Votre premier fichier HTML](#votre-premier-fichier-html) 7 | - [Structure des balises HTML](#structure-des-balises-html) 8 | - [Balises doubles](#balises-doubles) 9 | - [Balises simples (ou auto-fermantes)](#balises-simples-ou-auto-fermantes) 10 | - [Attributs](#attributs) 11 | - [L'inspecteur d'éléments](#linspecteur-déléments) 12 | - [Le cache du navigateur](#le-cache-du-navigateur) 13 | - [Les balises head et body](#les-balises-head-et-body) 14 | - [Les balises de titres](#les-balises-de-titres) 15 | - [Lien hypertexte](#lien-hypertexte) 16 | - [Faire un lien interne à la page](#faire-un-lien-interne-à-la-page) 17 | - [Les commentaires](#les-commentaires) 18 | - [Les images](#les-images) 19 | - [Les chemins relatifs et absolus](#les-chemins-relatifs-et-absolus) 20 | - [Chemin absolu](#chemin-absolu) 21 | - [Chemin relatif](#chemin-relatif) 22 | - [div : la balise de division de contenu](#div--la-balise-de-division-de-contenu) 23 | - [Les types de balises](#les-types-de-balises) 24 | - [Les balises block](#les-balises-block) 25 | - [Les balises inline](#les-balises-inline) 26 | - [CSS](#css) 27 | - [Syntaxe générale](#syntaxe-générale) 28 | - [Liaison avec un fichier HTML](#liaison-avec-un-fichier-html) 29 | - [Couleurs (texte, arrière-plan)](#couleurs-texte-arrière-plan) 30 | - [Un nom](#un-nom) 31 | - [RGB](#rgb) 32 | - [RGBA](#rgba) 33 | - [HEX](#hex) 34 | - [Les sélecteurs](#les-sélecteurs) 35 | - [Les pseudo-classes](#les-pseudo-classes) 36 | - [La différence entre une classe et un id](#la-différence-entre-une-classe-et-un-id) 37 | - [id](#id) 38 | - [Classe](#classe) 39 | - [Les balises HTML : des boîtes](#les-balises-html--des-boîtes) 40 | - [Les unités de mesure](#les-unités-de-mesure) 41 | - [px : Pixels](#px--pixels) 42 | - [em & rem](#em--rem) 43 | - [% : le pourcentage](#--le-pourcentage) 44 | - [vw & vh : Viewport width & Viewport height](#vw--vh--viewport-width--viewport-height) 45 | - [Le positionnement](#le-positionnement) 46 | - [Une navigation collée en haut de l'écran (sticky)](#une-navigation-collée-en-haut-de-lécran-sticky) 47 | - [Le modèle Flexbox](#le-modèle-flexbox) 48 | - [Le conteneur](#le-conteneur) 49 | - [Les enfants](#les-enfants) 50 | - [Le ratio des images](#le-ratio-des-images) 51 | - [Formulaires : introduction](#formulaires--introduction) 52 | - [Les labels](#les-labels) 53 | - [La validation](#la-validation) 54 | 55 | ## Introduction 56 | 57 | **HTML** = HyperText Markup Language 58 | **CSS** = Cascading Style Sheet 59 | 60 | ### La communication client / serveur 61 | 62 | ![Client_serveur](img/schema_client_serveur.png "Client_serveur") 63 | 64 | Le **client**, un navigateur web, va communiquer avec un **serveur** via le protocole **HTTP**. 65 | 66 | Le serveur, en réponse, va lui envoyer une réponse **HTML**. 67 | 68 | Cette réponse peut être issue d'un document HTML **statique**, tel que ceux que nous allons réaliser ensemble tout au long de ce module, ou bien issue d'une application web plus complexe, et plus **dynamique** : dans ce cas, la réponse est adaptée au contexte dans lequel on se trouve (si je suis connecté, alors je vois _mon feed_ et pas celui d'un autre...). 69 | 70 | ### Le contenu HTML 71 | 72 | Sur n'importe quel site, vous pouvez consulter le code HTML de la page, en faisant un clic droit n'importe où sur la page et en cliquant sur "Inspecter". 73 | 74 | > Vous pouvez également utiliser la touche _F12_ pour ouvrir l'inspecteur d'éléments, sous Windows, ou encore _Command+Shift+C_ sur Mac 75 | 76 | Sur toutes les pages qu'on va visiter, nous aurons au minimum cette **structure** dans les outils de développement (inspecteur d'éléments) : 77 | 78 | ```html 79 | 80 | 81 | 82 | 83 | 84 | ``` 85 | 86 | > Le contenu HTML d'une page représente sa structure, c'est-à-dire l'ensemble des éléments qui composent la page 87 | 88 | ### Votre premier fichier HTML 89 | 90 | Pour pouvoir créer et éditer votre premier fichier HTML, vous allez installer un **IDE** : Integrated Development Environment. 91 | 92 | Dans ce module, j'utiliserai [Visual Studio Code](https://code.visualstudio.com/). 93 | 94 | Vous pouvez reprendre le [replay du live n°1](https://app.studi.fr/#/dashboard/events/26365/replay) pour avoir les détails d'installation et de configuration, ainsi que les extensions à installer. 95 | 96 | Dans Visual Studio Code, on va ouvrir un dossier en passant par le menu ou en utilisant le raccourci _Ctrl+K Ctrl+O_. 97 | 98 | Le fait d'ouvrir un dossier nous permet de nous placer dans un **environnement de travail**. C'est dans ce dossier qu'on pourra créer nos différents fichiers. 99 | 100 | Une fois dans ce dossier, on va créer un fichier `index.html`, et y inscrire ce contenu : 101 | 102 | ```html 103 | 104 | 105 | 106 | 107 | Coucou 108 | 109 | 110 | ``` 111 | 112 | Ensuite, on va se rendre dans un navigateur, puis ouvrir ce fichier directement avec le raccourci _Ctrl+O_. 113 | 114 | On doit normalement voir apparaître "Coucou" à l'écran. 115 | 116 | ## Structure des balises HTML 117 | 118 | Lors de la réalisation de nos maquettes HTML, nous utiliserons 2 types de balises : 119 | 120 | - Les balises doubles 121 | - Les balises simples (ou auto-fermantes) 122 | 123 | ### Balises doubles 124 | 125 | La structure est très simple : 126 | 127 | ```html 128 | ... 129 | ``` 130 | 131 | Le principe est d'avoir un "tag" d'ouverture et un autre de fermeture. Ainsi, on peut y inscrire du contenu supplémentaire. 132 | 133 | Exemple : 134 | 135 | ```html 136 | 137 | Le titre de ma page qui s'affichera dans l'onglet 138 | 139 | ``` 140 | 141 | Ici, nous avons utilisé 2 balises doubles : les balises `head` et `title`. 142 | 143 | ### Balises simples (ou auto-fermantes) 144 | 145 | La syntaxe est légèrement différente, mais très simple à retenir : 146 | 147 | ```html 148 | 149 | ``` 150 | 151 | Pour le moment nous n'en avons pas encore utilisé concrètement, mais nous en verrons plusieurs. 152 | 153 | A titre d'exemple, tout de même, si vous voulez faire un retour à la ligne dans une page, vous pouvez utiliser la balise `br` : 154 | 155 | ```html 156 |
157 | ``` 158 | 159 | Une petite note supplémentaire sur la syntaxe des balises simples : ça fonctionne aussi sans le `/`, donc sous la forme ``. Mais personnellement, j'utilise beaucoup plus souvent la syntaxe avec le `/` pour l'auto-fermeture. 160 | 161 | ![balises](img/balises_html.png "balises") 162 | 163 | > Important : chaque balise HTML a un rôle précis, on n'utilise pas les balises au hasard. On vient de découvrir, notamment, que la balise `title` sert à définir le titre de la page, qui apparaîtra dans l'onglet du navigateur par exemple. Ou encore `br`, qui est une balise simple, pour faire un retour à la ligne 164 | 165 | ### Attributs 166 | 167 | Dans toutes les balises, on peut ajouter des attributs sous la forme suivante : 168 | 169 | ```html 170 | 171 | 172 | ``` 173 | 174 | Par exemple, dans la balise ``, on retrouve l'élément `lang` avec la valeur `fr` : 175 | 176 | ```html 177 | 178 | ... 179 | 180 | ``` 181 | 182 | ## L'inspecteur d'éléments 183 | 184 | Dans votre navigateur, vous pouvez **inspecter** le contenu de la page que vous avez à l'écran. En gros, vous pouvez explorer son code source (et son CSS, on le verra plus tard) : 185 | 186 | ![dev_tools](img/dev_tools.png "dev_tools") 187 | 188 | Vous pouvez également modifier le code se trouvant dans la partie "Elements". 189 | 190 | > Attention, si vous réalisez un changement, cela ne signifie pas que vous avez modifié le site, vous avez seulement changé l'apparence dans votre navigateur, donc pour vous uniquement. Si je change "Coucou" en un autre texte, cela n'aura pas modifié mon fichier dans VSCode 191 | 192 | ## Le cache du navigateur 193 | 194 | Le cache du navigateur permet au navigateur, quand il affiche une page, de stocker les fichiers (images, CSS, etc...) associés à cette page. Ainsi, si vous souhaitez consulter la même page un peu plus tard, il n'est pas obligé d'aller demander au serveur, il peut vous afficher de nouveau la même page. 195 | 196 | > Pensez, quand vous voulez faire des changements dans votre page HTML et que vous l'avez correctement enregistré dans VSCode, à rafraîchir avec le raccourci `Ctrl+R` ou `Ctrl+Shift+R` au lieu de `F5`. Cela est censé vider le cache pour la page que vous voulez rafraîchir 197 | 198 | ## Les balises `head` et `body` 199 | 200 | Les balises `head` et `body` sont **indispensables** dans toute page web. 201 | 202 | Elles se trouvent toutes les deux en-dessous de la balise **racine**, la balise `html`. 203 | 204 | - La balise `head` permet de décrire au navigateur les **métadonnées** concernant la page qu'on souhaite afficher. Par exemple, quand on utilise la balise `title`, alors on doit l'inscrire dans la balise `head` et pas ailleurs. Son rôle est d'indiquer au navigateur le titre de la page. Mais ce titre n'est pas forcément celui qui apparaîtra dans la page. En l'occurence, on voit que le navigateur s'en sert pour l'afficher dans l'onglet 205 | 206 | - La balise `body`, comme son nom l'indique, représente le **corps** de la page : c'est ce qu'on va voir à l'écran 207 | 208 | ## Les balises de titres 209 | 210 | Les balises de `h1` à `h6` permettent, dans le body, d'indiquer au navigateur des titres d'importances variées. Le niveau 1 sera le plus important, on essayera donc de n'avoir qu'une seule balise `h1` sur notre page. Les niveaux de 1 à 6 vont du plus important au moins important. 211 | 212 | ## Lien hypertexte 213 | 214 | La balise `a` est une **balise double**, elle doit avoir au moins un attribut pour nous permettre de naviguer : `href`. 215 | 216 | ```html 217 | Cliquez ici pour aller sur Github 218 | ``` 219 | 220 | On a également vu qu'on pouvait forcer l'ouverture du lien dans un nouvel onglet, en ajoutant l'attribut `target` avec la valeur `_blank` : 221 | 222 | ```diff 223 | -Cliquez ici pour aller sur Github 224 | +Un clic sur ce lien s'ouvrira dans un nouvel onglet 225 | ``` 226 | 227 | ### Faire un lien interne à la page 228 | 229 | On peut également créer un lien qui pointe vers un autre élément de la page. 230 | 231 | Pour ce faire, il faut commencer par donner un **identifiant unique** à l'élément. Nous utilisons l'attribut `id` pour ça : 232 | 233 | ```html 234 |

235 | ... 236 |

237 | ``` 238 | 239 | Ensuite, dans notre balise de lien, nous pouvons pointer vers cet élément à l'aide d'un `#` suivi de l'identifiant cible : 240 | 241 | ```html 242 | Lien vers le paragraphe important 243 | ``` 244 | 245 | Lors du clic, le navigateur se positionnera à hauteur de l'élément important. 246 | 247 | > On peut également pointer un identifiant d'une autre page en indiquant le nom de la page puis `#identifiant`. L'attribut href prendrait alors la valeur `pagecible.html#identifiant` 248 | 249 | ## Les commentaires 250 | 251 | Les commentaires, dans n'importe quel langage de programmation, permettent d'écrire du contenu qui sera ignoré par l'interpréteur (votre navigateur) ou le compilateur (s'il s'agit d'un langage compilé). 252 | 253 | En HTML, la syntaxe est la suivante : 254 | 255 | ```html 256 | 257 | ``` 258 | 259 | On doit donc encadrer un commentaire par ``. 260 | 261 | On peut également l'écrire sur plusieurs lignes : 262 | 263 | ```html 264 | 271 | ``` 272 | 273 | On peut par exemple utiliser les commentaires pour décrire une partie du code qu'on a écrit : 274 | 275 | ```html 276 | 277 |

Coucou

278 |

Coucou

279 |

Coucou

280 | ``` 281 | 282 | Alors, à l'écran, on ne verra pas la première ligne, mais seulement les titres. 283 | 284 | > Attention, tout commentaire HTML apparaît quand même dans la source de la page, donc dans vos outils de développement si vous les ouvrez ! Veillez donc à ne pas indiquer d'informations sensibles ou confidentielles dans les commentaires HTML 285 | 286 | On peut aussi utiliser les commentaires pour désactiver une partie de notre code : 287 | 288 | ```html 289 |

290 | Lorem ipsum dolor sit amet 291 | 292 | Pariatur perspiciatis maxime cupiditate, facere illo at eum explicabo nemo 293 | et veritatis! 294 |

295 | ``` 296 | 297 | Dans l'exemple ci-dessus, la balise `
` sera ignorée par le navigateur, bien que le commentaire apparaisse quand même dans le code source de la page. 298 | 299 | ## Les images 300 | 301 | Avec la balise **simple** ``, nous avons la possibilité d'intégrer des images dans nos pages. 302 | 303 | Nous devons simplement définir au minimum 2 attributs à cette balise : la source de l'image à afficher, et un texte alternatif décrivant l'image si celle-ci n'a pas pu être chargée. 304 | 305 | ```html 306 | Un magnifique paysage 307 | ``` 308 | 309 | ## Les chemins relatifs et absolus 310 | 311 | Dans la section ci-dessus, décrivant la balise `img`, on a indiqué dans l'attribut `src` un chemin vers l'image à afficher. 312 | 313 | Ce chemin peut être soit **absolu**, soit **relatif**. 314 | 315 | ### Chemin absolu 316 | 317 | Un chemin absolu désigne un chemin **complet** vers une ressource. 318 | 319 | Le terme complet signifie que les éléments inclus dans le chemin vont de la **racine** jusqu'au nom du fichier. 320 | 321 | Exemple : 322 | 323 | ```html 324 | Outils de développement 325 | ``` 326 | 327 | Ici, j'utilise un chemin local, donc sur ma machine. La racine désigne la lettre du lecteur, puis l'ensemble du chemin à parcourir jusqu'au fichier. 328 | 329 | On peut également définir des chemins absolus se trouvant sur internet : 330 | 331 | ```html 332 | Google Nouvel An Lunaire 2022 333 | ``` 334 | 335 | > Note : il est possible que Google retire cette image plus tard, puisqu'elle fait référence à un événement particulier, le nouvel an chinois de 2022. C'est donc normal si en suivant ce lien plus tard qu'en Février 2022, le fichier n'existe plus 336 | 337 | Ici, la racine de mon chemin est `https://www.google.com/`, puis l'ensemble des dossiers à parcourir pour aller chercher le fichier d'extension `.gif`. 338 | 339 | ### Chemin relatif 340 | 341 | Un chemin relatif, quant à lui, n'inclura pas l'ensemble du chemin du fichier. 342 | 343 | A la place, on va désigner un chemin **relativement au répertoire courant**. 344 | 345 | Comment déduire le répertoire courant ? 346 | 347 | Par exemple, si je me trouve dans le fichier `index.html` et que je souhaite intégrer une image, alors je vais regarder le répertoire dans lequel se trouve `index.html` : c'est mon répertoire courant. 348 | 349 | Ensuite, si j'ai dans le même répertoire un dossier `img/`, comme c'est notre cas ici, je peux le désigner directement, puis indiquer l'image se trouvant dans `img/` : 350 | 351 | ```html 352 | Outils de développement 353 | ``` 354 | 355 | Alors, lorsqu'on va afficher la page, le navigateur va **résoudre** automatiquement le chemin en partant de notre répertoire courant. Pour ce faire, il prend en compte le fichier que nous sommes en train de consulter, et résout le chemin vers l'image. 356 | 357 | > Les chemins relatifs sont donc _généralement_ à privilégier : ce sera plus utile pour déployer une maquette en ligne, car elle pourra fonctionner de la même façon que votre version locale 358 | 359 | ## `div` : la balise de division de contenu 360 | 361 | Nous avons déjà vu ensemble quelques balises et leur utilité. En réalité, il existe une autre balise à vocation plus généraliste : la balise `div`. 362 | 363 | Elle va vous permettre de déclarer des conteneurs (c'est une balise double), mais sans leur donner une signification particulière dans le code HTML. En gros, si vous n'avez pas besoin d'un titre, d'un paragraphe, d'un lien, etc...mais que vous avez quand même besoin d'occuper un espace, pour un contenu, alors vous pouvez utiliser une div. 364 | 365 | La syntaxe est très simple, comme une balise double : 366 | 367 | ```html 368 |
369 | 370 |
371 | ``` 372 | 373 | > Pourquoi on parle de cette balise qui semble ne servir à rien, au premier abord ? Parce qu'en réalité, c'est l'une des balises les plus utilisées sur le web 374 | 375 | ## Les types de balises 376 | 377 | Nous allons voir ensemble les 2 types principaux de balises HTML, et leur différence fondamentale. Nous avons déjà vu maintes fois que le fait d'écrire du HTML permettait de parler à un navigateur, qui peut comprendre, interpréter notre code. 378 | 379 | Selon les balises qu'on va utiliser, le navigateur va, par défaut, les afficher différemment. 380 | 381 | ### Les balises block 382 | 383 | La caractéristique des balises `block` est qu'elles vont occuper tout l'espace horizontal disponible. 384 | 385 | Exemple : h1, h2, h3, h4, h5, h6, div, p... 386 | 387 | ![h1_block](img/h1_block.png "h1_block") 388 | 389 | Ainsi, à l'écran, dans un navigateur, elles vont systématiquement se placer sous la balise précédente, et au-dessus de la balise suivante. Car en occupant tout l'espace horizontal disponible, alors elles repoussent la balise suivante sur une nouvelle ligne. 390 | 391 | ### Les balises inline 392 | 393 | Les balises `inline`, quant à elle, n'occupent que l'espace horizontal nécessaire à leur affichage. 394 | 395 | Exemple : a, img... 396 | 397 | ![a_inline](img/a_inline.png "a_inline") 398 | 399 | ## CSS 400 | 401 | CSS est l'acronyme de **Cascading Style Sheet**. 402 | 403 | Nous avons vu ensemble que HTML permettait de définir le **squelette**, ou encore le **corps** de la page. CSS, quant à lui, définit l'habillage, l'apparence des éléments de notre page. 404 | 405 | ### Syntaxe générale 406 | 407 | Comme tout langage, CSS a sa syntaxe. 408 | 409 | Globalement, pour appliquer une apparence à un élément de la page, cela se déroulera en 2 temps : on indique un sélecteur, pour pouvoir cibler l'élément qu'on veut styliser, puis on applique des valeurs à des règles (ou propriétés) CSS, entre des accolades. 410 | 411 | Exemple : 412 | 413 | ```css 414 | h1 { /* <-- Sélecteur : toutes les balises h1 */ 415 | color: blue; /* <-- Règle : couleur du texte, Valeur : bleu */ 416 | } 417 | ``` 418 | 419 | > Note : vous constatez qu'on peut également écrire des commentaire en CSS avec la syntaxe `/* ... */` 420 | 421 | Chaque règle a un nom et un but bien particulier. Nous pouvons donc déclarer plusieurs règles, les unes à la suite des autres, pour un sélecteur donné. Chaque ligne spécifiant une valeur pour une règle donnée doit être terminée par un point-virgule. 422 | 423 | Autre exemple : 424 | 425 | Nous parlions plus tôt des types de balises (block, inline). La règle CSS associée à ces valeurs est `display`. 426 | 427 | Ainsi, pour un élément donné, qui serait par exemple `inline` par défaut, on peut tout à fait changer sa propriété CSS `display` pour le passer en `block` : 428 | 429 | ```css 430 | a { /* <-- a est un élément inline par défaut */ 431 | display: block; 432 | } 433 | ``` 434 | 435 | ### Liaison avec un fichier HTML 436 | 437 | Lorsque vous avez déclaré un ensemble de règles et les valeurs à associer pour des sélecteurs donnés, vous souhaitez appliquer cette **feuille de styles** à un document HTML. 438 | 439 | Pour ce faire, il suffit de vous rendre dans votre document HTML, et d'utiliser une balise `link` dans la partie `head` de votre page : 440 | 441 | ```html 442 | 443 | 444 | 445 | 446 | 447 | ``` 448 | 449 | ### Couleurs (texte, arrière-plan) 450 | 451 | La propriété de couleur de texte en CSS est `color`. Pour la couleur d'arrière-plan, on peut utiliser `background-color`. 452 | 453 | Dans les deux cas, ces propriétés attendent une valeur représentant une couleur, afin que le navigateur puisse l'appliquer sur l'élément cible. 454 | 455 | En CSS, on peut représenter une couleur de façons différentes. 456 | 457 | #### Un nom 458 | 459 | On peut spécifier une couleur avec un nom : `white`, `blue`, `yellow`, ... 460 | 461 | #### RGB 462 | 463 | RGB est l'acronyme de **Red, Green, Blue**. Quand vous définissez une couleur en RGB, vous définissez la quantité de bleu, vert et rouge que vous allez inclure dans votre couleur finale. Cela va nous permettre de définir des couleurs plus fines que `blue`, si vous voulez un bleu un peu plus clair par exemple. 464 | 465 | ![rgb](img/rgb.png "rgb") 466 | 467 | #### RGBA 468 | 469 | RGBA ajoute une notion de transparence dans la couleur, avec un paramètre supplémentaire (alpha). 470 | 471 | ![rgba](img/rgba.png "rgba") 472 | 473 | #### HEX 474 | 475 | Vous pouvez également spécifier une valeur en **hexadécimal**. Dans ce cas, vous allez utiliser une base 16 et non plus une base 10. 476 | 477 | La base 10 permet de compter de 0 jusqu'à 9, puis de 10 jusqu'à 19, etc...10 par 10. 478 | 479 | En base 16, on va compter de 0 jusqu'à 9, puis de A jusqu'à F : 480 | 481 | |Base 16 |0 |1 |2 |3 |4 |5 |6 |7 |8 |9 |A |B |C |D |E |F | 482 | |---------|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:| 483 | |Base 10 |0 |1 |2 |3 |4 |5 |6 |7 |8 |9 |10 |11 |12 |13 |14 |15 | 484 | 485 | ![hex](img/hex.png "hex") 486 | 487 | Une couleur en hexadécimal est représentée sur 6 caractères. En réalité, si on divise par 3, alors on peut retrouver notre RVB (ou RGB en anglais). 488 | 489 | Dans l'image ci-dessus, nous avons la valeur `#5f5fff`. Il s'agit de la représentation hexadécimale de notre précédent exemple en RGB. 490 | 491 | Prenons les 2 premiers caractères, `5f`. Il doit s'agir, logiquement, de la quantité de R, donc rouge, dans notre couleur. 492 | 493 | Dans la représentation RGB, nous avions `95` pour le rouge, donc en base 10. 494 | 495 | Si nous comptons, à la place, en base 16, alors logiquement nous devrions avoir le tableau de comparaison base 10 et base 16 ci-dessus, de 0 jusqu'à 15, puis, 16 en base 10 équivaut donc à 10 en base 16. 496 | 497 | Donc si nous allons de 16 en 16 : 498 | 499 | |Base 10 |16 |...|32 |...|48 |...|64 |...|80 | 500 | |---------|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:| 501 | |Base 16 |10 |...|20 |...|30 |...|40 |...|50 | 502 | 503 | Puis : 504 | 505 | |Base 10 |81 |82 |83 |84 |85 |86 |87 |88 |89 |90 |91 |92 |93 |94 |95 | 506 | |---------|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:| 507 | |Base 16 |51 |52 |53 |54 |55 |56 |57 |55 |59 |5A |5B |5C |5D |5E |5F | 508 | 509 | On retrouve donc bien l'équivalent `5F` en base 16, pour la valeur `95` qu'on trouvait en base 10 dans notre couleur représentée en RGB initialement. 510 | 511 | La couleur noire sera donc `#000000` et la couleur blanche `#FFFFFF`. 512 | 513 | > Note : On peut raccourcir la représentation hexadécimale si les caractères sont les mêmes : `#000000` peut être `#000`, `#FFFFFF` sera `#FFF`, `#FF0000` devient `#F00`, etc... 514 | 515 | ### Les sélecteurs 516 | 517 | Les sélecteurs CSS nous permettent de cibler, dans le fichier HTML où notre fichier CSS sera inclus, des éléments précis de l'arborescence. 518 | 519 | Pour chacun des éléments correspondants, le navigateur appliquera l'ensemble des règles CSS indiquées. 520 | 521 | |Sélecteur|Syntaxe (exemple)|Description (ce qui est sélectionné)| 522 | |---|---|---| 523 | |Balise HTML| p {} | Toutes les balises HTML correspondant au nom indiqué| 524 | |Classe| .nomDuneClasse {} | Toutes les balises HTML ayant un attribut `class` contenant le nom indiqué| 525 | |Identifiant| #identifiant {} | Toutes les balises HTML ayant un attribut `id` correspondant au nom indiqué| 526 | |sélecteur dans sélecteur|nav ul {}| Ici par exemple, toutes les balises `ul` qui se trouvent à l'intérieur d'une balise `nav` (un espace pour séparer)| 527 | |enfant direct|nav > ul {}| Ici par exemple, toutes les balises `ul` qui se trouvent à l'intérieur d'une balise `nav`, mais qui en sont les **enfants directs**, donc qui se trouvent juste en-dessous, à un niveau d'indentation supplémentaire seulement| 528 | 529 | > Je rajouterai dans ce tableau les sélecteurs que nous aurons découverts au cours de notre apprentissage 530 | 531 | #### Les pseudo-classes 532 | 533 | Les pseudo-classes s'appliquent sur des sélecteurs CSS : on ajoute `:` puis le nom de la pseudo-classe. Cela nous permettra, pour un sélecteur donné, de cibler un sous-ensemble des éléments correspondants par exemple, ou bien un état précis de l'élément (souris qui passe dessus, clic, ...) 534 | 535 | |Sélecteur|Syntaxe (exemple)|Description (ce qui est sélectionné)| 536 | |---|---|---| 537 | |N'est pas| :not() | élément qui n'est pas ce qui est indiqué entre parenthèses| 538 | |Dernier enfant| :last-child| Au sein de plusieurs enfants, cibler le dernier de leur parent| 539 | |nth-of-type|.container > div:nth-of-type(even)| Dans l'exemple ci-contre, sélectionne tous les éléments se trouvant aux positions paires qui sont des `div` se trouvant être les enfants directs d'un élément portant la classe `container`| 540 | 541 | ### La différence entre une classe et un id 542 | 543 | Pour n'importe quelle balise dans notre `body`, nous pouvons spécifier un identifiant ou bien une classe. 544 | 545 | #### id 546 | 547 | Un identifiant peut servir à plusieurs choses : 548 | 549 | - Mettre un repère dans une page pour faire un lien vers celle-ci (voir la section sur les liens) 550 | - Pouvoir désigner un élément de formulaire quand on veut lui associer un libellé (nous verrons ça plus tard avec les formulaires) 551 | - Pouvoir récupérer un élément de la page avec du Javascript 552 | 553 | Dans ces 3 exemples, une caractéristique qui ressort, et qui doit être respectée, est **l'unicité** du nom. 554 | 555 | Un identifiant, dans une page, doit être unique. On ne donnera donc pas le même identifiant à 2 balises HTML différentes. 556 | 557 | #### Classe 558 | 559 | Une classe peut être vue, du point de vue CSS, comme une _classe d'affichage_. 560 | 561 | Par exemple, nous avons défini une classe `.important` dans notre CSS, car nous souhaitions pouvoir afficher en gras le ou les textes que nous jugeons importants. 562 | 563 | Contrairement à l'identifiant, le nom de classe peut donc être **réutilisé** dans une même page, sur plusieurs balises. 564 | 565 | Par ailleurs, il est possible de **cumuler** plusieurs classes sur une balise. Voir pour ça l'exemple de notre texte important que nous avons passé en rouge : 566 | 567 | Dans notre CSS : 568 | 569 | ```css 570 | p { 571 | color: #6b8aaa; 572 | } 573 | 574 | .important { 575 | font-weight: bold; 576 | } 577 | 578 | .red { 579 | color: red; 580 | } 581 | ``` 582 | 583 | Et notre HTML : 584 | 585 | ```html 586 |

587 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Iste, quidem 588 | voluptatem? Obcaecati a distinctio ullam quisquam? 589 | 590 |

591 | ``` 592 | 593 | > Ci-dessus, on définit que les balises `p` doivent être colorées avec le code couleur `#6b8aaa`, mais nous indiquons ensuite que les éléments portant la classe `red` doivent être colorés en rouge. A l'écran, dans le navigateur, le texte est affiché en rouge : la règle déclarée dans la classe `red` a pris le dessus. Si on voulait que la règle déclarée dans la balise `p` garde le dessus, on pourrait utiliser `!important` : `color: #6b8aaa !important;`. Mais c'est une pratique dont il ne faut pas abuser, au risque de perdre en cohérence 594 | 595 | ### Les balises HTML : des boîtes 596 | 597 | Chaque balise HTML interprétée et affichée par le navigateur est en fait comme une **boîte**. 598 | 599 | Elle va avoir un contenu, des bordures, etc... 600 | 601 | Sa structure peut être visible dans l'inspecteur d'éléments, dans la partie CSS : 602 | 603 | ![html_box](img/html_box.png "html_box") 604 | 605 | Depuis l'intérieur vers l'extérieur : 606 | 607 | - Contenu de la balise : c'est là-dedans que s'affichera le texte, les images, etc... 608 | - **padding** : marge intérieure de l'élément, entre le contenu et la bordure 609 | - **border** : bordures de l'élément 610 | - **margin** : marge extérieure de l'élément 611 | 612 | > Les 3 mots en gras sont des termes à retenir. En HTML, si on parle de _margin_, alors on parle de la marge **extérieure**, et inversement pour le _padding_ 613 | 614 | Chacun de ces nouveaux termes peut être décliné sur chaque côté de l'élément. Ainsi, on pourra définir une marge extérieure supérieure sur un élément en utilisant la règle `margin-top`, ou bien une bordure inférieure avec `border-bottom`. 615 | 616 | Si on utilise `margin: 15px;`, alors on définit une marge extérieure de 15 pixels pour les 4 côtés de l'élément en même temps. 617 | 618 | > Sur la capture d'écran ci-dessus, on voit que l'élément a une marge extérieure de 8 pixels. En fait, l'élément en question est le `body`. Le navigateur applique par défaut une marge extérieure de 8 pixels sur cet élément 619 | 620 | ### Les unités de mesure 621 | 622 | Quand on veut définir une règle sur un élément, comme une marge ou une bordure, on peut indiquer l'épaisseur voulue, ou la largeur par exemple avec la règle CSS `width`. 623 | 624 | Dans ce cas, on va utiliser une unité de mesure pour indiquer au navigateur comment afficher l'élément et appliquer la règle. 625 | 626 | #### px : Pixels 627 | 628 | L'unité de mesure en pixels est très précise. 629 | 630 | Par exemple, si je souhaite appliquer une bordure sur un élément, je peux utiliser la règle `border` : 631 | 632 | ```css 633 | /* Bordure de 2px de large, en ligne pleine, de couleur noire */ 634 | border: 2px solid black; 635 | ``` 636 | 637 | Le désavantage de cette règle, cependant, est qu'il s'agit d'une unité de mesure **absolue**. 2 pixels, c'est 2 pixels, et ça ne bougera pas. Ainsi, notre layout (disposition de notre page) n'est pas très **flexible**. Donc c'est précis, mais moins flexible que des unités de mesure **relatives**. 638 | 639 | #### em & rem 640 | 641 | Comme vu précédemment, si on veut définir une bordure par exemple, on peut tout à fait utiliser une valeur absolue. L'unité de mesure en pixels est loin d'être inutile. 642 | 643 | En revanche, si on souhaite dimensionner un texte par exemple, nous aurons probablement plus besoin d'une unité de mesure **relative**. 644 | 645 | Alors, relative à quoi ? Regardons un exemple. 646 | 647 | Quand j'utilise une balise `h1`, le navigateur applique un style par défaut : 648 | 649 | ```css 650 | h1 { 651 | display: block; 652 | font-size: 2em; /* <-- Taille du texte, unité de mesure en 'em' */ 653 | margin-block-start: 0.67em; 654 | margin-block-end: 0.67em; 655 | margin-inline-start: 0px; 656 | margin-inline-end: 0px; 657 | font-weight: bold; 658 | } 659 | ``` 660 | 661 | L'utilisation de l'unité `em` permet ici de dire au navigateur "applique une taille de texte 2 fois plus grande que la première taille de texte que tu trouveras plus haut dans l'arborescence". 662 | 663 | > Généralement, l'élément `h1` se trouve assez haut dans l'arborescence, donc on va souvent hériter de la taille de texte définie sur le `body` par exemple (par défaut : 16px) 664 | 665 | Donc par défaut, notre `h1` possèderait une taille de police de 32px, dans ce cas. 666 | 667 | Maintenant, si je souhaite appliquer, par exemple, un `margin` sur mon `h1`, je peux utiliser une taille relative également : 668 | 669 | ```css 670 | h1 { 671 | margin: 3em; 672 | } 673 | ``` 674 | 675 | Or, dans ce cas, la marge appliquée par le navigateur sera de **96px**. C'est en fait 3 fois la `font-size` appliquée sur notre `h1` ! 676 | 677 | Si on veut conserver une taille relative à la taille **de base**, alors on doit utiliser `rem` comme unité de mesure. On indique ainsi au navigateur d'utiliser le **root em**, donc de se référer à la racine. 678 | 679 | ```css 680 | h1 { 681 | margin: 3rem; 682 | } 683 | ``` 684 | 685 | Avec l'unité `rem`, on aura bien une marge de **48px**, soit 16px x 3. 686 | 687 | Ainsi, on peut donc décider, par la suite, de faire évoluer notre taille de police de base. L'élément racine étant `html`, on peut tout à fait décider que la taille de police de base n'est plus 16px mais 20px : 688 | 689 | ```css 690 | html { 691 | font-size: 20px; 692 | } 693 | ``` 694 | 695 | Alors, dans ce cas, toutes les règles que nous avons définies comme relatives suivront : notre layout est plus flexible. 696 | 697 | #### % : le pourcentage 698 | 699 | On peut également utiliser le pourcentage comme unité de mesure relative. 700 | 701 | Par exemple, pour définir la largeur d'un conteneur : 702 | 703 | ```css 704 | .monConteneur { 705 | width: 50%; 706 | } 707 | ``` 708 | 709 | Alors, relativement à son **parent**, il devrait occuper 50% de l'espace. 710 | 711 | #### vw & vh : Viewport width & Viewport height 712 | 713 | `vw` et `vh` permettent d'indiquer la largeur ou la hauteur d'un élément par rapport au **viewport** : la zone affichée à l'écran. Elle agit comme un pourcentage (`100vh` = 100% de la hauteur de la zone affichée à l'écran). 714 | 715 | ### Le positionnement 716 | 717 | Du point de vue du navigateur, chaque élément a un **positionnement** (en CSS, règle : `position`). 718 | 719 | Le positionnement par défaut est `static`. Suivant le type de l'élément (`block` ou `inline`), le navigateur le positionne à la suite des autres, sans adaptation particulière. 720 | 721 | Les principaux positionnements utilisés sont : 722 | 723 | - relative 724 | - absolute 725 | - fixed 726 | - sticky 727 | 728 | #### Une navigation collée en haut de l'écran (sticky) 729 | 730 | Dans l'exemple `navigation.html`, on réalise une barre de navigation collée en haut de l'écran quand on scrolle. 731 | 732 | Pour ce faire, on va appliquer à notre balise `nav` un positionnement `sticky`, et indiquer au navigateur ou positionner l'élément : 733 | 734 | ```css 735 | nav { 736 | position: sticky; 737 | top: 0px; 738 | } 739 | ``` 740 | 741 | La règle `top` va simplement indiquer au navigateur où positionner l'élément. Relativement au haut (`top` en anglais) de la fenêtre, on le mettra à 0px. Donc collé, tout en haut. 742 | 743 | ### Le modèle Flexbox 744 | 745 | Nous avons vu que les éléments HTML pouvaient être de type `block` ou `inline`. 746 | 747 | La règle CSS correspondant à ce type d'affichage est `display`. 748 | 749 | On peut également utiliser `display` pour d'autres types d'affichages. Nous allons parler du type `flex`. 750 | 751 | Le modèle Flexbox permet, quand il est appliqué sur un conteneur, d'indiquer au navigateur comment distribuer les éléments qui se trouvent dans ce conteneur. 752 | 753 | On va donc pouvoir distributer les enfants d'un conteneur de manière beaucoup plus aisée grâce aux règles CSS utilisables soit sur le conteneur, soit sur les enfants. 754 | 755 | #### Le conteneur 756 | 757 | Au niveau du conteneur, on va dire au navigateur qu'on souhaite appliquer Flexbox avec `display: flex;`. 758 | 759 | Quand on applique cette règle sur un conteneur, alors le navigateur, par défaut, va distribuer les enfants de ce conteneur sur un **axe principal** : horizontal (ou `row`). 760 | 761 | Il est possible d'indiquer au navigateur d'utiliser l'axe vertical comme axe principal avec la règle `flex-direction: column`. 762 | 763 | Par la suite, il est donc possible d'indiquer au navigateur comment aligner les enfants sur l'axe principal, mais également sur l'**axe secondaire**. 764 | 765 | > Donc, si par défaut, l'axe principal est `row`, donc l'axe horizontal, alors l'axe secondaire sera l'axe vertical, et l'inverse avec `flex-direction: column` 766 | 767 | Pour aligner les enfants sur l'axe principal, on utilisera la règle `justify-content` **toujours au niveau du conteneur** : 768 | 769 | ```css 770 | /* Pour distribuer les éléments d'une liste par exemple */ 771 | nav ul { 772 | display: flex; 773 | justify-content: center; 774 | } 775 | ``` 776 | 777 | On utilisera généralement `flex-start`, `flex-end`, `space-around`, `space-between`, `space-evenly`, `center` comme valeurs de cette règle. 778 | 779 | Au niveau de l'axe secondaire, on pourra utiliser `align-items` ou `align-content`. 780 | 781 | `align-items` va nous permettre d'aligner les **éléments**, au sein d'une ligne, par rapport à l'axe secondaire. 782 | 783 | La différence avec `align-content` concerne les lignes. `align-content` n'aura aucun effet sur une ligne seule. Elle aura un effet sur l'alignement de **plusieurs lignes** par rapport à l'axe secondaire. 784 | 785 | ##### align-items sur une ligne 786 | 787 | ![flex_one_line_align_items_center](img/flex_one_line_align_items_center.png "flex_one_line_align_items_center") 788 | 789 | ##### align-items sur plusieurs lignes 790 | 791 | ![flex_multi_line_align_items_center](img/flex_multi_line_align_items_center.png "flex_multi_line_align_items_center") 792 | 793 | ##### align-content sur plusieurs lignes 794 | 795 | ![flex_multi_line_align_content_center](img/flex_multi_line_align_content_center.png "flex_multi_line_align_content_center") 796 | 797 | #### Les enfants 798 | 799 | Les règles CSS précédemment vues s'appliquent sur le **conteneur**. 800 | 801 | Les éléments contenus dans ce conteneur, donc les enfants, peuvent également recevoir des règles CSS. 802 | 803 | Par exemple, dans le fichier `img_gallery.css`, on réalise une galerie d'images avec Flexbox : 804 | 805 | ![flex_img_gallery](img/flex_img_gallery.png "flex_img_gallery") 806 | 807 | On peut indiquer au navigateur d'autoriser les enfants à s'élargir si besoin avec la règle `flex-grow`, à appliquer au niveau des enfants. 808 | 809 | Par défaut, `flex-grow` est à 0, donc si nous ne l'appliquions pas sur notre galerie, les images ne prendraient pas toute la largeur disponible. 810 | 811 | Les 3 règles principalement utilisées sur les enfants permettent de fixer une valeur de base, la possibilité de s'élargir et la possibilité de se rétrécir. 812 | 813 | - `flex-grow` : possibilité de s'élargir (par défaut : 0, donc pas possible) 814 | - `flex-shrink` : possibilité de rétrécir l'élément (par défaut : 1) 815 | - `flex-basis` : largeur de base pour ensuite déterminer la largeur finale (par défaut : auto) 816 | 817 | Il est également possible d'utiliser la règle `flex` sur les enfants, comme un raccourci de `flex-grow`, `flex-shrink` et `flex-basis` : 818 | 819 | ```css 820 | element { 821 | /* --- Premier exemple --- */ 822 | flex: 1; 823 | /* 824 | Equivaut à : 825 | flex-grow: 1; 826 | flex-shrink: 1; 827 | flex-basis: 0%; 828 | */ 829 | /* --- Second exemple --- */ 830 | flex: 1 0; 831 | /* 832 | Equivaut à : 833 | flex-grow: 1; 834 | flex-shrink: 0; 835 | flex-basis: 0%; 836 | */ 837 | /* --- Troisième exemple --- */ 838 | flex: 1 auto; 839 | /* 840 | Equivaut à : 841 | flex-grow: 1; 842 | flex-shrink: 1; 843 | flex-basis: auto; 844 | */ 845 | /* --- Quatrième exemple --- */ 846 | flex: 1 0 auto; 847 | /* 848 | Equivaut à : 849 | flex-grow: 1; 850 | flex-shrink: 0; 851 | flex-basis: auto; 852 | */ 853 | } 854 | ``` 855 | 856 | ### Le ratio des images 857 | 858 | Dans la galerie d'images `img_gallery.html`, pour éviter que les images soient déformées, on applique la règle CSS `object-fit` avec la valeur `cover`. 859 | 860 | Ainsi, il est possible que l'image soit légèrement rognée sur les bords mais le ratio reste correct. 861 | 862 | ## Formulaires : introduction 863 | 864 | Un formulaire aura toujours pour balise racine la balise `form` : 865 | 866 | ```html 867 |
868 | 869 |
870 | ``` 871 | 872 | Une fois qu'on a ouvert notre formulaire, on va ajouter des champs dedans : 873 | 874 | ```html 875 | 876 |
877 | 878 | 879 |
880 | ``` 881 | 882 | >Les balises `input` sont auto-fermantes 883 | 884 | La balise `input` peut recevoir de nombreux types, entre autres : `text`, `email`, `password`, `number`... 885 | 886 | ### Les labels 887 | 888 | Il est possible d'accompagner un champ d'un **texte descriptif**. Par ailleurs, le clic sur le texte descriptif peut provoquer le **focus** sur le champ de formulaire associé : le curseur va se placer directement dans le champ. 889 | 890 | Un texte descriptif peut être placé dans la page avec la balise double `label` : 891 | 892 | ```html 893 | 894 | 899 | ``` 900 | 901 | Dans ce cas, on voit que pour pouvoir cibler un élément de formulaire, il faut pouvoir **l'identifier**, d'où l'utilisation de l'attribut `id` dans l'input. 902 | 903 | > Rappelez-vous qu'un identifiant doit être unique ! 904 | 905 | ### La validation 906 | 907 | On peut également ajouter dans les différentes balises de formulaire des attributs de validation : indiquer qu'un champ doit être renseigné obligatoirement, ou bien qu'il doit avoir un format d'email, ou des limites inférieures et supérieures, etc... 908 | 909 | Exemples : 910 | 911 | ```html 912 | 913 | 920 | 921 | 922 | 929 | 930 | 931 | 938 | ``` 939 | 940 | Attention, la validation côté HTML, donc côté client, doit **toujours** être complétée par une validation côté serveur. 941 | 942 | En effet, n'importe qui disposant d'une page web affichée dans son navigateur peut en modifier la source pour enlever ou modifier les contraintes de validation. Ainsi, il faut davantage considérer la validation côté client comme un **confort d'utilisation** pour l'utilisateur final : on peut le prévenir que l'email a un format invalide par exemple, afin d'empêcher la soumission du formulaire et avoir une saisie erronée par exemple. 943 | 944 | > Prévoyez toujours une validation côté client et une validation côté serveur 945 | -------------------------------------------------------------------------------- /flex.css: -------------------------------------------------------------------------------- 1 | * { 2 | box-sizing: border-box; 3 | } 4 | 5 | body { 6 | margin: 0; 7 | } 8 | 9 | /* Container : donc je définis flexbox là-dessus, ainsi que l'espacement entre les enfants */ 10 | .container { 11 | height: 100vh; /* vh = viewport height */ 12 | display: flex; 13 | gap: 1em; 14 | flex-wrap: wrap; 15 | justify-content: center; 16 | align-content: center; 17 | } 18 | 19 | .container > div { 20 | padding: 2em; 21 | background-color: #555; 22 | color: white; 23 | } 24 | 25 | .container > div:nth-of-type(even) { 26 | background-color: rgb(255, 90, 117); 27 | } 28 | -------------------------------------------------------------------------------- /flex.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Flexbox 9 | 10 | 11 |
12 |
1
13 |
2
14 |
3
15 |
4
16 |
5
17 |
6
18 |
7
19 |
8
20 |
9
21 |
10
22 |
11
23 |
12
24 |
13
25 |
14
26 |
15
27 |
16
28 |
17
29 |
18
30 |
31 | 32 | 33 | -------------------------------------------------------------------------------- /form.css: -------------------------------------------------------------------------------- 1 | input { 2 | padding: 0.5em; 3 | outline: none; 4 | } 5 | 6 | form > div { 7 | margin-top: 1em; 8 | } 9 | 10 | button { 11 | padding: 0.5em 1em; 12 | background-color: rgb(35, 200, 35); 13 | border: none; 14 | color: white; 15 | text-transform: uppercase; 16 | font-size: 1.2em; 17 | border-radius: 6px; 18 | } 19 | -------------------------------------------------------------------------------- /form.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 11 | 12 | Formulaire 13 | 14 | 15 |

Identification

16 |
17 |
18 | 19 | 26 |
27 |
28 | 29 | 36 |
37 |
38 | 43 |
44 |
45 | 46 | 50 |
51 |
52 | 53 | 54 | -------------------------------------------------------------------------------- /img/a_inline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ld-web/studi-html-css/c7311131514ad88de9ca2b43f65773108c89098a/img/a_inline.png -------------------------------------------------------------------------------- /img/balises_html.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ld-web/studi-html-css/c7311131514ad88de9ca2b43f65773108c89098a/img/balises_html.png -------------------------------------------------------------------------------- /img/dev_tools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ld-web/studi-html-css/c7311131514ad88de9ca2b43f65773108c89098a/img/dev_tools.png -------------------------------------------------------------------------------- /img/flex_img_gallery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ld-web/studi-html-css/c7311131514ad88de9ca2b43f65773108c89098a/img/flex_img_gallery.png -------------------------------------------------------------------------------- /img/flex_multi_line_align_content_center.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ld-web/studi-html-css/c7311131514ad88de9ca2b43f65773108c89098a/img/flex_multi_line_align_content_center.png -------------------------------------------------------------------------------- /img/flex_multi_line_align_items_center.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ld-web/studi-html-css/c7311131514ad88de9ca2b43f65773108c89098a/img/flex_multi_line_align_items_center.png -------------------------------------------------------------------------------- /img/flex_one_line_align_items_center.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ld-web/studi-html-css/c7311131514ad88de9ca2b43f65773108c89098a/img/flex_one_line_align_items_center.png -------------------------------------------------------------------------------- /img/h1_block.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ld-web/studi-html-css/c7311131514ad88de9ca2b43f65773108c89098a/img/h1_block.png -------------------------------------------------------------------------------- /img/hex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ld-web/studi-html-css/c7311131514ad88de9ca2b43f65773108c89098a/img/hex.png -------------------------------------------------------------------------------- /img/html_box.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ld-web/studi-html-css/c7311131514ad88de9ca2b43f65773108c89098a/img/html_box.png -------------------------------------------------------------------------------- /img/rgb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ld-web/studi-html-css/c7311131514ad88de9ca2b43f65773108c89098a/img/rgb.png -------------------------------------------------------------------------------- /img/rgba.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ld-web/studi-html-css/c7311131514ad88de9ca2b43f65773108c89098a/img/rgba.png -------------------------------------------------------------------------------- /img/schema_client_serveur.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ld-web/studi-html-css/c7311131514ad88de9ca2b43f65773108c89098a/img/schema_client_serveur.png -------------------------------------------------------------------------------- /img_gallery.css: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | flex-flow: row wrap; 4 | gap: 0.5rem; 5 | max-width: 1100px; 6 | margin: auto; 7 | } 8 | 9 | .container > * { 10 | height: 250px; 11 | /* max-width: 40%; */ 12 | /* flex-grow: 1; 13 | flex-basis: auto; */ 14 | object-fit: cover; 15 | } 16 | 17 | .container > .landscape { 18 | flex: 1; 19 | } 20 | 21 | /* .container > *:last-child { 22 | flex-grow: 0; 23 | } */ 24 | -------------------------------------------------------------------------------- /img_gallery.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Galerie d'images 8 | 9 | 10 | 11 |
12 | 17 | 22 | 27 | 28 | 33 | 38 | 43 | 44 | 48 | 53 | 58 | 63 | 67 | 72 | 73 | 74 | 79 | 84 | 89 | 90 | 95 | 96 | 97 | 98 | 103 | 104 | 109 | 110 | 115 | 116 | 121 | 126 | 131 | 132 |
133 | 134 | 135 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | STUDI HTML/CSS 5 | 6 | 7 | 8 | 9 | Contact 10 | Important : voir 11 | 12 |

Studi

13 |

Coucou

14 |

Coucou

15 | 16 | Google Chrome Development tools 17 |

Coucou

18 |
Coucou
19 |
Coucou
20 | 21 | Google 22 | 23 |

24 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Iste, quidem 25 | voluptatem? Obcaecati a distinctio ullam quisquam? Voluptate laudantium 26 | sunt repudiandae deserunt rerum voluptatem obcaecati nobis, repellat 27 | voluptas laboriosam ut consequatur ea placeat laborum blanditiis autem 28 | quis, reiciendis dignissimos debitis in! Ullam provident optio, rem 29 | aliquid placeat corrupti nam. Adipisci illo dicta id molestiae! Vel enim 30 | nisi dolorum cumque labore facilis! 31 |
32 | Pariatur perspiciatis maxime cupiditate, facere illo at eum explicabo nemo 33 | et veritatis! Minus, deserunt omnis, commodi, ipsa odit facilis recusandae 34 | assumenda in consequuntur animi illum ducimus accusamus itaque asperiores! 35 | Numquam molestias aspernatur tenetur blanditiis provident facilis aliquid 36 | repudiandae rerum voluptates. 37 |

38 |

39 | Lorem ipsum dolor sit amet consectetur, adipisicing elit. Qui aut tempora 40 | repellat neque dolorem dolorum vitae dicta, modi eius placeat dignissimos 41 | nemo culpa quibusdam quos fugiat dolor sequi quasi eos molestias aliquam 42 | debitis! Asperiores distinctio aliquam temporibus voluptates harum 43 | laudantium eum placeat dolor enim ullam dignissimos corporis ab assumenda 44 | labore atque culpa magnam at voluptatum, amet voluptatem. Eius officiis 45 | delectus cupiditate eligendi autem. Eaque facilis quibusdam fuga iure 46 | consectetur labore molestias iste veniam tempore sint beatae fugit quis ea 47 | id voluptatibus commodi quo minima recusandae deleniti incidunt, qui 48 | excepturi molestiae eos quasi? Accusamus illum voluptate sint vel ullam 49 | sit nam! Laborum voluptatibus quaerat delectus ex quos perferendis ipsam a 50 | magnam quidem ab odit ducimus natus, voluptates sunt voluptatem cum, 51 | voluptas neque eos? A pariatur, obcaecati, molestiae impedit autem 52 | quibusdam veritatis rerum placeat natus esse unde repellendus repellat 53 | ipsam incidunt consequuntur et dolor neque provident, deserunt explicabo 54 | vero. Vel debitis incidunt distinctio dolore, molestiae quos labore dolor. 55 | Eum ratione sit possimus, placeat adipisci, vel voluptas corrupti 56 | molestiae repellat modi a asperiores doloremque doloribus mollitia velit 57 | minima cum, consequatur nobis! Esse consequuntur quis suscipit totam 58 | officiis cumque repellendus, cum aperiam ea facilis nostrum consectetur 59 | nisi inventore blanditiis culpa voluptas sed velit iure? 60 |

61 |

62 | Lorem ipsum dolor sit, amet consectetur adipisicing elit. Similique soluta 63 | quos in adipisci odio necessitatibus alias numquam eligendi distinctio 64 | minima accusamus eaque beatae, officiis pariatur voluptate quaerat sed et 65 | quidem molestias voluptatum voluptas asperiores error dolorem veritatis! 66 | Incidunt fuga nulla consequatur ipsum laborum, debitis voluptate inventore 67 | assumenda maxime? Quidem ut eum maxime numquam vitae blanditiis quaerat, 68 | fugit dolore vero illo laudantium, similique quibusdam in voluptatum eos 69 | corrupti dignissimos. Laudantium repellendus, assumenda quasi cumque fuga 70 | architecto rem? Inventore quod qui nesciunt iste, dolor minus eius, vel 71 | adipisci quasi at explicabo quaerat expedita quam consequatur! Amet nemo 72 | doloribus exercitationem enim pariatur laborum, voluptate numquam possimus 73 | commodi maxime delectus et incidunt deserunt officia obcaecati similique 74 | ipsum, provident placeat a natus excepturi. Tempora numquam illo hic 75 | expedita iste minima exercitationem mollitia dolorem placeat perferendis 76 | quae debitis nam obcaecati libero repudiandae aut, laborum porro delectus 77 | iure. Doloremque ducimus obcaecati quae dolorum fugiat cupiditate ipsum 78 | maxime? 79 |

80 |

81 | Nostrum, nobis iure? Velit similique dolorem, sapiente porro omnis nisi 82 | provident quos! Quam quasi ipsa numquam quae nam officiis dolores officia. 83 | Officiis earum sequi corporis similique debitis expedita excepturi quasi, 84 | quisquam natus atque veniam fugit alias temporibus enim exercitationem 85 | perferendis porro laboriosam aut maiores cum nemo aperiam! Ipsam explicabo 86 | doloremque a ab iusto reprehenderit suscipit soluta quo maxime qui, dolor 87 | deserunt officia consequatur, inventore deleniti molestiae nostrum 88 | repudiandae illo! Architecto corporis suscipit consequuntur? Quae 89 | praesentium temporibus sapiente repudiandae tempora! Quod, vero 90 | perferendis. Fugit blanditiis inventore, voluptatum similique quos quasi 91 | eos in itaque minima laborum earum optio totam tenetur culpa illum nulla, 92 | aspernatur ratione neque recusandae! Assumenda eveniet molestiae 93 | laudantium dignissimos, dolor enim ut cumque nostrum. Sint vel vero velit 94 | ratione unde autem odit nulla molestiae ad, possimus numquam nam voluptate 95 | quod ipsam perferendis modi aut ut rem amet. Magnam enim maxime suscipit 96 | eum in blanditiis doloremque velit perspiciatis fuga expedita. 97 |

98 |

99 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Commodi dolores 100 | nulla eos aliquid voluptate obcaecati aperiam quae asperiores totam 101 | facilis. Explicabo quibusdam id ex dicta, sequi architecto qui porro 102 | minima molestiae non voluptatum commodi esse. Ipsum omnis excepturi, 103 | corrupti eum consectetur fugiat inventore at eius hic tenetur minus 104 | pariatur nobis illum dolor! Iusto incidunt fugit placeat iste sapiente, 105 | quos perferendis maiores quia blanditiis ducimus quo illum commodi hic 106 | quam magnam distinctio! Repellendus id atque, reiciendis iste temporibus 107 | cum ea suscipit! Laudantium sint doloremque, ea dignissimos velit 108 | doloribus illum aliquid quasi eum accusantium rem eius dicta error neque 109 | sequi iusto sapiente? 110 |

111 |

112 | Laboriosam porro animi deleniti, aut quas molestiae nobis illum nulla 113 | nesciunt esse corporis iure maiores voluptatum amet? Deserunt temporibus 114 | eveniet amet dolorem maxime ipsa dolores incidunt, voluptatum quasi 115 | expedita, illum assumenda nesciunt aliquid sint autem vero! Et, porro 116 | harum voluptatem maxime rerum, saepe iste provident, officia numquam 117 | suscipit inventore asperiores. Fugiat sapiente quos incidunt quas 118 | consequatur blanditiis qui perferendis nemo ea in esse laboriosam, ipsam 119 | voluptatibus suscipit cum eum maxime quisquam animi ex quidem alias! 120 | Illum, explicabo? Id porro laboriosam nesciunt atque ex asperiores et 121 | magnam nisi totam tempore suscipit impedit sed iure facilis, tenetur quam 122 | molestias illo, iusto commodi. 123 |

124 | 125 |
126 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Fugiat, 127 | architecto debitis. Neque saepe natus culpa sapiente, rerum non expedita 128 | voluptas adipisci asperiores deleniti molestias sequi quos laborum 129 | aspernatur suscipit totam! Dolorem molestias qui, ab, possimus assumenda 130 | quibusdam beatae adipisci ex quidem veritatis soluta dolores doloribus 131 | asperiores! Quibusdam voluptas sequi sapiente qui quisquam sint velit 132 | reprehenderit. Consequatur at fuga ducimus natus amet voluptates sapiente 133 | illo quas sed, alias iste accusamus. Quidem veritatis fugiat quis 134 | necessitatibus labore dolor debitis eos, aliquid qui quod quasi at modi 135 | porro totam facilis minima error, illum maiores culpa sint architecto 136 | doloremque recusandae in laboriosam. Harum cum dolor, eos earum corporis 137 | reiciendis saepe optio enim nisi nihil ab et sint animi nulla perspiciatis 138 | in porro tenetur accusamus eius quo, aspernatur beatae quibusdam esse! 139 | Voluptatibus sequi nemo, expedita ab ducimus fugiat, sit labore animi iste 140 | consequatur mollitia suscipit veniam, harum porro neque? Et, fuga 141 | voluptatum voluptate dolor laborum nam tempore, eaque quas, ad accusamus 142 | assumenda quia! Hic at illo, magnam unde ducimus id. Ipsa, odio 143 | aspernatur? Vel nisi, fugiat alias qui architecto repudiandae porro 144 | voluptatibus optio dolores nemo suscipit aliquam reiciendis tenetur, nulla 145 | rerum corporis atque totam asperiores maiores ipsum voluptates? Error 146 | impedit, deserunt aliquid nulla harum accusamus. 147 |
148 | 149 |
150 |
Test1
151 |
Test2
152 |
Test3
153 |
154 | 155 | 156 | 157 | 173 | -------------------------------------------------------------------------------- /navigation.css: -------------------------------------------------------------------------------- 1 | * { 2 | box-sizing: border-box; 3 | } 4 | 5 | body { 6 | margin: 0; 7 | font-size: 20px; 8 | font-family: "Roboto", sans-serif; 9 | } 10 | 11 | nav { 12 | background-color: rgba(50, 50, 50, 0.6); 13 | padding: 0.5em; 14 | position: sticky; 15 | top: 0px; 16 | backdrop-filter: blur(4px); 17 | } 18 | 19 | nav ul { 20 | list-style-type: none; 21 | padding-left: 0; 22 | display: flex; 23 | justify-content: center; 24 | column-gap: 3em; 25 | } 26 | 27 | nav ul li { 28 | display: inline; 29 | } 30 | 31 | nav ul li a { 32 | color: white; 33 | text-decoration: none; 34 | } 35 | 36 | /* nav ul li:not(:last-child) { 37 | margin-right: 2em; 38 | } */ 39 | -------------------------------------------------------------------------------- /navigation.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 13 | 14 | 15 | Navigation 16 | 17 | 18 | 29 |
30 |

Bienvenue sur mon site

31 |
32 |

33 | Ma photo de profil 37 |

38 |

39 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Enim beatae 40 | recusandae tenetur impedit natus voluptatum nulla provident! Est, 41 | officia incidunt. Vero dolor fuga consequuntur, iure voluptatibus sint 42 | sapiente quo temporibus ipsam, nobis architecto deserunt. Unde hic 43 | autem quas a at eveniet assumenda voluptatem, laboriosam quos quia 44 | architecto magni est voluptas voluptatibus optio vitae alias 45 | consequuntur ab? Laborum eaque dolorum dignissimos culpa maiores 46 | repellat fuga repudiandae similique soluta at, quia magni vitae 47 | suscipit, harum sit cupiditate ipsam. Ad voluptatum vero quo 48 | laboriosam et suscipit hic, iste consequuntur quos pariatur, 49 | reiciendis ab aspernatur. Dolore officia ipsa exercitationem, 50 | voluptates voluptatibus sapiente eligendi natus? 51 |

52 |

53 | Sit deleniti adipisci saepe voluptate blanditiis officia non, 54 | molestiae eaque. Autem, similique. Suscipit fugit enim exercitationem 55 | voluptatum natus, nisi incidunt cum! Alias distinctio provident labore 56 | eligendi explicabo cupiditate, corporis maiores atque rem rerum sed 57 | quae sapiente reprehenderit eos. Exercitationem ipsum quas laborum 58 | repellat, autem neque quasi dolorum accusantium adipisci et pariatur 59 | voluptate distinctio amet recusandae architecto, cupiditate id numquam 60 | ipsa voluptatibus dicta, asperiores molestiae. Necessitatibus, sit 61 | quasi debitis accusantium ipsa dolor consequatur voluptatibus laborum 62 | ad in quo iusto. Accusantium magni fugit alias dolores ipsa quidem a 63 | iste obcaecati doloribus, quas omnis at rem quod aliquid nisi ea nulla 64 | et libero? 65 |

66 |

67 | Pariatur impedit aspernatur reiciendis molestias, obcaecati iusto 68 | optio autem adipisci qui necessitatibus nemo esse numquam non velit 69 | eligendi, provident eaque totam, distinctio minima consequuntur 70 | dolores. Maxime neque laudantium accusantium odit cumque quasi quo 71 | eligendi explicabo inventore velit error id ipsum expedita doloribus, 72 | omnis dolor asperiores iure sapiente consectetur at! Ullam blanditiis 73 | sed soluta minus amet obcaecati velit ducimus porro, rem animi, nihil 74 | in ut explicabo quo autem magni tempora odio dolorum rerum ad id 75 | maxime eum sit. Culpa aspernatur sit error vitae dignissimos fugit 76 | ratione minus voluptate aperiam quam suscipit cupiditate mollitia in 77 | atque consectetur exercitationem qui, tenetur enim ullam! 78 |

79 |
80 |
81 | 82 | 83 | -------------------------------------------------------------------------------- /page.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Autre page assez longue 8 | 9 | 10 |

11 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Officiis atque 12 | facilis possimus enim itaque natus nisi explicabo! Eveniet dignissimos 13 | tempora inventore. Eius laboriosam expedita sint iste, odio voluptatum 14 | nesciunt veniam quidem! Ab tempora voluptates perferendis corrupti 15 | reprehenderit ullam illum maxime accusantium? Id sapiente quibusdam 16 | temporibus itaque in totam quasi corporis distinctio dolores magni 17 | officiis animi voluptate impedit doloribus beatae sequi voluptatum modi 18 | voluptates repellat illo quae quod dicta, ipsa esse. Voluptatem quam aut 19 | perferendis eos doloribus saepe quod iure architecto id, officiis 20 | laboriosam error nam pariatur, at sunt eius hic! Alias accusamus inventore 21 | aliquid ipsa aliquam praesentium fugit eius repellendus commodi magnam, 22 | iusto officiis dolorum itaque sequi exercitationem velit aut architecto 23 | blanditiis. Dolor vel quae quam alias similique, odio sint maxime dolores 24 | tempore dolore iure iste recusandae facere inventore maiores tenetur eum 25 | voluptatem libero itaque mollitia consequuntur ratione placeat pariatur 26 | qui. Dolores blanditiis repudiandae ducimus sunt, deserunt dolorem debitis 27 | inventore aspernatur consequuntur rerum molestias? Animi, neque 28 | consequuntur error aspernatur perferendis quod ipsam consectetur cumque 29 | nemo dolores ratione incidunt debitis doloribus accusantium a! Amet 30 | facilis, tempore doloremque laborum ad exercitationem eveniet! Illum 31 | eligendi ab recusandae sed, nemo consectetur modi incidunt asperiores unde 32 | cupiditate in iure fuga rem enim nisi harum! Facere! 33 |

34 |

35 | Molestiae ipsam illum ratione ea nulla fugiat, facilis quisquam dolorem, 36 | aliquid rem, alias aut? Officia debitis quae eum accusantium pariatur 37 | quisquam? Sequi error minus aspernatur dignissimos voluptates maiores 38 | sint, velit qui incidunt id porro vero iusto rem nostrum ipsam tenetur 39 | fuga unde quidem earum repellat nobis non? Reprehenderit minus porro 40 | tenetur vero cum, temporibus earum dicta. Eum quia rem sit mollitia at, 41 | natus distinctio minus quod repellat aspernatur adipisci necessitatibus, 42 | minima quam, possimus nisi dolores veritatis consequuntur quaerat enim. 43 | Asperiores, voluptatibus repellat iure molestias velit natus accusantium 44 | obcaecati officiis sapiente laudantium atque magni, debitis illum. Ut 45 | dolores aliquid in incidunt quis consequuntur recusandae debitis omnis 46 | voluptatem rerum ipsam id tempore atque quidem, eius doloribus at 47 | molestiae voluptates commodi. Nisi esse deserunt modi iste accusantium 48 | tenetur alias ipsa ipsum minus, et provident aspernatur itaque amet 49 | repellat incidunt mollitia ducimus veritatis quas quos obcaecati odio 50 | enim. Repellendus facilis corporis molestias dolorem, quae adipisci ex! 51 | Consectetur dolorum ipsa eveniet nihil reprehenderit at? Laudantium nam 52 | consectetur sapiente quaerat minus modi nisi a, magnam recusandae, 53 | dignissimos ex ad error iure vitae provident quidem labore debitis esse 54 | eaque suscipit itaque. Labore non est sint eius perferendis. Blanditiis 55 | vitae amet impedit neque rem quidem vel aut voluptatibus. 56 |

57 |

58 | Voluptates neque incidunt cumque dicta voluptatibus, qui cupiditate 59 | tempora, et expedita ipsa sapiente rerum perferendis, fuga commodi! 60 | Adipisci provident quasi eum suscipit ipsa esse praesentium minus? 61 | Corrupti quia nisi doloribus libero eveniet obcaecati aut molestiae rem 62 | placeat error, mollitia dolorum, soluta delectus facere magni quas 63 | repellendus. Aut rerum illum, quasi sapiente mollitia, tempora quae 64 | perferendis velit deleniti possimus magni facilis! Esse obcaecati saepe 65 | ipsum nemo dolor ipsa quo facere commodi illum atque reiciendis odio 66 | aliquam nobis, culpa, at vel nostrum eos ab ea ad adipisci maiores aut 67 | fuga! Mollitia ullam optio eveniet hic, amet deleniti dolorem vero fugiat 68 | fugit voluptatibus quod ut esse eum quidem cumque aut perspiciatis est 69 | aperiam eaque accusantium sit nihil, dolorum earum? Possimus, iure 70 | doloremque? In ipsa voluptatum eius, porro optio tempora quia deleniti 71 | natus officiis accusantium tenetur vel, repellat nulla excepturi 72 | architecto reprehenderit velit culpa quis eos cumque facere. Maxime 73 | consequuntur alias quibusdam aspernatur libero amet, eligendi ex 74 | exercitationem natus possimus. Exercitationem praesentium ratione 75 | recusandae vitae natus vero beatae quia blanditiis distinctio cupiditate 76 | in unde molestias quasi ab aliquam facilis explicabo suscipit nemo aliquid 77 | quibusdam, impedit cum commodi a! Voluptas aperiam similique non a 78 | ratione? In vero eos aliquid optio illum ullam unde voluptatibus eligendi? 79 |

80 |

81 | Quia reprehenderit, voluptatum non error magnam sed, harum, sapiente 82 | placeat quae molestias necessitatibus soluta fuga. Laudantium aliquid 83 | vitae consectetur atque repudiandae, explicabo amet quia dolorem laborum 84 | iure odio vel neque labore tempore illo ea fugit at modi doloribus dolores 85 | blanditiis inventore vero, officiis possimus? Quia, voluptates? Doloremque 86 | incidunt magni et alias laborum suscipit perspiciatis velit iste repellat, 87 | itaque, modi nulla dolores quia, ut assumenda. Mollitia cumque dolore odit 88 | magnam et recusandae ducimus illum aperiam. Optio reprehenderit veritatis 89 | architecto ea corrupti quasi, aperiam explicabo a molestiae? Asperiores ut 90 | sapiente veniam? Perspiciatis nulla ipsum quo tenetur ea! Hic esse 91 | explicabo, iste unde soluta quis deserunt, odio sit expedita nulla, dolor 92 | autem porro? Quos ex a quae enim eligendi dicta labore possimus earum 93 | distinctio. Nulla reprehenderit repellat iusto corrupti possimus suscipit, 94 | numquam non illo dolores ex voluptatibus ut, inventore voluptate omnis 95 | necessitatibus sed velit rerum praesentium cupiditate fuga. Nulla 96 | cupiditate sint odio consectetur suscipit maxime, dignissimos quas fugit 97 | similique minima libero ullam ducimus quisquam, laborum omnis voluptates 98 | pariatur fugiat. Dignissimos modi incidunt beatae quidem, maxime dolore 99 | fugit quibusdam ipsum unde quaerat autem ut distinctio delectus nihil eum. 100 | Consectetur voluptates cupiditate ducimus nobis, impedit, minima dolores 101 | error veritatis qui harum adipisci odio consequuntur ipsum. 102 |

103 |

104 | Ut corporis delectus quia ducimus corrupti explicabo harum placeat 105 | voluptatibus a consectetur modi amet eius, temporibus et quasi, 106 | repudiandae sapiente nesciunt itaque sit? Sunt rerum consectetur corrupti 107 | vel, sed quaerat possimus, sint nihil aliquam ex numquam eaque, odio 108 | voluptas nisi reiciendis voluptates voluptatibus doloremque illo soluta 109 | corporis! Assumenda et molestiae distinctio aperiam! Accusantium 110 | voluptatem architecto, nisi doloribus est, itaque saepe voluptatum 111 | consequatur animi neque inventore laudantium aut perspiciatis aspernatur 112 | maiores exercitationem mollitia, hic obcaecati dignissimos incidunt ad 113 | atque! Quisquam accusamus, molestias laudantium aut provident dolore ut 114 | quae non reprehenderit officia ratione eum ab natus quos nihil vel dolorum 115 | blanditiis incidunt, architecto dolorem odit animi laborum! Ut, voluptate, 116 | aspernatur explicabo iusto dicta ipsum quasi nam possimus placeat ipsa 117 | eligendi eveniet consectetur? Ipsa, iure ullam dicta reprehenderit 118 | veritatis esse rem laborum est odit, sequi fuga eos magni nobis nam. Harum 119 | voluptatibus nemo numquam eveniet ut molestias maxime, commodi mollitia 120 | soluta sed, doloribus unde rem recusandae reprehenderit repudiandae 121 | blanditiis, assumenda voluptates dolore saepe! Veritatis fuga, nostrum at 122 | corrupti reiciendis ratione tempore ut eum fugit nam modi commodi 123 | accusantium consequatur ipsum, quo reprehenderit eligendi nihil assumenda 124 | minima magnam accusamus doloribus? Dolore similique officia dolores. Id at 125 | iste qui eveniet provident voluptatem vero temporibus modi. 126 |

127 |

128 | Illum consectetur ut delectus, dolorem quasi fugiat sunt architecto nihil 129 | minus dolor corporis libero alias eveniet obcaecati vel natus quidem! 130 | Ducimus sed ipsum porro laboriosam at optio fugit expedita saepe earum 131 | tempore cupiditate quasi fuga architecto laudantium eveniet aliquid, 132 | veritatis consequatur consectetur minus maxime perferendis eius. 133 | Cupiditate aperiam itaque tempora similique explicabo nisi, voluptatibus 134 | veritatis, soluta doloribus consectetur ea laborum eligendi recusandae. 135 | Dignissimos commodi vitae sed neque similique officia quas eum beatae? 136 | Quos temporibus earum labore ad placeat incidunt odit debitis quas. Veniam 137 | itaque officia, in iste fuga suscipit ullam. Temporibus, praesentium 138 | voluptatum dolor necessitatibus repellat odit eius. Minus molestiae 139 | ratione iure quisquam magnam tenetur quaerat illum quae neque porro, 140 | officiis soluta alias, nobis fuga accusantium id laborum veniam! Numquam 141 | esse nostrum ut saepe et magnam harum nisi mollitia voluptate debitis, 142 | maxime, aperiam qui odio recusandae totam beatae cum facere incidunt illo 143 | velit? Illum, quasi vitae voluptate, rerum numquam soluta reprehenderit 144 | blanditiis, asperiores consequatur optio nihil incidunt repudiandae labore 145 | temporibus neque. Corporis, ratione eaque. Cumque delectus ullam, aliquam 146 | perspiciatis assumenda consequatur, repellendus nam autem explicabo 147 | ducimus, fuga nobis tenetur. Adipisci, porro officia temporibus 148 | perferendis ad animi consectetur, aspernatur dignissimos distinctio earum 149 | soluta rerum similique? Facilis reprehenderit aspernatur libero impedit 150 | quaerat. 151 |

152 |

153 | Nostrum quia nam, voluptate perspiciatis laboriosam saepe et aliquid 154 | ducimus ratione nulla ex dolore consectetur quaerat distinctio. Expedita 155 | magnam explicabo, aliquid soluta vero odio harum, nihil eveniet id est eum 156 | dignissimos unde corporis. Esse nostrum laboriosam culpa quis atque sunt 157 | molestiae aperiam facilis reprehenderit reiciendis dolorem excepturi 158 | placeat tempora debitis rerum voluptatibus sint, eaque, praesentium 159 | perspiciatis at minima dicta numquam! Cumque itaque natus dignissimos 160 | perferendis! Quo tenetur quae natus facilis illum nulla, at maxime sit 161 | provident dolore ullam magnam beatae. Et aperiam magnam earum nihil 162 | necessitatibus blanditiis ipsa veritatis molestias impedit architecto 163 | iusto ut velit magni, delectus assumenda consectetur optio odio ullam quia 164 | commodi tempore nemo nostrum. Voluptate culpa vitae ex. Sint, qui. 165 | Repellat consectetur assumenda molestias consequatur ducimus nemo, iure 166 | dolorum eius laboriosam rem, repellendus unde incidunt dignissimos facilis 167 | eos minima ut distinctio totam fuga aliquid libero officia. Nulla 168 | necessitatibus accusantium error deserunt! Alias incidunt expedita non, 169 | quam, temporibus id excepturi quod amet delectus obcaecati iusto commodi! 170 | Corrupti maxime, quo repellendus quos iusto nesciunt perferendis quis, 171 | obcaecati quibusdam cum reprehenderit facere ratione ad quae perspiciatis 172 | nisi repudiandae ducimus voluptatem, facilis ex qui consectetur? Corporis, 173 | eaque. Consequatur ducimus cum beatae laudantium delectus ullam aut atque. 174 | Veritatis totam inventore similique necessitatibus! 175 |

176 |

177 | Dolorem quisquam culpa distinctio quos. Incidunt eum nesciunt nam odio. 178 | Ullam aliquam provident ab quis. Ad debitis voluptates fugit animi neque. 179 | Suscipit officiis magnam hic amet culpa explicabo nihil quis numquam, 180 | earum, tempore eius laborum officia, dolorum repellat nobis qui. Nam 181 | dolore nemo sunt magni. Deserunt repellendus, dicta illum saepe fugit 182 | reprehenderit modi doloremque exercitationem esse debitis impedit nulla 183 | numquam sequi neque quam vero ipsa hic quos accusantium. Rerum ratione 184 | labore quas ullam. Fugit error architecto, reiciendis delectus harum id, 185 | nobis minima voluptate reprehenderit, amet eum dolor quas! Exercitationem 186 | necessitatibus nesciunt sed, nostrum omnis aliquid ipsum, repellat iure 187 | et, totam sint atque itaque quas amet facere rerum. Beatae ipsum aliquam 188 | repudiandae quidem quaerat dolorem veritatis officia magni ex aut quisquam 189 | pariatur possimus omnis fuga, voluptas nulla architecto quam, totam 190 | dolorum? Veniam, quaerat explicabo. A provident dolores fuga sint veniam 191 | enim! Saepe consectetur quod ea sunt sapiente maxime quidem quae 192 | voluptatibus nulla libero enim quos doloribus a laboriosam error optio 193 | corrupti, repellat velit nemo alias veritatis reprehenderit quo officia 194 | accusantium? Dolores repellendus dolorem corporis ut adipisci tenetur 195 | nihil accusantium, ducimus consequatur natus quis optio eveniet sed odit 196 | asperiores, cumque velit hic mollitia sequi at esse exercitationem 197 | pariatur. Odit dolorem iure deserunt? 198 |

199 |

200 | Deleniti doloribus maiores commodi, odit, iste incidunt ullam consequuntur 201 | cumque quidem iusto eum laboriosam quos eius minus tempora quas ratione 202 | cupiditate laborum impedit officia itaque reprehenderit quam aliquam. Eius 203 | qui et iusto culpa pariatur animi, odio nemo perspiciatis esse eligendi 204 | aperiam explicabo. Tempora rem nemo labore repellendus ducimus nesciunt 205 | provident tempore mollitia optio, porro eligendi voluptatum distinctio 206 | laboriosam eos inventore, incidunt at non eaque reiciendis aut et 207 | pariatur! Quas, ea magni totam repudiandae harum tempore, consequuntur 208 | illo, vitae cum culpa ipsa numquam quae ex rem corporis. Itaque quo ut 209 | pariatur, veniam quod, dignissimos quasi iste eos minima natus iure eius 210 | maiores asperiores quas similique eum, tenetur laborum perspiciatis ad 211 | soluta quisquam magni reiciendis omnis. Est, molestiae nihil! Minus nam, 212 | voluptas natus culpa esse dolorum quas iusto porro ratione iure impedit 213 | nesciunt ipsa dolores accusantium quidem, quo inventore ipsam laborum 214 | temporibus dolorem est fuga obcaecati! Unde nostrum porro odio in nam 215 | quia! Suscipit reiciendis sunt fugit aliquam! Commodi veniam recusandae 216 | iure iusto eos ab earum, neque est dolorem ea at culpa ratione nobis 217 | distinctio quod molestias blanditiis beatae amet adipisci labore suscipit 218 | enim? Eligendi quam libero quibusdam molestias? Eaque tempore esse quis 219 | sequi molestias consequuntur quas eveniet odit veniam rerum. Laborum. 220 |

221 |

222 | Error eligendi delectus, magnam laboriosam ex quisquam. Officiis, ad fuga? 223 | Dolorem corrupti voluptas voluptatibus magnam maiores consectetur quisquam 224 | minus dolor aperiam ullam corporis, officia in iure ducimus nisi adipisci 225 | obcaecati nobis fugiat perspiciatis ipsum iusto commodi tempora provident 226 | ab? Perspiciatis quae et, quos deleniti ullam sint est cum iusto 227 | voluptates voluptate aperiam nostrum eaque illo, recusandae maiores! 228 | Eligendi ea odit officiis facere ut pariatur perspiciatis sint modi dolore 229 | iusto, ratione distinctio molestiae, repellendus voluptates. Nostrum quasi 230 | necessitatibus dolore id pariatur sunt nam sed. Nostrum at corrupti 231 | itaque, molestiae harum, recusandae adipisci earum debitis deleniti 232 | eligendi necessitatibus mollitia rerum, consectetur aliquid incidunt vel. 233 | Animi temporibus velit quasi, soluta adipisci fugiat! Nulla labore ipsa, 234 | in vitae nostrum libero quis voluptates odit voluptate. Ratione iusto 235 | soluta molestias impedit. Aspernatur iste at nesciunt quam laboriosam 236 | possimus. Dolorum, laboriosam assumenda, tenetur, ipsam non consectetur 237 | quam sint at aliquid impedit quis distinctio? Veniam ad aperiam nam 238 | pariatur neque. Omnis tenetur saepe et dicta nulla ea asperiores illo 239 | accusantium minus. Excepturi est ullam ex eligendi rem, quae itaque, 240 | minima expedita beatae laboriosam cumque rerum accusantium blanditiis 241 | dolore quia, laborum atque dolores soluta sunt. Ex omnis eius vel, quasi 242 | est libero facere ut, accusamus culpa temporibus tenetur dicta! 243 |

244 |

245 | Error neque culpa assumenda rerum eos autem quos iste molestias nisi 246 | sapiente at repudiandae eveniet illum minus debitis possimus magnam 247 | maiores, delectus aut, voluptates eligendi? Tempore explicabo expedita 248 | possimus quasi neque aliquam in tenetur assumenda commodi placeat omnis 249 | ullam ea ad vitae eum illum facere praesentium, cupiditate officia 250 | mollitia aspernatur facilis eaque consectetur. Rerum animi dicta ea at 251 | corporis. Tenetur fugiat incidunt possimus reprehenderit rerum porro 252 | consequatur, explicabo odio iure sed placeat a vero dolores! Officiis 253 | vitae inventore libero odit, quod minus? Officiis assumenda qui, alias 254 | repudiandae ducimus corrupti accusamus aspernatur debitis et maxime modi 255 | nulla laborum tempore! Maiores sequi nesciunt sapiente culpa suscipit, 256 | officia consectetur quae officiis commodi nisi saepe, animi, voluptas 257 | dicta voluptates ut? Exercitationem voluptates earum, dicta et, officiis 258 | eum debitis porro repellendus, deleniti laborum nihil? Expedita excepturi 259 | ipsam nobis repellat amet? Rem ipsum exercitationem laboriosam 260 | voluptatibus asperiores magnam ratione consequuntur sint labore 261 | repellendus deserunt ad nisi recusandae, tempore doloribus ex quidem nam 262 | autem corrupti sequi sapiente quis! Incidunt veniam porro tempore 263 | asperiores ad laudantium non voluptates corrupti ullam, adipisci illum 264 | rerum voluptatem quaerat quis laborum temporibus sunt totam? Enim 265 | explicabo voluptatum ullam id doloremque maxime, iste exercitationem 266 | possimus accusantium, molestias cum placeat dolor sed eum eos? 267 |

268 |

269 | Cum, ad aut. Aliquam eaque deleniti veritatis tenetur omnis! Beatae, 270 | adipisci eveniet culpa numquam praesentium repudiandae quaerat voluptate 271 | sit nisi reprehenderit odio, quas, maxime vel quisquam dolorem ipsam vero 272 | modi dicta? Nobis, voluptatem quod? Velit, ipsum odio aperiam assumenda 273 | quae debitis, incidunt magni ullam reprehenderit et facilis voluptate 274 | accusamus nobis aut voluptates cum iste quis corrupti sunt perferendis. 275 | Quos possimus, a officiis qui, aliquam amet inventore officia, totam 276 | itaque dolore accusamus corrupti animi atque aperiam consectetur nisi cum 277 | blanditiis vel deserunt delectus! Enim, repudiandae asperiores! Soluta 278 | velit nesciunt, quaerat natus ut cum pariatur dolore dicta aut harum 279 | tempora beatae amet tempore asperiores laborum quia temporibus, corporis 280 | sit veritatis tenetur. Ea iusto eveniet reiciendis nulla, quis itaque 281 | adipisci repellat ipsa animi quam maxime sequi sed voluptatum deleniti, 282 | dolores ad soluta harum ab. Praesentium earum eligendi, repellendus quod 283 | rerum placeat molestiae eveniet vitae vel odit ullam expedita commodi 284 | ducimus cumque dolor dolorem nemo amet cupiditate perferendis beatae 285 | aspernatur sunt recusandae! Dolorem corrupti maiores deleniti cumque quam 286 | obcaecati suscipit nemo consequatur hic sapiente, excepturi asperiores 287 | mollitia earum saepe? Impedit mollitia consequatur dignissimos dolor sint 288 | eligendi facilis suscipit delectus quis. Blanditiis sapiente perspiciatis 289 | quaerat iusto ipsum maxime mollitia optio alias voluptate reprehenderit, 290 | magni corporis! 291 |

292 |

293 | Ab placeat eligendi hic eaque vel! Dignissimos laboriosam, praesentium vel 294 | rerum harum nobis aspernatur similique at corrupti officia ratione ipsam 295 | fugiat, facere ut hic sint inventore eius iusto ex impedit ducimus esse 296 | repellat optio vero? Non, quod voluptas! Excepturi numquam dolores ullam 297 | perspiciatis placeat illum nostrum? Adipisci eos, ipsum cum unde 298 | reprehenderit sed deserunt reiciendis assumenda facilis modi incidunt! 299 | Magnam, numquam est! Ex ducimus quasi explicabo in, consectetur cumque 300 | officia nulla voluptas aliquam unde quia illo fuga a possimus impedit quis 301 | ad assumenda quae maxime culpa at. Deserunt optio voluptatum culpa at 302 | voluptatibus recusandae eligendi, pariatur beatae suscipit nesciunt, 303 | molestiae laboriosam impedit, quod dolor debitis. Dignissimos unde 304 | molestiae consequatur, quae maiores, aperiam ducimus tempore dolor dolores 305 | corrupti aut perferendis distinctio velit doloremque cumque magnam fugit 306 | quisquam? Suscipit dolore mollitia perferendis ducimus earum vitae 307 | perspiciatis ullam ut dignissimos eligendi tenetur ex provident molestias 308 | pariatur dolorum exercitationem voluptatum aperiam accusantium accusamus 309 | blanditiis, aliquam similique sunt. Error vero expedita aliquam rerum 310 | quidem necessitatibus fugit optio fugiat minima eos obcaecati quibusdam 311 | excepturi illo, odit commodi explicabo porro. Quibusdam tempora voluptatum 312 | placeat, fugit atque id magni veniam harum libero ratione iusto odit 313 | pariatur quod ad eum! Quae rem aperiam perferendis. Hic nisi magnam ipsum 314 | fuga. 315 |

316 |

317 | Esse magni nam at eum est officia minus nihil impedit, modi laborum porro 318 | magnam autem expedita? Quas ratione obcaecati adipisci. Eveniet 319 | perferendis, nostrum fugiat repudiandae voluptatum nam iure natus quas 320 | asperiores maxime cupiditate velit sed consequatur perspiciatis, at fuga 321 | quia sint aliquam aut mollitia delectus aliquid alias tempore. Iste 322 | eligendi in nisi doloremque voluptate repellat asperiores, recusandae 323 | ratione! Blanditiis voluptatem ipsum perspiciatis odio quis provident, 324 | similique ea sint minima fuga illum aut vero magnam, nam, ex aliquid omnis 325 | inventore iusto nihil! Labore odit commodi esse. Laudantium earum commodi 326 | officiis maiores esse quod ex eum rem quis ea fugiat voluptatibus alias 327 | dolor labore, nulla sunt omnis non molestias. Recusandae accusantium nulla 328 | voluptatibus aspernatur facilis totam quidem vitae magni voluptate odit 329 | molestias dolorum cupiditate nesciunt tempore labore explicabo, suscipit 330 | incidunt ad error aliquam illum aperiam debitis hic fugit! Provident illum 331 | architecto animi. Earum quos officiis inventore fugit neque dolor, officia 332 | consequuntur nemo est blanditiis provident voluptate, sed explicabo amet 333 | dicta nulla eveniet! Debitis, repellendus? Impedit neque odit debitis 334 | repellendus cum consectetur exercitationem voluptates deserunt commodi 335 | labore perspiciatis, magnam qui fugiat itaque omnis voluptatibus quisquam 336 | error inventore. Consectetur dicta vero officia quam magni aperiam id 337 | placeat assumenda nesciunt voluptatibus, doloremque suscipit sint 338 | possimus? 339 |

340 |

341 | Error excepturi recusandae ipsa voluptatem a quam possimus officia sequi 342 | sunt nulla laboriosam obcaecati, officiis quod quo? Excepturi eligendi 343 | quae numquam? Sit accusamus vel, temporibus atque rerum, iure nihil 344 | aliquid aliquam ut molestias esse amet voluptatum, magni rem quae labore 345 | doloribus! Sed voluptatum non accusantium aliquam sapiente itaque 346 | excepturi nihil nobis. Totam rem ex nostrum magnam obcaecati, quam, quas 347 | commodi consequatur soluta fugit incidunt! At ducimus autem ut quae ullam 348 | obcaecati velit qui vel! Modi harum, corrupti autem aliquid consectetur, 349 | deserunt distinctio et ab voluptas soluta cupiditate omnis fugiat 350 | blanditiis accusamus, sequi quis unde quae eius impedit ut tempora amet 351 | odio esse maxime. Non quisquam minima nisi, exercitationem sequi 352 | repudiandae quam recusandae voluptate enim! Voluptatibus quasi 353 | consequuntur repudiandae, officia totam aliquid nesciunt perspiciatis 354 | earum dolorem blanditiis assumenda adipisci incidunt est, excepturi at 355 | iusto ullam facere deleniti architecto. In hic eligendi tempore expedita 356 | quis aperiam. Eum molestias exercitationem earum facere sunt voluptatibus, 357 | rerum tempora consequatur atque similique libero voluptates quisquam. 358 | Tempore nobis commodi amet velit nisi ea quasi magnam voluptatem laborum 359 | sunt facilis, molestiae nesciunt aperiam a rem est illum sequi pariatur 360 | saepe at eius culpa. Veritatis temporibus soluta inventore alias voluptate 361 | magnam quod, repellat perferendis maiores porro ad eos optio! 362 |

363 | 364 | 365 | -------------------------------------------------------------------------------- /style.css: -------------------------------------------------------------------------------- 1 | * { 2 | box-sizing: border-box; 3 | } 4 | 5 | html { 6 | font-size: 20px; 7 | } 8 | 9 | body { 10 | margin: 0; 11 | font-family: Arial, Helvetica, sans-serif; 12 | } 13 | 14 | /* Sélecteur : nom de la balise HTML */ 15 | h1 { 16 | /* Règle CSS me permettant de définir la couleur du texte */ 17 | color: white; 18 | /* Couleur Arrière-plan */ 19 | background-color: #444; 20 | font-size: 2.5em; 21 | margin: 3rem; 22 | } 23 | 24 | p { 25 | color: #6b8aaa; 26 | } 27 | 28 | .important { 29 | font-weight: bold; 30 | } 31 | 32 | .red { 33 | color: red; 34 | } 35 | 36 | #contact { 37 | background-color: darkred; 38 | color: #ddd; 39 | } 40 | --------------------------------------------------------------------------------