_______________________________________________________________________________________________________________________________________
Ce document spécialise ce document catégorisant des BPs de codage générales,
et en reprend le plan pour ses grandes sections sauf la section 0
(les sous-sous-sections sont différentes ; cf. ce document plus général pour des explications sur le plan).
Écrivez du code CSS générique et organisé (et donc évitez toute forme de redondance). E.g. : On peut toutefois noter que la notion selon laquelle utiliser les éléments
"strong" et "em" serait mieux que d'utiliser les éléments "b" et "i",
parce que les deux derniers n'ont pas de sens sémantique,
est idéologique plutôt que concrète. En effet, E.g. : Par exemple, pour faciliter la compréhension et les recherches manuelles
d'informations dans une feuille de style, il est utile Dans ce fichier pour CSS, contrairement à celui pour HTML,
cette section et sous-section ne sont pour l'instant pas utiles : l'instanciation (pour les objets
abstraits informationnels en CSS) des BPs générales
sont simples et cette instanciation est déjà illustrée dans la précédente section.
Cette présente section est donc essentiellement conservée pour des raisons de structure et de symétrie par
rapport aux autres fichiers (le général et
celui pour HTML).
L'entête d'un fichier CSS contient à peu près les mêmes informations minimum que
l'entête d'un fichier HTML.
Un (entête d'un) fichier modèle pour CSS est ici donnée.
Il existe différentes conventions de nommage (et modélisation) pour CSS, e.g.
BEM [Block__Element--Modifier],
SMACSS [Scalable and Modular Architecture for CSS],
ACSS [Atomic CSS] et
OOCSS [Object-oriented CSS].
Utilisez celle que vous souhaitez mais de manière systématique.
Comme illustré en section 3.1.2, les noms des éléments HTML peuvent être mis
en majuscules pour rendre le code plus clair.
Les navigateurs modernes supportent 140 noms de couleurs différentes
(voir aussi cette liste). Section vide conservée pour des raisons de structure et de symétrie par
rapport aux autres fichiers (le général et
celui pour HTML).
Le validateur du W3C pour la syntaxe CSS est à utiliser sur tout fichier CSS dans le cours
"Projet HTML".
L'entête de ce modèle pour des fichiers CSS
comprend une ligne de 89 caractères contenant essentiellement des '='.
Il suffit donc d'ajuster la largeur de fenêtre de l'éditeur de texte par rapport à cette ligne de
commentaire pour que l'éditeur fasse apparaître un "passage à la ligne"
[soft line wrapping]
(ou ne montre plus l'entièreté d'une ligne ; cela s'accompagne souvent de l'apparition d'un ascenseur
horizontal), à chaque fois que la limite n'est pas respectée.
Il vaut mieux éviter de sauter des lignes à l'intérieur d'un bloc élémentaire, et remplir
chaque ligne, non seulement pour avoir les avantages d'un style compact (voir
le début de la section 3.1 du fichier général)
mais aussi pour bien voir les blocs (lorsqu'il n'y a pas d'autres marques pour les délimiter)
et pouvoir présenter les informations d'une manière compacte
– voire même tabulaire – qui facilite la comparaison de ces informations
et ainsi leur compréhension globale (→ compréhension de leurs inter-relations, interactions, etc.).
Ceci est illustré par chacune des deux sous-sections suivantes.
La première illustre l'avantage d'une présentation compacte et tabulaire par rapport à une
présentation non compacte. Comme il est toutefois rare de pouvoir utiliser une présentation tabulaire,
la seconde sous-section montre, pour un cas général, l'avantage d'une présentation compacte
par rapport à une présentation non compacte.
Voici ci-dessous, une illustration de cela pour des règles CSS concernant des titres de sections puis
des éléments HTML relatifs à du code (ou autre texte à présenter dans une fonte "monospace").
Concernant les titres de section, la classe "smallTopMargin" est utilisée pour avoir moins d'espaces
entre les sections (→ pour des fichiers de taille moyenne, comme dans ce fichier),
et la classe "first" est utilisée pour avoir encore moins d'espace entre un titre d'une section et
un titre d'une sous-section qui le suit immédiatement (donc un titre de 1ère sous-section).
Dans cette présentation tabulaire, ce sont d'abord les noms de classe qui sont alignés (comme dans
une colonne d'une table ; l'alignement des noms d'attribut à l'intérieur de la colonne s'ensuit).
Voici ci-dessous une version non compacte des règles précédentes.
Au moins dans ce cours, cette présentation non concise est à éviter
pour les saisons suivantes.
Présentation compacte (→ modèle à suivre). Notez que Présentation non compacte (→ anti-modèle).
0. Exemples de BPs générales (pour CSS) relatives à certains critères de qualité
0.1. Exemples de BPs générales relatives au critère de complétude [completeness]
0.1.1. Plus de BPs (non conflictuelles) sont suivies, le mieux
0.1.2. Restreindre aussi peu que possible
Pour ce cas précis, de nombreuses entreprises ont choisi la convention d'utiliser un ID
plutôt qu'une classe. La documentation du W3C ne préconise rien à ce sujet, comme elle ne
préconise rien sur comment choisir entre différentes
méthodologies ou conventions de règles de nommage (cf. section 2.1.1).
Pour le cours "Projet HTML", afin de simplifier, le choix à suivre est d'utiliser une
classe pour ce cas aussi (mais ce cas ne devrait pas arriver puisque chaque étudiant ne
soumet qu'un seul document HTML).
Le titre de la section 2.4.1.4 dans le document catégorisant des BPs de codage générales
mentionne, à titre d'exemple, l'utilisation (dans un éditeur de texte) d'une vue pour du
code HTML et d'une vue pour du code CSS. Lorsque les règles CSS "liées à des classes" sont
dans l'entête d'un fichier HTML plutôt que dans un fichier séparé, et que seul ce fichier est
édité, les deux vues montrent des parties différentes de ce fichier.
Mais, bien-sûr, en l'absence d'un mode adaptatif,
mieux vaut plusieurs feuilles de style (1 par "type de public" considéré -> mode réactif)
qu'aucun de ces deux modes.
Donc, pour le cours "Projet HTML", il faut utiliser au moins l'un de ces deux modes et, autant
que possible, tendre vers un mode adaptatif, progressivement ou non ; l'approche progressive
est souvent appelée "adaptive responsive". Attention, en anglais,
"reactive" désigne parfois aussi une combinaison de "adaptive" et "responsive".
0.1.3. Représenter de manière aussi complète, précise et structurée que possible
1. BPs relatives aux objets abstraits "informationnels"
(i.e., tous les objets abstraits sauf ceux pour des présentations)
2. BPs relatives aux instruments de description
2.1. BPs à propos d'identifiants (d'objets de codage)
2.1.1. Utiliser des règles de nommage compatibles avec les règles générales données mais, CSS n'étant
pas sensible à la casse, les noms des éléments HTML peuvent être mis en majuscules
2.1.2. Référez aux couleurs via leurs noms plutôt que par des valeurs numériques
Vous avez donc la possibilité d'utiliser des noms de couleurs plutôt que des
valeurs numériques, e.g., "LightSalmon" au lieu de "#FFA07A" ou "RGB(255,160,122)".
Utilisez cette possibilité pour éviter au lecteur de votre code
de se demander à quelles couleurs vous référez.
Si ces 140 couleurs ne suffisent pas, il est aussi possible
2.2. BPs à propos de l'utilisation d'un langage naturel
2.3. BPs à propos de l'utilisation d'un langage de codage
2.3.1. Utiliser au moins un validateur pour ce langage, avec ses options les plus strictes
3. BPs relatives aux aspects concrets ou de présentation
(de code ou de résultats de son exécution)
3.1. BPs pour des éléments concrets concis/compacts
3.1.1. Limiter le nombre de caractères par ligne de code (→ pour vous, 89)
3.1.2. Pas de lignes vides sauf pour séparer des blocs élémentaires ;
mettre plusieurs instructions par ligne lorsqu'il y a suffisamment de place pour cela
3.1.2.1. Présentation tabulaire versus présentation non compacte
H1{ font-size:19pt; counter-reset:h2n; margin-top:30%}
H1.first{ margin-top:6% }
H1.smallTopMargin{ margin-top:20%} H1.smallTopMargin.first{ margin-top:5% }
H1.title{font-size:17pt; margin-left:7%; margin-top: 0%}
H2{ font-size:16.5pt; counter-reset:h3n; margin-top:20%}
H2.first{ margin-top:5% }
H2.smallTopMargin{ margin-top:12%} H2.smallTopMargin.first{ margin-top:4% }
H3{ font-size:14.5pt; counter-reset:h4n; margin-top:10%}
H3.first{ margin-top:4% }
H3.smallTopMargin{ margin-top: 8%} H3.smallTopMargin.first{ margin-top:3% }
H4{ font-size:12.5pt; counter-reset:h5n; margin-top: 6%} H4.first{ margin-top:3% }
H4.smallTopMargin{ margin-top: 5%} H4.smallTopMargin.first{ margin-top:2% }
H5{ font-size:11pt; counter-reset:h6n; margin-top: 3%} H5.first{ margin-top:2% }
H5.smallTopMargin{ margin-top: 3%} H5.smallTopMargin.first{ margin-top:1% }
H5.smallTopMargin{ margin-bottom:0%}
H1,H2,H3,H4,H5,H6{ white-space: pre }
CODE { font-family:monospace; font-size:97% }
PRE, XMP{ margin-top:0%; font-size:97% }
.pre-ed, pre{ white-space:pre } .nowrap { white-space:nowrap }
H1
{ font-size:19pt;
counter-reset:h2n;
margin-top:30%;
}
H1.first
{ margin-top:6%;
}
H1.smallTopMargin
{ margin-top:20%;
}
H1.smallTopMargin.first
{ margin-top:5%;
}
H1.title
{ font-size:17pt;
margin-left:7%;
margin-top: 0%;
}
H2
{ font-size:16.5pt;
counter-reset:h3n;
margin-top:20%;
}
H2.first
{ margin-top:5%; }
H2.smallTopMargin
{ margin-top:12%; }
H2.smallTopMargin.first
{ margin-top:4%; }
H3
{ font-size:14.5pt;
counter-reset:h4n;
margin-top:10%;
}
H3.first
{ margin-top:4%;
}
H3.smallTopMargin
{ margin-top: 8%;
}
H3.smallTopMargin.first
{ margin-top:3%;
}
H4
{ font-size:12.5pt;
counter-reset:h5n;
margin-top: 6%;
}
H4.first
{ margin-top:3%;
}
H4.smallTopMargin
{ margin-top: 5%;
}
H4.smallTopMargin.first
{ margin-top:2%;
}
H5
{ font-size:11pt;
counter-reset:h6n;
margin-top: 3%;
}
H5.first
{ margin-top:2%;
}
H5.smallTopMargin
{ margin-top: 3%;
}
H5.smallTopMargin.first
{ margin-top:1%;
}
H5.smallTopMargin
{ margin-bottom:0%;
}
H1, H2, H3, H4, H5, H6
{ white-space: pre;
}
CODE
{ font-family:monospace;
font-size:97%;
}
PRE, XMP
{ margin-top:0%;
font-size:97%;
}
.pre-ed, pre
{ white-space:pre
}
.nowrap
{ white-space:nowrap
}
3.1.2.2. Cas général pour une présentation compacte versus non compacte
H1
{ attributeName1:value1; attributeName2:value2; ... ; attributeName5:value5;
attributeName6:value6; attributeName7:value7; ... ; attributeName10:value10
}
H2
{ attributeName1:value1; attributeName7:value7; attributeName5:value5;
attributeName8:value8
}
H1
{ attributeName1: value1;
...
attributeName10: value10;
}
H2
{ attributeName1: value1;
attributeName5: value5;
attributeName7: value7;
attributeName8: value8;
}