| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
| prog:css [2024/10/04 16:58] – [Position] : Ajout de "display: inline-block" root | prog:css [2024/12/23 11:33] (Version actuelle) – [Position] : précision sur "display: flex" root |
|---|
| ===Id=== | ===Id=== |
| |
| ''#id'' : identifiant via ''id='' (identifiant unique)comme ''class'' sauf que les ''id'' sont uniques. Préfixer par un dièse. | ''#id'' : identifiant via ''id='' (identifiant unique) comme ''class'' sauf que les ''id'' sont uniques. Préfixer par un dièse. |
| |
| ===Pseudo-classe=== | ===Pseudo-classe=== |
| |
| '':only-child'' | '':only-child'' |
| | |
| | '':first-of-type'' : seulement le premier élément. |
| |
| * Cas dynamique | * Cas dynamique |
| ===Pseudo-élément=== | ===Pseudo-élément=== |
| |
| Désigne une partie d'un élément. Préfixé par un '':''. Les navigateurs tolèrent aussi un seul '':''. | Désigne une partie d'un élément. Préfixé par un ''::''. Les navigateurs tolèrent aussi un seul '':''. |
| |
| ''::first-line'' : Première ligne (d'un paragraphe par exemple) dans l'affichage graphique. Les mots . | ''::first-line'' : Première ligne (d'un paragraphe par exemple) dans l'affichage graphique. Les mots . |
| * ''unset'' : rend la valeur par défaut et annule également la valeur par défaut de la feuille de style. | * ''unset'' : rend la valeur par défaut et annule également la valeur par défaut de la feuille de style. |
| |
| =====Mise en page===== | =====Le modèle de boite===== |
| | |
| ====Le modèle de boite==== | |
| |
| Une boite / box stocke des données dans un rectangle et est composée d'une marge, bordure et padding. | Une boite / box stocke des données dans un rectangle et est composée d'une marge, bordure et padding. |
| {{:prog:css:box-model.png?544|}} | {{:prog:css:box-model.png?544|}} |
| |
| ===Position=== | ====Position==== |
| |
| Les box peuvent être soit : | Les box peuvent être soit : |
| |
| * comportement par défaut. | * comportement par défaut. |
| * ''display: flex''. Ils ont donc une ligne dédiée mais tant que les boites se suivent, elles sont les unes a côté des autres. | * ''display: flex''. Ils ont donc une ligne dédiée mais tant que les boites se suivent, elles sont les unes a côté des autres. Elles peuvent être, soit horizontales, soit verticales en fonction de la valeur de ''flex-direction'' (''row'' (par défaut) / ''column'' / ''row-reverse'' / ''column-reverse''). |
| * ''display: inline-flex''. Les boites ne sont pas dans une ligne dédiée et tant que les boites se suivent, elles sont les unes a côté des autres. Contrairement à ''inline'', les blocs n'ont pas une largeur de 100% mais s'adaptent au contenu. | * ''display: inline-flex''. Les boites ne sont pas dans une ligne dédiée et tant que les boites se suivent, elles sont les unes a côté des autres. Contrairement à ''inline'', les blocs n'ont pas une largeur de 100% mais s'adaptent au contenu. |
| * "entre deux" (''display: inline-block''). Les boites ne sont pas sur une ligne dédiée mais ''height'' et ''width'' sont respectés. | * "entre deux" (''display: inline-block''). Les boites ne sont pas sur une ligne dédiée mais ''height'' et ''width'' sont respectés. |
| </HTML> | | </HTML> | |
| |
| ===Dimension=== | ====Dimension==== |
| |
| * Cas général | * Cas général |
| </code> | </code> |
| |
| | * Propriétés logiques |
| |
| | Il est possible de choisir l'orientation du texte (horizontal ou vertical) avec la propriété ''writing-mode''. Dans ce cas, la propriété ''width'' peut vouloir être remplacée par la valeur de ''height''. |
| | |
| | {{:prog:css:horizontal-tb.png?634|}} {{:prog:css:vertical-tb.png?406|}} |
| | |
| | Il faut alors remplacer ''width'' par ''inline-size'' et ''height'' par ''block-size''. |
| | |
| | Il est aussi possible de faire la même chose avec ''margin'', ''border'' et ''padding''. |
| | |
| | <code css> |
| | margin-block-start: 20px; |
| | padding-inline-end: 2em; |
| | padding-block-start: 2px; |
| | border-block-start: 5px solid pink; |
| | border-inline-end: 10px dotted rebeccapurple; |
| | border-block-end: 1em double orange; |
| | border-inline-start: 1px solid black; |
| | </code> |
| | |
| | * Scrollbar / ascenseur |
| | |
| | Si la dimension d'une boite est bloquée et qu'il y a plus de texte que la boite peut contenir, le texte va déborder. Le contrôle du débordement se fait via ''overflow'' / ''overflow-x'' / ''overflow-y'' (''visible'' : valeur par défaut, le débordement sera visible, ''hidden'' : tout ce qui déborde de la boite sera masqué (déconseillé), ''scroll'' : une scrollbar va apparaitre si besoin.) |
| | |
| | =====Propriétés===== |
| | |
| | ====background==== |
| | |
| | <code css> |
| | background-color: #567895; |
| | background-color: black; |
| | background-color: rgb(255 255 255 / 50%); |
| | </code> |
| | |
| | Il est aussi possible de générer des gradients de couleur avec ''linear-gradient'' / ''radial-gradient'' / ''conic-gradient''. |
| | |
| | La couleur de fond peut se combiner avec ''background-image: url(star.png);'' si l'image a une composante de transparence. |
| | |
| | Par défaut, une image n'est pas redimensionnée et est répétée pour remplir l'élément. |
| | |
| | Si on veut contrôler la répétition, on peut utiliser ''background-repeat'' avec : |
| | |
| | * ''no-repeat'', ''repeat-x'', ''repeat-y'', ''repeat''. |
| | * ''space'' : se répète et ajoute du vide entre les images plutôt que de mettre des images tronquées à droite et en bas, |
| | * ''round'' : se répète et étire les images pour remplir le vide. |
| | |
| | <code css> |
| | background-size: 100%; |
| | background-size: cover; |
| | background-size: contains; |
| | </code> |
| | |
| | ''cover'' : l'image est agrandie pour couvrir toute la surface et peut être rognée. |
| | |
| | ''contains'' : l'image est agrandie pour couvrir 100% en hauteur ou en largeur. Elle est entièrement affichée et des bandes transparentes sont insérées pour conserver le ratio. |
| | |
| | Si des bandes transparentes sont affichées, il est possible d'indiquer où elles seront via la propriété ''background-position: center center;''. |
| | |
| | Enfin, il est possible d'avoir plusieurs images. Dans ce cas, il suffit de séparer les valeurs par des virgules : |
| | |
| | <code css> |
| | background-image: url(image1.png), url(image2.png); |
| | background-repeat: no-repeat, repeat-x; |
| | background-position: 10px 20px, top right; |
| | </code> |
| | |
| | ''background-attachment'' permet de gérer le déplacement de l'image en fonction de la position de l'ascenseur. |
| | |
| | * ''scroll'' : se déplace en fonction de l'ascenseur principal de la page. |
| | * ''fixed'' : ne se déplace pas. |
| | * ''local'' : se déplace en fonction de l'ascenseur principal de la page et de l'ascenseur local de l'élément. |
| | |
| | ====border==== |
| | |
| | Il y a 4 sous propriétés (''top'', ''bottom'', ''left'', ''right'') et 3 autres sous propriétés (''style'', ''width'', ''color''). |
| | |
| | <code css> |
| | border-top-width: 1px; |
| | border-top-style: solid; |
| | border-top-color: black; |
| | </code> |