« Le langage CSS/Les sélecteurs » : différence entre les versions

Contenu supprimé Contenu ajouté
DannyS712 (discussion | contributions)
m <source> -> <syntaxhighlight> (phab:T237267)
Ligne 65 :
N'importe quel élément HTML de la page peut utiliser cette classe :
 
<sourcesyntaxhighlight lang="html">
<p class="nom_de_classe">...</p>
<ul class="nom_de_classe">
Ligne 71 :
<li>...</li>
</ul>
</sourcesyntaxhighlight>
 
Ce qui n'empêche pas par la suite de définir des règles communes à tous ces éléments et d'autres spécifiques à certains d'entre eux :
Ligne 138 :
Ce sélecteur désigne tous les éléments ''h1'' petits-enfants d'éléments d'identifiant ''wikipedia'', ou situés plus loin dans la hiérarchie du document (par exemple <code>#wikipedia > #contenu > .introduction > h1</code>). Ainsi dans le code HTML suivant :
 
<sourcesyntaxhighlight lang="html">
<div id="wikipedia">
<h1> Nom du site </h1>
Ligne 150 :
</div>
</div>
</syntaxhighlight>
</source>
 
les deux titres ''h1'' seraient affectés par la première règle mais seul le deuxième titre de texte « Titre 1 » serait affecté par la seconde.
Ligne 172 :
applique un style à l'élément ''h2'' qui suivrait immédiatement un élément ''h1''. Ainsi dans le code HTML suivant :
 
<sourcesyntaxhighlight lang="html">
<div class="wikipedia">
<h1> Titre 1 </h1>
Ligne 182 :
<p>Paragraphe...</p>
</div>
</syntaxhighlight>
</source>
 
seul le titre de texte « Titre 1.1 » serait affecté par les règles de style.
Ligne 273 :
Prenons l'exemple d'un menu constitué de plusieurs listes de liens. On peut coder un tel menu en HTML de cette façon :
 
<sourcesyntaxhighlight lang="html">
<!-- exemple surchargé en classes -->
<h1 class="menu"> Navigation </h1>
Ligne 286 :
...
</ul>
</syntaxhighlight>
</source>
 
Noter qu'on aurait aussi pu utiliser un nom de classe différent par élément différent (par ex. ''menu_title'' pour les titres ''h1''). En fait il n'est pas nécessaire d'ajouter une classe à chaque élément fonctionnel du menu (le titre, la liste, l'entrée, le lien) sous prétexte que ce sont des éléments HTML différents. Ainsi il suffit de placer le menu dans un élément parent de type ''div'' et d'identifiant ''menu'' :
 
<sourcesyntaxhighlight lang="html">
<!-- solution habituellement rencontrée -->
<div id="menu">
Ligne 305 :
</ul>
</div>
</syntaxhighlight>
</source>
 
D'un point de vue de la structure de la page web, il est en plus tout-à-fait logique de placer le menu dans un élément conteneur pour le séparer du reste de la page. Ceci facilite son placement par la suite. On peut alors accéder à chaque élément fonctionnel en CSS de cette manière :
Ligne 356 :
Prenons comme exemple la table des matières (TDM) regroupant les titres de la page web. L'adaptation classique en HTML est la suivante :
 
<sourcesyntaxhighlight lang="html">
<!-- table des matières -->
<div id="tdm">
Ligne 371 :
</ol>
</div>
</syntaxhighlight>
</source>
 
Ici les liens pointant vers les titres des sections sont placés dans des listes de liens imbriquées. Maintenant nous souhaiterions que cette table des matières soit placée soit dans un cadre flottant à droite ou à gauche du texte, soit à gauche en occupant toute la largeur de la page (positionnement par défaut), selon l'humeur de l'administrateur (ou un paramètre utilisateur ?). Le plus simple est d'ajouter simplement des classes ''float'' et ''left'' ou ''right'' à l'élément conteneur dans les deux premiers cas, par exemple :
Ligne 406 :
== Imbrication ==
L'esperluette est l'opérateur d'imbrication :
<sourcesyntaxhighlight lang=css>
.classe1 {
&.classe2 { ... }
}
</syntaxhighlight>
</source>
 
Autre exemple :
<sourcesyntaxhighlight lang=css>
.classe1 {
&--myDataAttribute { ... }
}
</syntaxhighlight>
</source>